From 196ecf17a1ebe3534145d82299263cb4d2b065f4 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Mon, 8 Dec 2014 16:56:27 +0100 Subject: [PATCH 01/13] [FIX] website: auto-increment when new page; fix link (key) search page --- addons/website/models/ir_http.py | 12 +++++++----- addons/website/models/website.py | 33 +++++++++++++++++--------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index ac92036cfa4..6f7c650bdbd 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -293,15 +293,17 @@ class PageConverter(werkzeug.routing.PathConverter): """ Only point of this converter is to bundle pages enumeration logic """ def generate(self, cr, uid, query=None, args={}, context=None): View = request.registry['ir.ui.view'] - views = View.search_read(cr, uid, [['page', '=', True]], - fields=['xml_id','priority','write_date'], order='name', context=context) + domain = [('page', '=', True)] + query = query and query.startswith('website.') and query[8:] or query + if query: + domain += [('key', 'like', query)] + + views = View.search_read(cr, uid, domain, fields=['key', 'priority', 'write_date'], order='name', context=context) for view in views: - xid = view['xml_id'].startswith('website.') and view['xml_id'][8:] or view['xml_id'] + xid = view['key'].startswith('website.') and view['key'][8:] or view['key'] # the 'page/homepage' url is indexed as '/', avoid aving the same page referenced twice # when we will have an url mapping mechanism, replace this by a rule: page/homepage --> / if xid=='homepage': continue - if query and query.lower() not in xid.lower(): - continue record = {'loc': xid} if view['priority'] <> 16: record['__priority'] = min(round(view['priority'] / 32.0,1), 1) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 2de6177eb77..253c6b71170 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -202,21 +202,24 @@ class website(osv.osv): page_name = slugify(name, max_length=50) page_xmlid = "%s.%s" % (template_module, page_name) - try: - # existing page - imd.get_object_reference(cr, uid, template_module, page_name) - except ValueError: - # new page - _, template_id = imd.get_object_reference(cr, uid, template_module, template_name) - website_id = context.get('website_id') - key = template_module+'.'+page_name - page_id = view.copy(cr, uid, template_id, {'website_id': website_id, 'key': key}, context=context) - page = view.browse(cr, uid, page_id, context=context) - page.write({ - 'arch': page.arch.replace(template, page_xmlid), - 'name': page_name, - 'page': ispage, - }) + # find a free xmlid + inc = 0 + while view.search(cr, openerp.SUPERUSER_ID, [('key', '=', page_xmlid)], context=dict(context or {}, active_test=False)): + inc += 1 + page_xmlid = "%s.%s" % (template_module, page_name + (inc and "-%s" % inc or "")) + page_name += (inc and "-%s" % inc or "") + + # new page + _, template_id = imd.get_object_reference(cr, uid, template_module, template_name) + website_id = context.get('website_id') + key = template_module+'.'+page_name + page_id = view.copy(cr, uid, template_id, {'website_id': website_id, 'key': key}, context=context) + page = view.browse(cr, uid, page_id, context=context) + page.write({ + 'arch': page.arch.replace(template, page_xmlid), + 'name': page_name, + 'page': ispage, + }) return page_xmlid def page_for_name(self, cr, uid, ids, name, module='website', context=None): From f9a7ed6b9406d657fda33ec55c4e237576b77a42 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 10 Dec 2014 15:57:01 +0100 Subject: [PATCH 02/13] [IMP] website: add openerp.define.js to load summernote with 'define' --- .../website/static/src/js/openerp.define.js | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 addons/website/static/src/js/openerp.define.js diff --git a/addons/website/static/src/js/openerp.define.js b/addons/website/static/src/js/openerp.define.js new file mode 100644 index 00000000000..cef8d90cafa --- /dev/null +++ b/addons/website/static/src/js/openerp.define.js @@ -0,0 +1,101 @@ +(function () { + 'use strict'; + +var containsDefine = typeof(define) !== "undefined" ? define : undefined; + +openerp.define = function (parse) { + var scripts = openerp.define.scripts; + + return function (name, list, callback) { + + var def = $.Deferred(); + def.openerpDefine = true; + + if (!callback) { + callback = list; + list = null; + } + if (!list) { + list = name; + if (openerp.define.next) { + name = openerp.define.next; + openerp.define.next = null; + } + } + + if (list instanceof Array) { + var defs = []; + var args = []; + _.each(list, function (js, index) { + var path = parse(js); + + if (scripts[path] === undefined) { + + scripts[path] = $.Deferred(); + scripts[path].openerpDefine = true; + + $.ajax({ 'url': path, 'dataType': 'html', 'async': false }) + .then(function (data) { + var code = new Function("return "+data)(); + if (code.openerpDefine) { + code.then(function (code) { + scripts[path].resolve(code); + scripts[path] = code; + }); + } else { + scripts[path].resolve(code); + scripts[path] = code; + } + }); + + } + + if (scripts[path] && scripts[path].openerpDefine) { + scripts[path].then(function (code) { + args[index] = code; + }); + defs.push(scripts[path]); + } else { + args[index] = scripts[path] = scripts[path] || null; + } + }); + + $.when.apply($, defs).then(function () { + var result = callback.apply(window, args); + if (name) { + scripts[name] = scripts[parse(name)] = result; + } + def.resolve(result); + }); + + } else { + + def = scripts[name] = scripts[parse(name)] = scripts[name] || callback() || null; + + } + + return def; + + }; +}; + +openerp.define.scripts = { + 'jquery': jQuery +}; + + +openerp.define.active = function () { + window.define = openerp.define(function (id) { + + if (id.slice(0,10) === 'summernote') { + return '/website/static/lib/summernote/src/js' + id.slice(10,Infinity) + '.js'; + } + return id; + }); +}; +openerp.define.desactive = function () { + window.define = containsDefine; +}; + + +})(); \ No newline at end of file From 1596e45e8174cd736d4f7c78f85ec76a8e34888d Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 10 Dec 2014 15:59:48 +0100 Subject: [PATCH 03/13] [IMP] website: add summernote lib --- .../lib/summernote/src/js/EventHandler.js | 706 ++++++++++++++ .../static/lib/summernote/src/js/Renderer.js | 911 ++++++++++++++++++ .../static/lib/summernote/src/js/app.js | 42 + .../lib/summernote/src/js/core/agent.js | 97 ++ .../lib/summernote/src/js/core/async.js | 53 + .../static/lib/summernote/src/js/core/dom.js | 864 +++++++++++++++++ .../static/lib/summernote/src/js/core/func.js | 112 +++ .../static/lib/summernote/src/js/core/key.js | 49 + .../static/lib/summernote/src/js/core/list.js | 180 ++++ .../lib/summernote/src/js/core/range.js | 629 ++++++++++++ .../lib/summernote/src/js/editing/Bullet.js | 201 ++++ .../lib/summernote/src/js/editing/Editor.js | 457 +++++++++ .../lib/summernote/src/js/editing/History.js | 60 ++ .../lib/summernote/src/js/editing/Style.js | 93 ++ .../lib/summernote/src/js/editing/Table.js | 50 + .../lib/summernote/src/js/editing/Typing.js | 65 ++ .../static/lib/summernote/src/js/intro.js | 21 + .../lib/summernote/src/js/module/Button.js | 117 +++ .../lib/summernote/src/js/module/Dialog.js | 158 +++ .../lib/summernote/src/js/module/Handle.js | 44 + .../lib/summernote/src/js/module/Popover.js | 101 ++ .../lib/summernote/src/js/module/Toolbar.js | 56 ++ .../static/lib/summernote/src/js/outro.js | 1 + .../static/lib/summernote/src/js/settings.js | 305 ++++++ .../lib/summernote/src/js/summernote.js | 173 ++++ .../lib/summernote/src/less/elements.less | 156 +++ .../lib/summernote/src/less/summernote.less | 455 +++++++++ .../static/lib/summernote/summernote.css | 1 + 28 files changed, 6157 insertions(+) create mode 100644 addons/website/static/lib/summernote/src/js/EventHandler.js create mode 100644 addons/website/static/lib/summernote/src/js/Renderer.js create mode 100644 addons/website/static/lib/summernote/src/js/app.js create mode 100644 addons/website/static/lib/summernote/src/js/core/agent.js create mode 100644 addons/website/static/lib/summernote/src/js/core/async.js create mode 100644 addons/website/static/lib/summernote/src/js/core/dom.js create mode 100644 addons/website/static/lib/summernote/src/js/core/func.js create mode 100644 addons/website/static/lib/summernote/src/js/core/key.js create mode 100644 addons/website/static/lib/summernote/src/js/core/list.js create mode 100644 addons/website/static/lib/summernote/src/js/core/range.js create mode 100644 addons/website/static/lib/summernote/src/js/editing/Bullet.js create mode 100644 addons/website/static/lib/summernote/src/js/editing/Editor.js create mode 100644 addons/website/static/lib/summernote/src/js/editing/History.js create mode 100644 addons/website/static/lib/summernote/src/js/editing/Style.js create mode 100644 addons/website/static/lib/summernote/src/js/editing/Table.js create mode 100644 addons/website/static/lib/summernote/src/js/editing/Typing.js create mode 100644 addons/website/static/lib/summernote/src/js/intro.js create mode 100644 addons/website/static/lib/summernote/src/js/module/Button.js create mode 100644 addons/website/static/lib/summernote/src/js/module/Dialog.js create mode 100644 addons/website/static/lib/summernote/src/js/module/Handle.js create mode 100644 addons/website/static/lib/summernote/src/js/module/Popover.js create mode 100644 addons/website/static/lib/summernote/src/js/module/Toolbar.js create mode 100644 addons/website/static/lib/summernote/src/js/outro.js create mode 100644 addons/website/static/lib/summernote/src/js/settings.js create mode 100644 addons/website/static/lib/summernote/src/js/summernote.js create mode 100644 addons/website/static/lib/summernote/src/less/elements.less create mode 100644 addons/website/static/lib/summernote/src/less/summernote.less create mode 100644 addons/website/static/lib/summernote/summernote.css diff --git a/addons/website/static/lib/summernote/src/js/EventHandler.js b/addons/website/static/lib/summernote/src/js/EventHandler.js new file mode 100644 index 00000000000..5660b633509 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/EventHandler.js @@ -0,0 +1,706 @@ +define([ + 'summernote/core/agent', 'summernote/core/dom', 'summernote/core/async', 'summernote/core/key', 'summernote/core/list', + 'summernote/editing/Style', 'summernote/editing/Editor', 'summernote/editing/History', + 'summernote/module/Toolbar', 'summernote/module/Popover', 'summernote/module/Handle', 'summernote/module/Dialog' +], function (agent, dom, async, key, list, + Style, Editor, History, + Toolbar, Popover, Handle, Dialog) { + + var CodeMirror; + if (agent.hasCodeMirror) { + if (agent.isSupportAmd) { + require(['CodeMirror'], function (cm) { + CodeMirror = cm; + }); + } else { + CodeMirror = window.CodeMirror; + } + } + + /** + * EventHandler + */ + var EventHandler = function () { + var $window = $(window); + var $document = $(document); + var $scrollbar = $('html, body'); + + var editor = new Editor(); + var toolbar = new Toolbar(), popover = new Popover(); + var handle = new Handle(), dialog = new Dialog(); + + this.getEditor = function () { + return editor; + }; + + /** + * returns makeLayoutInfo from editor's descendant node. + * + * @param {Node} descendant + * @returns {Object} + */ + var makeLayoutInfo = function (descendant) { + var $target = $(descendant).closest('.note-editor, .note-air-editor, .note-air-layout'); + + if (!$target.length) { return null; } + + var $editor; + if ($target.is('.note-editor, .note-air-editor')) { + $editor = $target; + } else { + $editor = $('#note-editor-' + list.last($target.attr('id').split('-'))); + } + + return dom.buildLayoutInfo($editor); + }; + + /** + * insert Images from file array. + * + * @param {Object} layoutInfo + * @param {File[]} files + */ + var insertImages = function (layoutInfo, files) { + var $editor = layoutInfo.editor(), + $editable = layoutInfo.editable(); + + var callbacks = $editable.data('callbacks'); + var options = $editor.data('options'); + + // If onImageUpload options setted + if (callbacks.onImageUpload) { + callbacks.onImageUpload(files, editor, $editable); + // else insert Image as dataURL + } else { + $.each(files, function (idx, file) { + var filename = file.name; + if (options.maximumImageFileSize && options.maximumImageFileSize < file.size) { + if (callbacks.onImageUploadError) { + callbacks.onImageUploadError(options.langInfo.image.maximumFileSizeError); + } else { + alert(options.langInfo.image.maximumFileSizeError); + } + } else { + async.readFileAsDataURL(file).then(function (sDataURL) { + editor.insertImage($editable, sDataURL, filename); + }).fail(function () { + if (callbacks.onImageUploadError) { + callbacks.onImageUploadError(); + } + }); + } + }); + } + }; + + var commands = { + /** + * @param {Object} layoutInfo + */ + showLinkDialog: function (layoutInfo) { + var $editor = layoutInfo.editor(), + $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(), + linkInfo = editor.getLinkInfo($editable); + + var options = $editor.data('options'); + + editor.saveRange($editable); + dialog.showLinkDialog($editable, $dialog, linkInfo).then(function (linkInfo) { + editor.restoreRange($editable); + editor.createLink($editable, linkInfo, options); + // hide popover after creating link + popover.hide(layoutInfo.popover()); + }).fail(function () { + editor.restoreRange($editable); + }); + }, + + /** + * @param {Object} layoutInfo + */ + showImageDialog: function (layoutInfo) { + var $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(); + + editor.saveRange($editable); + dialog.showImageDialog($editable, $dialog).then(function (data) { + editor.restoreRange($editable); + + if (typeof data === 'string') { + // image url + editor.insertImage($editable, data); + } else { + // array of files + insertImages(layoutInfo, data); + } + }).fail(function () { + editor.restoreRange($editable); + }); + }, + + /** + * @param {Object} layoutInfo + */ + showHelpDialog: function (layoutInfo) { + var $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(); + + editor.saveRange($editable, true); + dialog.showHelpDialog($editable, $dialog).then(function () { + editor.restoreRange($editable); + }); + }, + + fullscreen: function (layoutInfo) { + var $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(); + + var resize = function (size) { + $editable.css('height', size.h); + $codable.css('height', size.h); + if ($codable.data('cmeditor')) { + $codable.data('cmeditor').setsize(null, size.h); + } + }; + + $editor.toggleClass('fullscreen'); + var isFullscreen = $editor.hasClass('fullscreen'); + if (isFullscreen) { + $editable.data('orgheight', $editable.css('height')); + + $window.on('resize', function () { + resize({ + h: $window.height() - $toolbar.outerHeight() + }); + }).trigger('resize'); + + $scrollbar.css('overflow', 'hidden'); + } else { + $window.off('resize'); + resize({ + h: $editable.data('orgheight') + }); + $scrollbar.css('overflow', 'visible'); + } + + toolbar.updateFullscreen($toolbar, isFullscreen); + }, + + codeview: function (layoutInfo) { + var $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(), + $popover = layoutInfo.popover(), + $handle = layoutInfo.handle(); + + var options = $editor.data('options'); + + var cmEditor, server; + + $editor.toggleClass('codeview'); + + var isCodeview = $editor.hasClass('codeview'); + if (isCodeview) { + $codable.val(dom.html($editable, true)); + $codable.height($editable.height()); + toolbar.deactivate($toolbar); + popover.hide($popover); + handle.hide($handle); + $codable.focus(); + + // activate CodeMirror as codable + if (agent.hasCodeMirror) { + cmEditor = CodeMirror.fromTextArea($codable[0], options.codemirror); + + // CodeMirror TernServer + if (options.codemirror.tern) { + server = new CodeMirror.TernServer(options.codemirror.tern); + cmEditor.ternServer = server; + cmEditor.on('cursorActivity', function (cm) { + server.updateArgHints(cm); + }); + } + + // CodeMirror hasn't Padding. + cmEditor.setSize(null, $editable.outerHeight()); + $codable.data('cmEditor', cmEditor); + } + } else { + // deactivate CodeMirror as codable + if (agent.hasCodeMirror) { + cmEditor = $codable.data('cmEditor'); + $codable.val(cmEditor.getValue()); + cmEditor.toTextArea(); + } + + $editable.html(dom.value($codable) || dom.emptyPara); + $editable.height(options.height ? $codable.height() : 'auto'); + + toolbar.activate($toolbar); + $editable.focus(); + } + + toolbar.updateCodeview(layoutInfo.toolbar(), isCodeview); + } + }; + + var hMousedown = function (event) { + //preventDefault Selection for FF, IE8+ + if (dom.isImg(event.target)) { + event.preventDefault(); + } + }; + + var hToolbarAndPopoverUpdate = function (event) { + // delay for range after mouseup + setTimeout(function () { + var layoutInfo = makeLayoutInfo(event.currentTarget || event.target); + var styleInfo = editor.currentStyle(event.target); + if (!styleInfo) { return; } + + var isAirMode = layoutInfo.editor().data('options').airMode; + if (!isAirMode) { + toolbar.update(layoutInfo.toolbar(), styleInfo); + } + + popover.update(layoutInfo.popover(), styleInfo, isAirMode); + handle.update(layoutInfo.handle(), styleInfo, isAirMode); + }, 0); + }; + + var hScroll = function (event) { + var layoutInfo = makeLayoutInfo(event.currentTarget || event.target); + //hide popover and handle when scrolled + popover.hide(layoutInfo.popover()); + handle.hide(layoutInfo.handle()); + }; + + /** + * paste clipboard image + * + * @param {Event} event + */ + var hPasteClipboardImage = function (event) { + var clipboardData = event.originalEvent.clipboardData; + if (!clipboardData || !clipboardData.items || !clipboardData.items.length) { + return; + } + + var layoutInfo = makeLayoutInfo(event.currentTarget || event.target), + $editable = layoutInfo.editable(); + + var item = list.head(clipboardData.items); + var isClipboardImage = item.kind === 'file' && item.type.indexOf('image/') !== -1; + + if (isClipboardImage) { + insertImages(layoutInfo, [item.getAsFile()]); + } + + editor.afterCommand($editable); + }; + + /** + * `mousedown` event handler on $handle + * - controlSizing: resize image + * + * @param {MouseEvent} event + */ + var hHandleMousedown = function (event) { + if (dom.isControlSizing(event.target)) { + event.preventDefault(); + event.stopPropagation(); + + var layoutInfo = makeLayoutInfo(event.target), + $handle = layoutInfo.handle(), $popover = layoutInfo.popover(), + $editable = layoutInfo.editable(), + $editor = layoutInfo.editor(); + + var target = $handle.find('.note-control-selection').data('target'), + $target = $(target), posStart = $target.offset(), + scrollTop = $document.scrollTop(); + + var isAirMode = $editor.data('options').airMode; + + $document.on('mousemove', function (event) { + editor.resizeTo({ + x: event.clientX - posStart.left, + y: event.clientY - (posStart.top - scrollTop) + }, $target, !event.shiftKey); + + handle.update($handle, {image: target}, isAirMode); + popover.update($popover, {image: target}, isAirMode); + }).one('mouseup', function () { + $document.off('mousemove'); + editor.afterCommand($editable); + }); + + if (!$target.data('ratio')) { // original ratio. + $target.data('ratio', $target.height() / $target.width()); + } + } + }; + + var hToolbarAndPopoverMousedown = function (event) { + // prevent default event when insertTable (FF, Webkit) + var $btn = $(event.target).closest('[data-event]'); + if ($btn.length) { + event.preventDefault(); + } + }; + + var hToolbarAndPopoverClick = function (event) { + var $btn = $(event.target).closest('[data-event]'); + + if ($btn.length) { + var eventName = $btn.attr('data-event'), + value = $btn.attr('data-value'), + hide = $btn.attr('data-hide'); + + var layoutInfo = makeLayoutInfo(event.target); + + event.preventDefault(); + + // before command: detect control selection element($target) + var $target; + if ($.inArray(eventName, ['resize', 'floatMe', 'removeMedia', 'imageShape']) !== -1) { + var $selection = layoutInfo.handle().find('.note-control-selection'); + $target = $($selection.data('target')); + } + + // If requested, hide the popover when the button is clicked. + // Useful for things like showHelpDialog. + if (hide) { + $btn.parents('.popover').hide(); + } + + if (editor[eventName]) { // on command + var $editable = layoutInfo.editable(); + $editable.trigger('focus'); + editor[eventName]($editable, value, $target); + } else if (commands[eventName]) { + commands[eventName].call(this, layoutInfo); + } else if ($.isFunction($.summernote.pluginEvents[eventName])) { + $.summernote.pluginEvents[eventName](layoutInfo, value, $target); + } + + // after command + if ($.inArray(eventName, ['backColor', 'foreColor']) !== -1) { + var options = layoutInfo.editor().data('options', options); + var module = options.airMode ? popover : toolbar; + module.updateRecentColor(list.head($btn), eventName, value); + } + + hToolbarAndPopoverUpdate(event); + } + }; + + var EDITABLE_PADDING = 24; + /** + * `mousedown` event handler on statusbar + * + * @param {MouseEvent} event + */ + var hStatusbarMousedown = function (event) { + event.preventDefault(); + event.stopPropagation(); + + var $editable = makeLayoutInfo(event.target).editable(); + var nEditableTop = $editable.offset().top - $document.scrollTop(); + + var layoutInfo = makeLayoutInfo(event.currentTarget || event.target); + var options = layoutInfo.editor().data('options'); + + $document.on('mousemove', function (event) { + var nHeight = event.clientY - (nEditableTop + EDITABLE_PADDING); + + nHeight = (options.minHeight > 0) ? Math.max(nHeight, options.minHeight) : nHeight; + nHeight = (options.maxHeight > 0) ? Math.min(nHeight, options.maxHeight) : nHeight; + + $editable.height(nHeight); + }).one('mouseup', function () { + $document.off('mousemove'); + }); + }; + + var PX_PER_EM = 18; + var hDimensionPickerMove = function (event, options) { + var $picker = $(event.target.parentNode); // target is mousecatcher + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + + var posOffset; + // HTML5 with jQuery - e.offsetX is undefined in Firefox + if (event.offsetX === undefined) { + var posCatcher = $(event.target).offset(); + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / PX_PER_EM) || 1, + r: Math.ceil(posOffset.y / PX_PER_EM) || 1 + }; + + $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' }); + $catcher.attr('data-value', dim.c + 'x' + dim.r); + + if (3 < dim.c && dim.c < options.insertTableMaxSize.col) { + $unhighlighted.css({ width: dim.c + 1 + 'em'}); + } + + if (3 < dim.r && dim.r < options.insertTableMaxSize.row) { + $unhighlighted.css({ height: dim.r + 1 + 'em'}); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); + }; + + /** + * Drag and Drop Events + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options + */ + var handleDragAndDropEvent = function (layoutInfo, options) { + if (options.disableDragAndDrop) { + // prevent default drop event + $document.on('drop', function (e) { + e.preventDefault(); + }); + } else { + attachDragAndDropEvent(layoutInfo, options); + } + }; + + /** + * attach Drag and Drop Events + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options + */ + var attachDragAndDropEvent = function (layoutInfo, options) { + var collection = $(), + $dropzone = layoutInfo.dropzone, + $dropzoneMessage = layoutInfo.dropzone.find('.note-dropzone-message'); + + // show dropzone on dragenter when dragging a object to document. + $document.on('dragenter', function (e) { + var isCodeview = layoutInfo.editor.hasClass('codeview'); + if (!isCodeview && !collection.length) { + layoutInfo.editor.addClass('dragover'); + $dropzone.width(layoutInfo.editor.width()); + $dropzone.height(layoutInfo.editor.height()); + $dropzoneMessage.text(options.langInfo.image.dragImageHere); + } + collection = collection.add(e.target); + }).on('dragleave', function (e) { + collection = collection.not(e.target); + if (!collection.length) { + layoutInfo.editor.removeClass('dragover'); + } + }).on('drop', function () { + collection = $(); + layoutInfo.editor.removeClass('dragover'); + }); + + // change dropzone's message on hover. + $dropzone.on('dragenter', function () { + $dropzone.addClass('hover'); + $dropzoneMessage.text(options.langInfo.image.dropImage); + }).on('dragleave', function () { + $dropzone.removeClass('hover'); + $dropzoneMessage.text(options.langInfo.image.dragImageHere); + }); + + // attach dropImage + $dropzone.on('drop', function (event) { + event.preventDefault(); + + var dataTransfer = event.originalEvent.dataTransfer; + if (dataTransfer && dataTransfer.files) { + var layoutInfo = makeLayoutInfo(event.currentTarget || event.target); + layoutInfo.editable().focus(); + insertImages(layoutInfo, dataTransfer.files); + } + }).on('dragover', false); // prevent default dragover event + }; + + + /** + * bind KeyMap on keydown + * + * @param {Object} layoutInfo + * @param {Object} keyMap + */ + this.bindKeyMap = function (layoutInfo, keyMap) { + var $editor = layoutInfo.editor; + var $editable = layoutInfo.editable; + + layoutInfo = makeLayoutInfo($editable); + + $editable.on('keydown', function (event) { + var aKey = []; + + // modifier + if (event.metaKey) { aKey.push('CMD'); } + if (event.ctrlKey && !event.altKey) { aKey.push('CTRL'); } + if (event.shiftKey) { aKey.push('SHIFT'); } + + // keycode + var keyName = key.nameFromCode[event.keyCode]; + if (keyName) { aKey.push(keyName); } + + var eventName = keyMap[aKey.join('+')]; + if (eventName) { + event.preventDefault(); + + if (editor[eventName]) { + editor[eventName]($editable, $editor.data('options')); + } else if (commands[eventName]) { + commands[eventName].call(this, layoutInfo); + } else if ($.summernote.plugins[eventName]) { + var plugin = $.summernote.plugins[eventName]; + if ($.isFunction(plugin.event)) { + plugin.event(event, editor, layoutInfo); + } + } + } else if (key.isEdit(event.keyCode)) { + editor.afterCommand($editable); + } + }); + }; + + /** + * attach eventhandler + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options - user options include custom event handlers + * @param {Function} options.enter - enter key handler + */ + this.attach = function (layoutInfo, options) { + // handlers for editable + if (options.shortcuts) { + this.bindKeyMap(layoutInfo, options.keyMap[agent.isMac ? 'mac' : 'pc']); + } + layoutInfo.editable.on('mousedown', hMousedown); + layoutInfo.editable.on('keyup mouseup', hToolbarAndPopoverUpdate); + layoutInfo.editable.on('scroll', hScroll); + layoutInfo.editable.on('paste', hPasteClipboardImage); + + // handler for handle and popover + layoutInfo.handle.on('mousedown', hHandleMousedown); + layoutInfo.popover.on('click', hToolbarAndPopoverClick); + layoutInfo.popover.on('mousedown', hToolbarAndPopoverMousedown); + + // handlers for frame mode (toolbar, statusbar) + if (!options.airMode) { + // handler for drag and drop + handleDragAndDropEvent(layoutInfo, options); + + // handler for toolbar + layoutInfo.toolbar.on('click', hToolbarAndPopoverClick); + layoutInfo.toolbar.on('mousedown', hToolbarAndPopoverMousedown); + + // handler for statusbar + if (!options.disableResizeEditor) { + layoutInfo.statusbar.on('mousedown', hStatusbarMousedown); + } + } + + // handler for table dimension + var $catcherContainer = options.airMode ? layoutInfo.popover : + layoutInfo.toolbar; + var $catcher = $catcherContainer.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: options.insertTableMaxSize.col + 'em', + height: options.insertTableMaxSize.row + 'em' + }).on('mousemove', function (event) { + hDimensionPickerMove(event, options); + }); + + // save options on editor + layoutInfo.editor.data('options', options); + + // ret styleWithCSS for backColor / foreColor clearing with 'inherit'. + if (!agent.isMSIE) { + // protect FF Error: NS_ERROR_FAILURE: Failure + setTimeout(function () { + document.execCommand('styleWithCSS', 0, options.styleWithSpan); + }, 0); + } + + // History + var history = new History(layoutInfo.editable); + layoutInfo.editable.data('NoteHistory', history); + + // basic event callbacks (lowercase) + // enter, focus, blur, keyup, keydown + if (options.onenter) { + layoutInfo.editable.keypress(function (event) { + if (event.keyCode === key.ENTER) { options.onenter(event); } + }); + } + + if (options.onfocus) { layoutInfo.editable.focus(options.onfocus); } + if (options.onblur) { layoutInfo.editable.blur(options.onblur); } + if (options.onkeyup) { layoutInfo.editable.keyup(options.onkeyup); } + if (options.onkeydown) { layoutInfo.editable.keydown(options.onkeydown); } + if (options.onpaste) { layoutInfo.editable.on('paste', options.onpaste); } + + // callbacks for advanced features (camel) + if (options.onToolbarClick) { layoutInfo.toolbar.click(options.onToolbarClick); } + if (options.onChange) { + var hChange = function () { + editor.triggerOnChange(layoutInfo.editable); + }; + + if (agent.isMSIE) { + var sDomEvents = 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted'; + layoutInfo.editable.on(sDomEvents, hChange); + } else { + layoutInfo.editable.on('input', hChange); + } + } + + // All editor status will be saved on editable with jquery's data + // for support multiple editor with singleton object. + layoutInfo.editable.data('callbacks', { + onChange: options.onChange, + onAutoSave: options.onAutoSave, + onImageUpload: options.onImageUpload, + onImageUploadError: options.onImageUploadError, + onFileUpload: options.onFileUpload, + onFileUploadError: options.onFileUpload + }); + }; + + this.detach = function (layoutInfo, options) { + layoutInfo.editable.off(); + + layoutInfo.popover.off(); + layoutInfo.handle.off(); + layoutInfo.dialog.off(); + + if (!options.airMode) { + layoutInfo.dropzone.off(); + layoutInfo.toolbar.off(); + layoutInfo.statusbar.off(); + } + }; + }; + + return EventHandler; +}); diff --git a/addons/website/static/lib/summernote/src/js/Renderer.js b/addons/website/static/lib/summernote/src/js/Renderer.js new file mode 100644 index 00000000000..5b1cc794c15 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/Renderer.js @@ -0,0 +1,911 @@ +define([ + 'summernote/core/agent', 'summernote/core/dom', 'summernote/core/func' +], function (agent, dom, func) { + /** + * renderer + * + * rendering toolbar and editable + */ + var Renderer = function () { + + /** + * bootstrap button template + * + * @param {String} label + * @param {Object} [options] + * @param {String} [options.event] + * @param {String} [options.value] + * @param {String} [options.title] + * @param {String} [options.dropdown] + * @param {String} [options.hide] + */ + var tplButton = function (label, options) { + var event = options.event; + var value = options.value; + var title = options.title; + var className = options.className; + var dropdown = options.dropdown; + var hide = options.hide; + + return '' + + (dropdown || ''); + }; + + /** + * bootstrap icon button template + * + * @param {String} iconClassName + * @param {Object} [options] + * @param {String} [options.event] + * @param {String} [options.value] + * @param {String} [options.title] + * @param {String} [options.dropdown] + */ + var tplIconButton = function (iconClassName, options) { + var label = ''; + return tplButton(label, options); + }; + + /** + * bootstrap popover template + * + * @param {String} className + * @param {String} content + */ + var tplPopover = function (className, content) { + return ''; + }; + + /** + * bootstrap dialog template + * + * @param {String} className + * @param {String} [title] + * @param {String} body + * @param {String} [footer] + */ + var tplDialog = function (className, title, body, footer) { + return ''; + }; + + var tplButtonInfo = { + picture: function (lang) { + return tplIconButton('fa fa-picture-o', { + event: 'showImageDialog', + title: lang.image.image, + hide: true + }); + }, + link: function (lang) { + return tplIconButton('fa fa-link', { + event: 'showLinkDialog', + title: lang.link.link, + hide: true + }); + }, + table: function (lang) { + var dropdown = ''; + return tplIconButton('fa fa-table', { + title: lang.table.table, + dropdown: dropdown + }); + }, + style: function (lang, options) { + var items = options.styleTags.reduce(function (memo, v) { + var label = lang.style[v === 'p' ? 'normal' : v]; + return memo + '
  • ' + + ( + (v === 'p' || v === 'pre') ? label : + '<' + v + '>' + label + '' + ) + + '
  • '; + }, ''); + + return tplIconButton('fa fa-magic', { + title: lang.style.style, + dropdown: '' + }); + }, + fontname: function (lang, options) { + var items = options.fontNames.reduce(function (memo, v) { + if (!agent.isFontInstalled(v)) { return memo; } + return memo + '
  • ' + + ' ' + v + + '
  • '; + }, ''); + var label = '' + + options.defaultFontName + + ''; + return tplButton(label, { + title: lang.font.name, + dropdown: '' + }); + }, + color: function (lang) { + var colorButtonLabel = ''; + var colorButton = tplButton(colorButtonLabel, { + className: 'note-recent-color', + title: lang.color.recent, + event: 'color', + value: '{"backColor":"yellow"}' + }); + + var dropdown = ''; + + var moreButton = tplButton('', { + title: lang.color.more, + dropdown: dropdown + }); + + return colorButton + moreButton; + }, + bold: function (lang) { + return tplIconButton('fa fa-bold', { + event: 'bold', + title: lang.font.bold + }); + }, + italic: function (lang) { + return tplIconButton('fa fa-italic', { + event: 'italic', + title: lang.font.italic + }); + }, + underline: function (lang) { + return tplIconButton('fa fa-underline', { + event: 'underline', + title: lang.font.underline + }); + }, + clear: function (lang) { + return tplIconButton('fa fa-eraser', { + event: 'removeFormat', + title: lang.font.clear + }); + }, + ul: function (lang) { + return tplIconButton('fa fa-list-ul', { + event: 'insertUnorderedList', + title: lang.lists.unordered + }); + }, + ol: function (lang) { + return tplIconButton('fa fa-list-ol', { + event: 'insertOrderedList', + title: lang.lists.ordered + }); + }, + paragraph: function (lang) { + var leftButton = tplIconButton('fa fa-align-left', { + title: lang.paragraph.left, + event: 'justifyLeft' + }); + var centerButton = tplIconButton('fa fa-align-center', { + title: lang.paragraph.center, + event: 'justifyCenter' + }); + var rightButton = tplIconButton('fa fa-align-right', { + title: lang.paragraph.right, + event: 'justifyRight' + }); + var justifyButton = tplIconButton('fa fa-align-justify', { + title: lang.paragraph.justify, + event: 'justifyFull' + }); + + var outdentButton = tplIconButton('fa fa-outdent', { + title: lang.paragraph.outdent, + event: 'outdent' + }); + var indentButton = tplIconButton('fa fa-indent', { + title: lang.paragraph.indent, + event: 'indent' + }); + + var dropdown = ''; + + return tplIconButton('fa fa-align-left', { + title: lang.paragraph.paragraph, + dropdown: dropdown + }); + }, + height: function (lang, options) { + var items = options.lineHeights.reduce(function (memo, v) { + return memo + '
  • ' + + ' ' + v + + '
  • '; + }, ''); + + return tplIconButton('fa fa-text-height', { + title: lang.font.height, + dropdown: '' + }); + + }, + help: function (lang) { + return tplIconButton('fa fa-question', { + event: 'showHelpDialog', + title: lang.options.help, + hide: true + }); + }, + fullscreen: function (lang) { + return tplIconButton('fa fa-arrows-alt', { + event: 'fullscreen', + title: lang.options.fullscreen + }); + }, + codeview: function (lang) { + return tplIconButton('fa fa-code', { + event: 'codeview', + title: lang.options.codeview + }); + }, + undo: function (lang) { + return tplIconButton('fa fa-undo', { + event: 'undo', + title: lang.history.undo + }); + }, + redo: function (lang) { + return tplIconButton('fa fa-repeat', { + event: 'redo', + title: lang.history.redo + }); + }, + hr: function (lang) { + return tplIconButton('fa fa-minus', { + event: 'insertHorizontalRule', + title: lang.hr.insert + }); + } + }; + + var tplPopovers = function (lang, options) { + var tplLinkPopover = function () { + var linkButton = tplIconButton('fa fa-edit', { + title: lang.link.edit, + event: 'showLinkDialog', + hide: true + }); + var unlinkButton = tplIconButton('fa fa-unlink', { + title: lang.link.unlink, + event: 'unlink' + }); + var content = 'www.google.com  ' + + '
    ' + + linkButton + unlinkButton + + '
    '; + return tplPopover('note-link-popover', content); + }; + + var tplImagePopover = function () { + var fullButton = tplButton('100%', { + title: lang.image.resizeFull, + event: 'resize', + value: '1' + }); + var halfButton = tplButton('50%', { + title: lang.image.resizeHalf, + event: 'resize', + value: '0.5' + }); + var quarterButton = tplButton('25%', { + title: lang.image.resizeQuarter, + event: 'resize', + value: '0.25' + }); + + var leftButton = tplIconButton('fa fa-align-left', { + title: lang.image.floatLeft, + event: 'floatMe', + value: 'left' + }); + var rightButton = tplIconButton('fa fa-align-right', { + title: lang.image.floatRight, + event: 'floatMe', + value: 'right' + }); + var justifyButton = tplIconButton('fa fa-align-justify', { + title: lang.image.floatNone, + event: 'floatMe', + value: 'none' + }); + + var roundedButton = tplIconButton('fa fa-square', { + title: lang.image.shapeRounded, + event: 'imageShape', + value: 'img-rounded' + }); + var circleButton = tplIconButton('fa fa-circle-o', { + title: lang.image.shapeCircle, + event: 'imageShape', + value: 'img-circle' + }); + var thumbnailButton = tplIconButton('fa fa-picture-o', { + title: lang.image.shapeThumbnail, + event: 'imageShape', + value: 'img-thumbnail' + }); + var noneButton = tplIconButton('fa fa-times', { + title: lang.image.shapeNone, + event: 'imageShape', + value: '' + }); + + var removeButton = tplIconButton('fa fa-trash-o', { + title: lang.image.remove, + event: 'removeMedia', + value: 'none' + }); + + var content = '
    ' + fullButton + halfButton + quarterButton + '
    ' + + '
    ' + leftButton + rightButton + justifyButton + '
    ' + + '
    ' + roundedButton + circleButton + thumbnailButton + noneButton + '
    ' + + '
    ' + removeButton + '
    '; + return tplPopover('note-image-popover', content); + }; + + var tplAirPopover = function () { + var content = ''; + for (var idx = 0, len = options.airPopover.length; idx < len; idx ++) { + var group = options.airPopover[idx]; + content += '
    '; + for (var i = 0, lenGroup = group[1].length; i < lenGroup; i++) { + content += tplButtonInfo[group[1][i]](lang, options); + } + content += '
    '; + } + + return tplPopover('note-air-popover', content); + }; + + return '
    ' + + tplLinkPopover() + + tplImagePopover() + + (options.airMode ? tplAirPopover() : '') + + '
    '; + }; + + var tplHandles = function () { + return '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    '; + }; + + /** + * shortcut table template + * @param {String} title + * @param {String} body + */ + var tplShortcut = function (title, keys) { + var keyClass = 'note-shortcut-col col-xs-6 note-shortcut-'; + var body = []; + + for (var i in keys) { + body.push( + '
    ' + keys[i].kbd + '
    ' + + '
    ' + keys[i].text + '
    ' + ); + } + + return '
    ' + title + '
    ' + + '
    ' + body.join('
    ') + '
    '; + }; + + var tplShortcutText = function (lang) { + var keys = [ + { kbd: '⌘ + B', text: lang.font.bold }, + { kbd: '⌘ + I', text: lang.font.italic }, + { kbd: '⌘ + U', text: lang.font.underline }, + { kbd: '⌘ + ⇧ + S', text: lang.font.sdivikethrough }, + { kbd: '⌘ + \\', text: lang.font.clear } + ]; + + return tplShortcut(lang.shortcut.textFormatting, keys); + }; + + var tplShortcutAction = function (lang) { + var keys = [ + { kbd: '⌘ + Z', text: lang.history.undo }, + { kbd: '⌘ + ⇧ + Z', text: lang.history.redo }, + { kbd: '⌘ + ]', text: lang.paragraph.indent }, + { kbd: '⌘ + [', text: lang.paragraph.oudivent }, + { kbd: '⌘ + ENTER', text: lang.hr.insert } + ]; + + return tplShortcut(lang.shortcut.action, keys); + }; + + var tplShortcutPara = function (lang) { + var keys = [ + { kbd: '⌘ + ⇧ + L', text: lang.paragraph.left }, + { kbd: '⌘ + ⇧ + E', text: lang.paragraph.center }, + { kbd: '⌘ + ⇧ + R', text: lang.paragraph.right }, + { kbd: '⌘ + ⇧ + J', text: lang.paragraph.justify }, + { kbd: '⌘ + ⇧ + NUM7', text: lang.lists.ordered }, + { kbd: '⌘ + ⇧ + NUM8', text: lang.lists.unordered } + ]; + + return tplShortcut(lang.shortcut.paragraphFormatting, keys); + }; + + var tplShortcutStyle = function (lang) { + var keys = [ + { kbd: '⌘ + NUM0', text: lang.style.normal }, + { kbd: '⌘ + NUM1', text: lang.style.h1 }, + { kbd: '⌘ + NUM2', text: lang.style.h2 }, + { kbd: '⌘ + NUM3', text: lang.style.h3 }, + { kbd: '⌘ + NUM4', text: lang.style.h4 }, + { kbd: '⌘ + NUM5', text: lang.style.h5 }, + { kbd: '⌘ + NUM6', text: lang.style.h6 } + ]; + + return tplShortcut(lang.shortcut.documentStyle, keys); + }; + + var tplExtraShortcuts = function (lang, options) { + var extraKeys = options.extraKeys; + var keys = []; + + for (var key in extraKeys) { + if (extraKeys.hasOwnProperty(key)) { + keys.push({ kbd: key, text: extraKeys[key] }); + } + } + + return tplShortcut(lang.shortcut.extraKeys, keys); + }; + + var tplShortcutTable = function (lang, options) { + var colClass = 'class="note-shortcut note-shortcut-col col-sm-6 col-xs-12"'; + var template = [ + '
    ' + tplShortcutAction(lang, options) + '
    ' + + '
    ' + tplShortcutText(lang, options) + '
    ', + '
    ' + tplShortcutStyle(lang, options) + '
    ' + + '
    ' + tplShortcutPara(lang, options) + '
    ' + ]; + + if (options.extraKeys) { + template.push('
    ' + tplExtraShortcuts(lang, options) + '
    '); + } + + return '
    ' + + template.join('
    ') + + '
    '; + }; + + var replaceMacKeys = function (sHtml) { + return sHtml.replace(/⌘/g, 'Ctrl').replace(/⇧/g, 'Shift'); + }; + + var tplDialogInfo = { + image: function (lang, options) { + var imageLimitation = ''; + if (options.maximumImageFileSize) { + var unit = Math.floor(Math.log(options.maximumImageFileSize) / Math.log(1024)); + var readableSize = (options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 + + ' ' + ' KMGTP'[unit] + 'B'; + imageLimitation = '' + lang.image.maximumFileSize + ' : ' + readableSize + ''; + } + + var body = '
    ' + + '' + + '' + + imageLimitation + + '
    ' + + '
    ' + + '' + + '' + + '
    '; + var footer = ''; + return tplDialog('note-image-dialog', lang.image.insert, body, footer); + }, + + link: function (lang, options) { + var body = '
    ' + + '' + + '' + + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + (!options.disableLinkTarget ? + '
    ' + + '' + + '
    ' : '' + ); + var footer = ''; + return tplDialog('note-link-dialog', lang.link.insert, body, footer); + }, + + help: function (lang, options) { + var body = '' + + '
    ' + lang.shortcut.shortcuts + '
    ' + + (agent.isMac ? tplShortcutTable(lang, options) : replaceMacKeys(tplShortcutTable(lang, options))) + + '

    ' + + 'Summernote @VERSION · ' + + 'Project · ' + + 'Issues' + + '

    '; + return tplDialog('note-help-dialog', '', body, ''); + } + }; + + var tplDialogs = function (lang, options) { + var dialogs = ''; + + $.each(tplDialogInfo, function (idx, tplDialog) { + dialogs += tplDialog(lang, options); + }); + + return '
    ' + dialogs + '
    '; + }; + + var tplStatusbar = function () { + return '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    '; + }; + + var representShortcut = function (str) { + if (agent.isMac) { + str = str.replace('CMD', '⌘').replace('SHIFT', '⇧'); + } + + return str.replace('BACKSLASH', '\\') + .replace('SLASH', '/') + .replace('LEFTBRACKET', '[') + .replace('RIGHTBRACKET', ']'); + }; + + /** + * createTooltip + * + * @param {jQuery} $container + * @param {Object} keyMap + * @param {String} [sPlacement] + */ + var createTooltip = function ($container, keyMap, sPlacement) { + var invertedKeyMap = func.invertObject(keyMap); + var $buttons = $container.find('button'); + + $buttons.each(function (i, elBtn) { + var $btn = $(elBtn); + var sShortcut = invertedKeyMap[$btn.data('event')]; + if (sShortcut) { + $btn.attr('title', function (i, v) { + return v + ' (' + representShortcut(sShortcut) + ')'; + }); + } + // bootstrap tooltip on btn-group bug + // https://github.com/twbs/bootstrap/issues/5687 + }).tooltip({ + container: 'body', + trigger: 'hover', + placement: sPlacement || 'top' + }).on('click', function () { + $(this).tooltip('hide'); + }); + }; + + // createPalette + var createPalette = function ($container, options) { + var colorInfo = options.colors; + $container.find('.note-color-palette').each(function () { + var $palette = $(this), eventName = $palette.attr('data-target-event'); + var paletteContents = []; + for (var row = 0, lenRow = colorInfo.length; row < lenRow; row++) { + var colors = colorInfo[row]; + var buttons = []; + for (var col = 0, lenCol = colors.length; col < lenCol; col++) { + var color = colors[col]; + buttons.push([''].join('')); + } + paletteContents.push('
    ' + buttons.join('') + '
    '); + } + $palette.html(paletteContents.join('')); + }); + }; + + /** + * create summernote layout (air mode) + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayoutByAirMode = function ($holder, options) { + var langInfo = options.langInfo; + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + var id = func.uniqueId(); + + $holder.addClass('note-air-editor note-editable'); + $holder.attr({ + 'id': 'note-editor-' + id, + 'contentEditable': true + }); + + var body = document.body; + + // create Popover + var $popover = $(tplPopovers(langInfo, options)); + $popover.addClass('note-air-layout'); + $popover.attr('id', 'note-popover-' + id); + $popover.appendTo(body); + createTooltip($popover, keyMap); + createPalette($popover, options); + + // create Handle + var $handle = $(tplHandles()); + $handle.addClass('note-air-layout'); + $handle.attr('id', 'note-handle-' + id); + $handle.appendTo(body); + + // create Dialog + var $dialog = $(tplDialogs(langInfo, options)); + $dialog.addClass('note-air-layout'); + $dialog.attr('id', 'note-dialog-' + id); + $dialog.find('button.close, a.modal-close').click(function () { + $(this).closest('.modal').modal('hide'); + }); + $dialog.appendTo(body); + }; + + /** + * create summernote layout (normal mode) + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayoutByFrame = function ($holder, options) { + var langInfo = options.langInfo; + + //01. create Editor + var $editor = $('
    '); + if (options.width) { + $editor.width(options.width); + } + + //02. statusbar (resizebar) + if (options.height > 0) { + $('
    ' + (options.disableResizeEditor ? '' : tplStatusbar()) + '
    ').prependTo($editor); + } + + //03. create Editable + var isContentEditable = !$holder.is(':disabled'); + var $editable = $('
    ') + .prependTo($editor); + if (options.height) { + $editable.height(options.height); + } + if (options.direction) { + $editable.attr('dir', options.direction); + } + if (options.placeholder) { + $editable.attr('data-placeholder', options.placeholder); + } + + $editable.html(dom.html($holder)); + + //031. create codable + $('').prependTo($editor); + + //04. create Toolbar + var toolbarHTML = ''; + for (var idx = 0, len = options.toolbar.length; idx < len; idx ++) { + var groupName = options.toolbar[idx][0]; + var groupButtons = options.toolbar[idx][1]; + + toolbarHTML += '
    '; + for (var i = 0, btnLength = groupButtons.length; i < btnLength; i++) { + var buttonInfo = tplButtonInfo[groupButtons[i]]; + // continue creating toolbar even if a button doesn't exist + if (!$.isFunction(buttonInfo)) { continue; } + toolbarHTML += buttonInfo(langInfo, options); + } + toolbarHTML += '
    '; + } + + toolbarHTML = '
    ' + toolbarHTML + '
    '; + + var $toolbar = $(toolbarHTML).prependTo($editor); + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + createPalette($toolbar, options); + createTooltip($toolbar, keyMap, 'bottom'); + + //05. create Popover + var $popover = $(tplPopovers(langInfo, options)).prependTo($editor); + createPalette($popover, options); + createTooltip($popover, keyMap); + + //06. handle(control selection, ...) + $(tplHandles()).prependTo($editor); + + //07. create Dialog + var $dialog = $(tplDialogs(langInfo, options)).prependTo($editor); + $dialog.find('button.close, a.modal-close').click(function () { + $(this).closest('.modal').modal('hide'); + }); + + //08. create Dropzone + $('
    ').prependTo($editor); + + //09. Editor/Holder switch + $editor.insertAfter($holder); + $holder.hide(); + }; + + this.noteEditorFromHolder = function ($holder) { + if ($holder.hasClass('note-air-editor')) { + return $holder; + } else if ($holder.next().hasClass('note-editor')) { + return $holder.next(); + } else { + return $(); + } + }; + + /** + * create summernote layout + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayout = function ($holder, options) { + if (this.noteEditorFromHolder($holder).length) { + return; + } + + if (options.airMode) { + this.createLayoutByAirMode($holder, options); + } else { + this.createLayoutByFrame($holder, options); + } + }; + + /** + * returns layoutInfo from holder + * + * @param {jQuery} $holder - placeholder + * @returns {Object} + */ + this.layoutInfoFromHolder = function ($holder) { + var $editor = this.noteEditorFromHolder($holder); + if (!$editor.length) { return; } + + var layoutInfo = dom.buildLayoutInfo($editor); + // cache all properties. + for (var key in layoutInfo) { + if (layoutInfo.hasOwnProperty(key)) { + layoutInfo[key] = layoutInfo[key].call(); + } + } + return layoutInfo; + }; + + /** + * removeLayout + * + * @param {jQuery} $holder - placeholder + * @param {Object} layoutInfo + * @param {Object} options + * + */ + this.removeLayout = function ($holder, layoutInfo, options) { + if (options.airMode) { + $holder.removeClass('note-air-editor note-editable') + .removeAttr('id contentEditable'); + + layoutInfo.popover.remove(); + layoutInfo.handle.remove(); + layoutInfo.dialog.remove(); + } else { + $holder.html(layoutInfo.editable.html()); + + layoutInfo.editor.remove(); + $holder.show(); + } + }; + + this.getTemplate = function () { + return { + button: tplButton, + iconButton: tplIconButton, + dialog: tplDialog + }; + }; + + this.addButtonInfo = function (name, buttonInfo) { + tplButtonInfo[name] = buttonInfo; + }; + + this.addDialogInfo = function (name, dialogInfo) { + tplDialogInfo[name] = dialogInfo; + }; + }; + + return Renderer; +}); diff --git a/addons/website/static/lib/summernote/src/js/app.js b/addons/website/static/lib/summernote/src/js/app.js new file mode 100644 index 00000000000..0a93e94d7cc --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/app.js @@ -0,0 +1,42 @@ +require.config({ + baseUrl: 'src/js', + paths: { + jquery: '//code.jquery.com/jquery-1.9.1.min', + bootstrap: '//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min', + summernotevideo: '/../../plugin/summernote-ext-video', + CodeMirror: '//cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/codemirror', + CodeMirrorXml: '//cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/mode/xml/xml.min', + CodeMirrorFormatting: '//cdnjs.cloudflare.com/ajax/libs/codemirror/2.36.0/formatting.min' + }, + shim: { + bootstrap: ['jquery'], + CodeMirror: { exports: 'CodeMirror' }, + CodeMirrorXml: ['CodeMirror'], + CodeMirrorFormatting: ['CodeMirror', 'CodeMirrorXml'], + summernotevideo: ['summernote'] + }, + packages: [{ + name: 'summernote', + location: './', + main: 'summernote' + }] +}); + +require([ + 'jquery', 'bootstrap', 'CodeMirrorFormatting', + 'summernote', 'summernotevideo' +], function ($) { + // summernote + $('.summernote').summernote({ + height: 300, // set editable area's height + focus: true, // set focus editable area after summernote loaded + tabsize: 2, // size of tab + placeholder: 'Type your message here...', // set editable area's placeholder text + codemirror: { // code mirror options + mode: 'text/html', + htmlMode: true, + lineNumbers: true, + theme: 'monokai' + } + }); +}); diff --git a/addons/website/static/lib/summernote/src/js/core/agent.js b/addons/website/static/lib/summernote/src/js/core/agent.js new file mode 100644 index 00000000000..d0ba7ba1ef2 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/core/agent.js @@ -0,0 +1,97 @@ +define(['jquery'], function ($) { + if ('function' !== typeof Array.prototype.reduce) { + /** + * Array.prototype.reduce fallback + * + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce + */ + Array.prototype.reduce = function (callback, optInitialValue) { + var idx, value, length = this.length >>> 0, isValueSet = false; + if (1 < arguments.length) { + value = optInitialValue; + isValueSet = true; + } + for (idx = 0; length > idx; ++idx) { + if (this.hasOwnProperty(idx)) { + if (isValueSet) { + value = callback(value, this[idx], idx, this); + } else { + value = this[idx]; + isValueSet = true; + } + } + } + if (!isValueSet) { + throw new TypeError('Reduce of empty array with no initial value'); + } + return value; + }; + } + + if ('function' !== typeof Array.prototype.filter) { + Array.prototype.filter = function (fun/*, thisArg*/) { + if (this === void 0 || this === null) { + throw new TypeError(); + } + + var t = Object(this); + var len = t.length >>> 0; + if (typeof fun !== 'function') { + throw new TypeError(); + } + + var res = []; + var thisArg = arguments.length >= 2 ? arguments[1] : void 0; + for (var i = 0; i < len; i++) { + if (i in t) { + var val = t[i]; + if (fun.call(thisArg, val, i, t)) { + res.push(val); + } + } + } + + return res; + }; + } + + var isSupportAmd = typeof define === 'function' && define.amd; + + /** + * returns whether font is installed or not. + * @param {String} fontName + * @return {Boolean} + */ + var isFontInstalled = function (fontName) { + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var $tester = $('
    ').css({ + position: 'absolute', + left: '-9999px', + top: '-9999px', + fontSize: '200px' + }).text('mmmmmmmmmwwwwwww').appendTo(document.body); + + var originalWidth = $tester.css('fontFamily', testFontName).width(); + var width = $tester.css('fontFamily', fontName + ',' + testFontName).width(); + + $tester.remove(); + + return originalWidth !== width; + }; + + /** + * Object which check platform and agent + */ + var agent = { + isMac: navigator.appVersion.indexOf('Mac') > -1, + isMSIE: navigator.userAgent.indexOf('MSIE') > -1 || navigator.userAgent.indexOf('Trident') > -1, + isFF: navigator.userAgent.indexOf('Firefox') > -1, + jqueryVersion: parseFloat($.fn.jquery), + isSupportAmd: isSupportAmd, + hasCodeMirror: isSupportAmd ? require.specified('CodeMirror') : !!window.CodeMirror, + isFontInstalled: isFontInstalled, + isW3CRangeSupport: !!document.createRange + }; + + return agent; +}); diff --git a/addons/website/static/lib/summernote/src/js/core/async.js b/addons/website/static/lib/summernote/src/js/core/async.js new file mode 100644 index 00000000000..9df0c8e6895 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/core/async.js @@ -0,0 +1,53 @@ +define('summernote/core/async', function () { + /** + * Async functions which returns `Promise` + */ + var async = (function () { + /** + * read contents of file as representing URL + * + * @param {File} file + * @return {Promise} - then: sDataUrl + */ + var readFileAsDataURL = function (file) { + return $.Deferred(function (deferred) { + $.extend(new FileReader(), { + onload: function (e) { + var sDataURL = e.target.result; + deferred.resolve(sDataURL); + }, + onerror: function () { + deferred.reject(this); + } + }).readAsDataURL(file); + }).promise(); + }; + + /** + * create `` from url string + * + * @param {String} sUrl + * @return {Promise} - then: $image + */ + var createImage = function (sUrl, filename) { + return $.Deferred(function (deferred) { + $('').one('load', function () { + deferred.resolve($(this)); + }).one('error abort', function () { + deferred.reject($(this).detach()); + }).css({ + display: 'none' + }).appendTo(document.body) + .attr('src', sUrl) + .attr('data-filename', filename); + }).promise(); + }; + + return { + readFileAsDataURL: readFileAsDataURL, + createImage: createImage + }; + })(); + + return async; +}); diff --git a/addons/website/static/lib/summernote/src/js/core/dom.js b/addons/website/static/lib/summernote/src/js/core/dom.js new file mode 100644 index 00000000000..fbd751ec24b --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/core/dom.js @@ -0,0 +1,864 @@ +define([ + 'summernote/core/func', + 'summernote/core/list', + 'summernote/core/agent' +], function (func, list, agent) { + + var NBSP_CHAR = String.fromCharCode(160); + var ZERO_WIDTH_NBSP_CHAR = '\ufeff'; + + /** + * Dom functions + */ + var dom = (function () { + /** + * returns whether node is `note-editable` or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isEditable = function (node) { + return node && $(node).hasClass('note-editable'); + }; + + /** + * returns whether node is `note-control-sizing` or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isControlSizing = function (node) { + return node && $(node).hasClass('note-control-sizing'); + }; + + /** + * build layoutInfo from $editor(.note-editor) + * + * @param {jQuery} $editor + * @return {Object} + */ + var buildLayoutInfo = function ($editor) { + var makeFinder; + + // air mode + if ($editor.hasClass('note-air-editor')) { + var id = list.last($editor.attr('id').split('-')); + makeFinder = function (sIdPrefix) { + return function () { return $(sIdPrefix + id); }; + }; + + return { + editor: function () { return $editor; }, + editable: function () { return $editor; }, + popover: makeFinder('#note-popover-'), + handle: makeFinder('#note-handle-'), + dialog: makeFinder('#note-dialog-') + }; + + // frame mode + } else { + makeFinder = function (sClassName) { + return function () { return $editor.find(sClassName); }; + }; + return { + editor: function () { return $editor; }, + dropzone: makeFinder('.note-dropzone'), + toolbar: makeFinder('.note-toolbar'), + editable: makeFinder('.note-editable'), + codable: makeFinder('.note-codable'), + statusbar: makeFinder('.note-statusbar'), + popover: makeFinder('.note-popover'), + handle: makeFinder('.note-handle'), + dialog: makeFinder('.note-dialog') + }; + } + }; + + /** + * returns predicate which judge whether nodeName is same + * + * @param {String} nodeName + * @return {String} + */ + var makePredByNodeName = function (nodeName) { + nodeName = nodeName.toUpperCase(); + return function (node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; + }; + + var isText = function (node) { + return node && node.nodeType === 3; + }; + + /** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + var isVoid = function (node) { + return node && /^BR|^IMG|^HR/.test(node.nodeName.toUpperCase()); + }; + + var isPara = function (node) { + if (isEditable(node)) { + return false; + } + + // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); + }; + + var isLi = makePredByNodeName('LI'); + + var isPurePara = function (node) { + return isPara(node) && !isLi(node); + }; + + var isInline = function (node) { + return !isBodyContainer(node) && !isList(node) && !isPara(node); + }; + + var isList = function (node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); + }; + + var isCell = function (node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); + }; + + var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + + var isBodyContainer = function (node) { + return isCell(node) || isBlockquote(node) || isEditable(node); + }; + + var isAnchor = makePredByNodeName('A'); + + var isParaInline = function (node) { + return isInline(node) && !!ancestor(node, isPara); + }; + + var isBodyInline = function (node) { + return isInline(node) && !ancestor(node, isPara); + }; + + var isBody = makePredByNodeName('BODY'); + + /** + * blank HTML for cursor position + */ + var blankHTML = agent.isMSIE ? ' ' : '
    '; + + /** + * returns #text's text size or element's childNodes size + * + * @param {Node} node + */ + var nodeLength = function (node) { + if (isText(node)) { + return node.nodeValue.length; + } + + return node.childNodes.length; + }; + + /** + * returns whether node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isEmpty = function (node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!dom.isText(node) && len === 1 && node.innerHTML === blankHTML) { + // ex)


    ,
    + return true; + } + + return false; + }; + + /** + * padding blankHTML if node is empty (for cursor position) + */ + var paddingBlankHTML = function (node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } + }; + + /** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var ancestor = function (node, pred) { + while (node) { + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listAncestor = function (node, pred) { + pred = pred || func.fail; + + var ancestors = []; + ancestor(node, function (el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; + }; + + /** + * find farthest ancestor predicate hit + */ + var lastAncestor = function (node, pred) { + var ancestors = listAncestor(node); + return list.last(ancestors.filter(pred)); + }; + + /** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + var commonAncestor = function (nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + for (var n = nodeB; n; n = n.parentNode) { + if ($.inArray(n, ancestors) > -1) { return n; } + } + return null; // difference document area + }; + + /** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listPrev = function (node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.previousSibling; + } + return nodes; + }; + + /** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listNext = function (node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.nextSibling; + } + return nodes; + }; + + /** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listDescendant = function (node, pred) { + var descendents = []; + pred = pred || func.ok; + + // start DFS(depth first search) with node + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendents.push(current); + } + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendents; + }; + + /** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + var wrap = function (node, wrapperName) { + var parent = node.parentNode; + var wrapper = $('<' + wrapperName + '>')[0]; + + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + + return wrapper; + }; + + /** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + var insertAfter = function (node, preceding) { + var next = preceding.nextSibling, parent = preceding.parentNode; + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + return node; + }; + + /** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + var appendChildNodes = function (node, aChild) { + $.each(aChild, function (idx, child) { + node.appendChild(child); + }); + return node; + }; + + /** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isLeftEdgePoint = function (point) { + return point.offset === 0; + }; + + /** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isRightEdgePoint = function (point) { + return point.offset === nodeLength(point.node); + }; + + /** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isEdgePoint = function (point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); + }; + + /** + * returns wheter node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isLeftEdgeOf = function (node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== 0) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isRightEdgeOf = function (node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns offset from parent. + * + * @param {Node} node + */ + var position = function (node) { + var offset = 0; + while ((node = node.previousSibling)) { + offset += 1; + } + return offset; + }; + + var hasChildren = function (node) { + return !!(node && node.childNodes && node.childNodes.length); + }; + + /** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var prevPoint = function (point, isSkipInnerOffset) { + var node, offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var nextPoint = function (point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node) + 1; + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + var isSamePoint = function (pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; + }; + + /** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isVisiblePoint = function (point) { + if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; + }; + + /** + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var prevPointUntil = function (point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = prevPoint(point); + } + + return null; + }; + + /** + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var nextPointUntil = function (point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = nextPoint(point); + } + + return null; + }; + + /** + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + var walkPoint = function (startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && + startPoint.node !== point.node && + endPoint.node !== point.node; + point = nextPoint(point, isSkipOffset); + } + }; + + /** + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + var makeOffsetPath = function (ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return $.map(ancestors, position).reverse(); + }; + + /** + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} aOffset - offsetPath + */ + var fromOffsetPath = function (ancestor, aOffset) { + var current = ancestor; + for (var i = 0, len = aOffset.length; i < len; i++) { + if (current.childNodes.length <= aOffset[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[aOffset[i]]; + } + } + return current; + }; + + /** + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Boolean} [isSkipPaddingBlankHTML] + * @return {Node} right node of boundaryPoint + */ + var splitNode = function (point, isSkipPaddingBlankHTML) { + // split #text + if (isText(point.node)) { + // edge case + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + + return point.node.splitText(point.offset); + } + + // split element + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + return clone; + }; + + /** + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Boolean} [isSkipPaddingBlankHTML] + * @return {Node} right node of boundaryPoint + */ + var splitTree = function (root, point, isSkipPaddingBlankHTML) { + // ex) [#text, ,

    ] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, isSkipPaddingBlankHTML); + } + + return ancestors.reduce(function (node, parent) { + var clone = insertAfter(parent.cloneNode(false), parent); + + if (node === point.node) { + node = splitNode(point, isSkipPaddingBlankHTML); + } + + appendChildNodes(clone, listNext(node)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(parent); + paddingBlankHTML(clone); + } + return clone; + }); + }; + + var create = function (nodeName) { + return document.createElement(nodeName); + }; + + var createText = function (text) { + return document.createTextNode(text); + }; + + /** + * remove node, (isRemoveChild: remove child or not) + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + var remove = function (node, isRemoveChild) { + if (!node || !node.parentNode) { return; } + if (node.removeNode) { return node.removeNode(isRemoveChild); } + + var parent = node.parentNode; + if (!isRemoveChild) { + var nodes = []; + var i, len; + for (i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (i = 0, len = nodes.length; i < len; i++) { + parent.insertBefore(nodes[i], node); + } + } + + parent.removeChild(node); + }; + + /** + * @param {Node} node + * @param {Function} pred + */ + var removeWhile = function (node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } + }; + + /** + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + var replace = function (node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, list.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + + return newNode; + }; + + var isTextarea = makePredByNodeName('TEXTAREA'); + + /** + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + var html = function ($node, isNewlineOnBlock) { + var markup = isTextarea($node[0]) ? $node.val() : $node.html(); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function (match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && + !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + + return match + ((isEndOfInlineContainer || isBlockNode) ? '\n' : ''); + }); + markup = $.trim(markup); + } + + return markup; + }; + + var value = function ($textarea) { + var val = $textarea.val(); + // strip line breaks + return val.replace(/[\n\r]/g, ''); + }; + + return { + NBSP_CHAR: NBSP_CHAR, + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + blank: blankHTML, + emptyPara: '

    ' + blankHTML + '

    ', + isEditable: isEditable, + isControlSizing: isControlSizing, + buildLayoutInfo: buildLayoutInfo, + isText: isText, + isPara: isPara, + isPurePara: isPurePara, + isInline: isInline, + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isList: isList, + isTable: makePredByNodeName('TABLE'), + isCell: isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + isEmpty: isEmpty, + isEmptyAnchor: func.and(isAnchor, isEmpty), + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + prevPoint: prevPoint, + nextPoint: nextPoint, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + walkPoint: walkPoint, + ancestor: ancestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + create: create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: replace, + html: html, + value: value + }; + })(); + + return dom; +}); diff --git a/addons/website/static/lib/summernote/src/js/core/func.js b/addons/website/static/lib/summernote/src/js/core/func.js new file mode 100644 index 00000000000..1acb9f98e97 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/core/func.js @@ -0,0 +1,112 @@ +define('summernote/core/func', function () { + /** + * func utils (for high-order func's arg) + */ + var func = (function () { + var eq = function (itemA) { + return function (itemB) { + return itemA === itemB; + }; + }; + + var eq2 = function (itemA, itemB) { + return itemA === itemB; + }; + + var peq2 = function (propName) { + return function (itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; + }; + + var ok = function () { + return true; + }; + + var fail = function () { + return false; + }; + + var not = function (f) { + return function () { + return !f.apply(f, arguments); + }; + }; + + var and = function (fA, fB) { + return function (item) { + return fA(item) && fB(item); + }; + }; + + var self = function (a) { + return a; + }; + + var idCounter = 0; + + /** + * generate a globally-unique id + * + * @param {String} [prefix] + */ + var uniqueId = function (prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + /** + * returns bnd (bounds) from rect + * + * - IE Compatability Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + var rect2bnd = function (rect) { + var $document = $(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + }; + + /** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + var invertObject = function (obj) { + var inverted = {}; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + inverted[obj[key]] = key; + } + } + return inverted; + }; + + return { + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: self, + not: not, + and: and, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject + }; + })(); + + return func; +}); diff --git a/addons/website/static/lib/summernote/src/js/core/key.js b/addons/website/static/lib/summernote/src/js/core/key.js new file mode 100644 index 00000000000..80631125bfa --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/core/key.js @@ -0,0 +1,49 @@ +define([ + 'summernote/core/list' +], function (list) { + /** + * Object for keycodes. + */ + var key = { + isEdit: function (keyCode) { + return list.contains([8, 9, 13, 32], keyCode); + }, + nameFromCode: { + '8': 'BACKSPACE', + '9': 'TAB', + '13': 'ENTER', + '32': 'SPACE', + + // Number: 0-9 + '48': 'NUM0', + '49': 'NUM1', + '50': 'NUM2', + '51': 'NUM3', + '52': 'NUM4', + '53': 'NUM5', + '54': 'NUM6', + '55': 'NUM7', + '56': 'NUM8', + + // Alphabet: a-z + '66': 'B', + '69': 'E', + '73': 'I', + '74': 'J', + '75': 'K', + '76': 'L', + '82': 'R', + '83': 'S', + '85': 'U', + '89': 'Y', + '90': 'Z', + + '191': 'SLASH', + '219': 'LEFTBRACKET', + '220': 'BACKSLASH', + '221': 'RIGHTBRACKET' + } + }; + + return key; +}); diff --git a/addons/website/static/lib/summernote/src/js/core/list.js b/addons/website/static/lib/summernote/src/js/core/list.js new file mode 100644 index 00000000000..cc78781ea7f --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/core/list.js @@ -0,0 +1,180 @@ +define(['summernote/core/func'], function (func) { + /** + * list utils + */ + var list = (function () { + /** + * returns the first item of an array. + * + * @param {Array} array + */ + var head = function (array) { + return array[0]; + }; + + /** + * returns the last item of an array. + * + * @param {Array} array + */ + var last = function (array) { + return array[array.length - 1]; + }; + + /** + * returns everything but the last entry of the array. + * + * @param {Array} array + */ + var initial = function (array) { + return array.slice(0, array.length - 1); + }; + + /** + * returns the rest of the items in an array. + * + * @param {Array} array + */ + var tail = function (array) { + return array.slice(1); + }; + + /** + * returns item of array + */ + var find = function (array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + var item = array[idx]; + if (pred(item)) { + return item; + } + } + }; + + /** + * returns true if all of the values in the array pass the predicate truth test. + */ + var all = function (array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!pred(array[idx])) { + return false; + } + } + return true; + }; + + /** + * returns true if the value is present in the list. + */ + var contains = function (array, item) { + return $.inArray(item, array) !== -1; + }; + + /** + * get sum from a list + * + * @param {Array} array - array + * @param {Function} fn - iterator + */ + var sum = function (array, fn) { + fn = fn || func.self; + return array.reduce(function (memo, v) { + return memo + fn(v); + }, 0); + }; + + /** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + var from = function (collection) { + var result = [], idx = -1, length = collection.length; + while (++idx < length) { + result[idx] = collection[idx]; + } + return result; + }; + + /** + * cluster elements by predicate function. + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + var clusterBy = function (array, fn) { + if (!array.length) { return []; } + var aTail = tail(array); + return aTail.reduce(function (memo, v) { + var aLast = last(memo); + if (fn(last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + return memo; + }, [[head(array)]]); + }; + + /** + * returns a copy of the array with all falsy values removed + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + var compact = function (array) { + var aResult = []; + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (array[idx]) { aResult.push(array[idx]); } + } + return aResult; + }; + + /** + * produces a duplicate-free version of the array + * + * @param {Array} array + */ + var unique = function (array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + + return results; + }; + + /** + * returns next item. + * @param {Array} array + */ + var next = function (array, item) { + var idx = array.indexOf(item); + if (idx === -1) { return null; } + + return array[idx + 1]; + }; + + /** + * returns prev item. + * @param {Array} array + */ + var prev = function (array, item) { + var idx = array.indexOf(item); + if (idx === -1) { return null; } + + return array[idx - 1]; + }; + + + return { head: head, last: last, initial: initial, tail: tail, + prev: prev, next: next, find: find, contains: contains, + all: all, sum: sum, from: from, + clusterBy: clusterBy, compact: compact, unique: unique }; + })(); + + return list; +}); diff --git a/addons/website/static/lib/summernote/src/js/core/range.js b/addons/website/static/lib/summernote/src/js/core/range.js new file mode 100644 index 00000000000..785c063f48b --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/core/range.js @@ -0,0 +1,629 @@ +define([ + 'summernote/core/agent', + 'summernote/core/func', + 'summernote/core/list', + 'summernote/core/dom' +], function (agent, func, list, dom) { + + /** + * Data structure + * - {BoundaryPoint}: a point of dom tree + * - {BoundaryPoints}: two boundaryPoints corresponding to the start and the end of the Range + * + * @see http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position + */ + var range = (function () { + + /** + * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js + * + * @param {TextRange} textRange + * @param {Boolean} isStart + * @return {BoundaryPoint} + * + * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx + */ + var textRangeToPoint = function (textRange, isStart) { + var container = textRange.parentElement(), offset; + + var tester = document.body.createTextRange(), prevContainer; + var childNodes = list.from(container.childNodes); + for (offset = 0; offset < childNodes.length; offset++) { + if (dom.isText(childNodes[offset])) { + continue; + } + tester.moveToElementText(childNodes[offset]); + if (tester.compareEndPoints('StartToStart', textRange) >= 0) { + break; + } + prevContainer = childNodes[offset]; + } + + if (offset !== 0 && dom.isText(childNodes[offset - 1])) { + var textRangeStart = document.body.createTextRange(), curTextNode = null; + textRangeStart.moveToElementText(prevContainer || container); + textRangeStart.collapse(!prevContainer); + curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild; + + var pointTester = textRange.duplicate(); + pointTester.setEndPoint('StartToStart', textRangeStart); + var textCount = pointTester.text.replace(/[\r\n]/g, '').length; + + while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + /* jshint ignore:start */ + var dummy = curTextNode.nodeValue; // enforce IE to re-reference curTextNode, hack + /* jshint ignore:end */ + + if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) && + textCount === curTextNode.nodeValue.length) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + container = curTextNode; + offset = textCount; + } + + return { + cont: container, + offset: offset + }; + }; + + /** + * return TextRange from boundary point (inspired by google closure-library) + * @param {BoundaryPoint} point + * @return {TextRange} + */ + var pointToTextRange = function (point) { + var textRangeInfo = function (container, offset) { + var node, isCollapseToStart; + + if (dom.isText(container)) { + var prevTextNodes = dom.listPrev(container, func.not(dom.isText)); + var prevContainer = list.last(prevTextNodes).previousSibling; + node = prevContainer || container.parentNode; + offset += list.sum(list.tail(prevTextNodes), dom.nodeLength); + isCollapseToStart = !prevContainer; + } else { + node = container.childNodes[offset] || container; + if (dom.isText(node)) { + return textRangeInfo(node, 0); + } + + offset = 0; + isCollapseToStart = false; + } + + return { + node: node, + collapseToStart: isCollapseToStart, + offset: offset + }; + }; + + var textRange = document.body.createTextRange(); + var info = textRangeInfo(point.node, point.offset); + + textRange.moveToElementText(info.node); + textRange.collapse(info.collapseToStart); + textRange.moveStart('character', info.offset); + return textRange; + }; + + /** + * Wrapped Range + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + var WrappedRange = function (sc, so, ec, eo) { + this.sc = sc; + this.so = so; + this.ec = ec; + this.eo = eo; + + // nativeRange: get nativeRange from sc, so, ec, eo + var nativeRange = function () { + if (agent.isW3CRangeSupport) { + var w3cRange = document.createRange(); + w3cRange.setStart(sc, so); + w3cRange.setEnd(ec, eo); + + return w3cRange; + } else { + var textRange = pointToTextRange({ + node: sc, + offset: so + }); + + textRange.setEndPoint('EndToEnd', pointToTextRange({ + node: ec, + offset: eo + })); + + return textRange; + } + }; + + this.getPoints = function () { + return { + sc: sc, + so: so, + ec: ec, + eo: eo + }; + }; + + this.getStartPoint = function () { + return { + node: sc, + offset: so + }; + }; + + this.getEndPoint = function () { + return { + node: ec, + offset: eo + }; + }; + + /** + * select update visible range + */ + this.select = function () { + var nativeRng = nativeRange(); + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + selection.addRange(nativeRng); + } else { + nativeRng.select(); + } + }; + + /** + * @return {WrappedRange} + */ + this.normalize = function () { + var getVisiblePoint = function (point) { + if (!dom.isVisiblePoint(point)) { + if (dom.isLeftEdgePoint(point)) { + point = dom.nextPointUntil(point, dom.isVisiblePoint); + } else if (dom.isRightEdgePoint(point)) { + point = dom.prevPointUntil(point, dom.isVisiblePoint); + } + } + return point; + }; + + var startPoint = getVisiblePoint(this.getStartPoint()); + var endPoint = getVisiblePoint(this.getStartPoint()); + + return new WrappedRange( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ); + }; + + /** + * returns matched nodes on range + * + * @param {Function} [pred] - predicate function + * @param {Object} [options] + * @param {Boolean} [options.includeAncestor] + * @param {Boolean} [options.fullyContains] + * @return {Node[]} + */ + this.nodes = function (pred, options) { + pred = pred || func.ok; + + var includeAncestor = options && options.includeAncestor; + var fullyContains = options && options.fullyContains; + + // TODO compare points and sort + var startPoint = this.getStartPoint(); + var endPoint = this.getEndPoint(); + + var nodes = []; + var leftEdgeNodes = []; + + dom.walkPoint(startPoint, endPoint, function (point) { + if (dom.isEditable(point.node)) { + return; + } + + var node; + if (fullyContains) { + if (dom.isLeftEdgePoint(point)) { + leftEdgeNodes.push(point.node); + } + if (dom.isRightEdgePoint(point) && list.contains(leftEdgeNodes, point.node)) { + node = point.node; + } + } else if (includeAncestor) { + node = dom.ancestor(point.node, pred); + } else { + node = point.node; + } + + if (node && pred(node)) { + nodes.push(node); + } + }, true); + + return list.unique(nodes); + }; + + /** + * returns commonAncestor of range + * @return {Element} - commonAncestor + */ + this.commonAncestor = function () { + return dom.commonAncestor(sc, ec); + }; + + /** + * returns expanded range by pred + * + * @param {Function} pred - predicate function + * @return {WrappedRange} + */ + this.expand = function (pred) { + var startAncestor = dom.ancestor(sc, pred); + var endAncestor = dom.ancestor(ec, pred); + + if (!startAncestor && !endAncestor) { + return new WrappedRange(sc, so, ec, eo); + } + + var boundaryPoints = this.getPoints(); + + if (startAncestor) { + boundaryPoints.sc = startAncestor; + boundaryPoints.so = 0; + } + + if (endAncestor) { + boundaryPoints.ec = endAncestor; + boundaryPoints.eo = dom.nodeLength(endAncestor); + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * @param {Boolean} isCollapseToStart + * @return {WrappedRange} + */ + this.collapse = function (isCollapseToStart) { + if (isCollapseToStart) { + return new WrappedRange(sc, so, sc, so); + } else { + return new WrappedRange(ec, eo, ec, eo); + } + }; + + /** + * splitText on range + */ + this.splitText = function () { + var isSameContainer = sc === ec; + var boundaryPoints = this.getPoints(); + + if (dom.isText(ec) && !dom.isEdgePoint(this.getEndPoint())) { + ec.splitText(eo); + } + + if (dom.isText(sc) && !dom.isEdgePoint(this.getStartPoint())) { + boundaryPoints.sc = sc.splitText(so); + boundaryPoints.so = 0; + + if (isSameContainer) { + boundaryPoints.ec = boundaryPoints.sc; + boundaryPoints.eo = eo - so; + } + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * delete contents on range + * @return {WrappedRange} + */ + this.deleteContents = function () { + if (this.isCollapsed()) { + return this; + } + + var rng = this.splitText(); + var nodes = rng.nodes(null, { + fullyContains: true + }); + + var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { + return !list.contains(nodes, point.node); + }); + + var emptyParents = []; + $.each(nodes, function (idx, node) { + // find empty parents + var parent = node.parentNode; + if (point.node !== parent && dom.nodeLength(parent) === 1) { + emptyParents.push(parent); + } + dom.remove(node, false); + }); + + // remove empty parents + $.each(emptyParents, function (idx, node) { + dom.remove(node, false); + }); + + return new WrappedRange( + point.node, + point.offset, + point.node, + point.offset + ); + }; + + /** + * makeIsOn: return isOn(pred) function + */ + var makeIsOn = function (pred) { + return function () { + var ancestor = dom.ancestor(sc, pred); + return !!ancestor && (ancestor === dom.ancestor(ec, pred)); + }; + }; + + // isOnEditable: judge whether range is on editable or not + this.isOnEditable = makeIsOn(dom.isEditable); + // isOnList: judge whether range is on list node or not + this.isOnList = makeIsOn(dom.isList); + // isOnAnchor: judge whether range is on anchor node or not + this.isOnAnchor = makeIsOn(dom.isAnchor); + // isOnAnchor: judge whether range is on cell node or not + this.isOnCell = makeIsOn(dom.isCell); + + /** + * @param {Function} pred + * @return {Boolean} + */ + this.isLeftEdgeOf = function (pred) { + if (!dom.isLeftEdgePoint(this.getStartPoint())) { + return false; + } + + var node = dom.ancestor(this.sc, pred); + return node && dom.isLeftEdgeOf(this.sc, node); + }; + + /** + * returns whether range was collapsed or not + */ + this.isCollapsed = function () { + return sc === ec && so === eo; + }; + + /** + * wrap inline nodes which children of body with paragraph + * + * @return {WrappedRange} + */ + this.wrapBodyInlineWithPara = function () { + if (dom.isBodyContainer(sc) && dom.isEmpty(sc)) { + sc.innerHTML = dom.emptyPara; + return new WrappedRange(sc.firstChild, 0); + } + + if (dom.isParaInline(sc) || dom.isPara(sc)) { + return this.normalize(); + } + + // find inline top ancestor + var topAncestor; + if (dom.isInline(sc)) { + var ancestors = dom.listAncestor(sc, func.not(dom.isInline)); + topAncestor = list.last(ancestors); + if (!dom.isInline(topAncestor)) { + topAncestor = ancestors[ancestors.length - 2] || sc.childNodes[so]; + } + } else { + topAncestor = sc.childNodes[so - 1]; + } + + // siblings not in paragraph + var inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse(); + inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline)); + + // wrap with paragraph + if (inlineSiblings.length) { + var para = dom.wrap(list.head(inlineSiblings), 'p'); + dom.appendChildNodes(para, list.tail(inlineSiblings)); + } + + return this.normalize(); + }; + + /** + * insert node at current cursor + * + * @param {Node} node + * @param {Boolean} [isInline] + * @return {Node} + */ + this.insertNode = function (node, isInline) { + var rng = this.wrapBodyInlineWithPara(); + var point = rng.getStartPoint(); + + var splitRoot, container, pivot; + if (isInline) { + container = dom.isPara(point.node) ? point.node : point.node.parentNode; + if (dom.isPara(point.node)) { + pivot = point.node.childNodes[point.offset]; + } else { + pivot = dom.splitTree(point.node, point); + } + } else { + // splitRoot will be childNode of container + var ancestors = dom.listAncestor(point.node, dom.isBodyContainer); + var topAncestor = list.last(ancestors) || point.node; + + if (dom.isBodyContainer(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } + pivot = splitRoot && dom.splitTree(splitRoot, point); + } + + if (pivot) { + pivot.parentNode.insertBefore(node, pivot); + } else { + container.appendChild(node); + } + + return node; + }; + + this.toString = function () { + var nativeRng = nativeRange(); + return agent.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text; + }; + + /** + * create offsetPath bookmark + * @param {Node} editable + */ + this.bookmark = function (editable) { + return { + s: { + path: dom.makeOffsetPath(editable, sc), + offset: so + }, + e: { + path: dom.makeOffsetPath(editable, ec), + offset: eo + } + }; + }; + + /** + * getClientRects + * @return {Rect[]} + */ + this.getClientRects = function () { + var nativeRng = nativeRange(); + return nativeRng.getClientRects(); + }; + }; + + return { + /** + * create Range Object From arguments or Browser Selection + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + create : function (sc, so, ec, eo) { + if (!arguments.length) { // from Browser Selection + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (selection.rangeCount === 0) { + return null; + } else if (dom.isBody(selection.anchorNode)) { + // Firefox: returns entire body as range on initialization. We won't never need it. + return null; + } + + var nativeRng = selection.getRangeAt(0); + sc = nativeRng.startContainer; + so = nativeRng.startOffset; + ec = nativeRng.endContainer; + eo = nativeRng.endOffset; + } else { // IE8: TextRange + var textRange = document.selection.createRange(); + var textRangeEnd = textRange.duplicate(); + textRangeEnd.collapse(false); + var textRangeStart = textRange; + textRangeStart.collapse(true); + + var startPoint = textRangeToPoint(textRangeStart, true), + endPoint = textRangeToPoint(textRangeEnd, false); + + // same visible point case: range was collapsed. + if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) && + dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) && + endPoint.node.nextSibling === startPoint.node) { + startPoint = endPoint; + } + + sc = startPoint.cont; + so = startPoint.offset; + ec = endPoint.cont; + eo = endPoint.offset; + } + } else if (arguments.length === 2) { //collapsed + ec = sc; + eo = so; + } + return new WrappedRange(sc, so, ec, eo); + }, + + /** + * create WrappedRange from node + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNode: function (node) { + return this.create(node, 0, node, 1); + }, + + /** + * create WrappedRange from Bookmark + * + * @param {Node} editable + * @param {Obkect} bookmark + * @return {WrappedRange} + */ + createFromBookmark : function (editable, bookmark) { + var sc = dom.fromOffsetPath(editable, bookmark.s.path); + var so = bookmark.s.offset; + var ec = dom.fromOffsetPath(editable, bookmark.e.path); + var eo = bookmark.e.offset; + return new WrappedRange(sc, so, ec, eo); + } + }; + })(); + + return range; +}); diff --git a/addons/website/static/lib/summernote/src/js/editing/Bullet.js b/addons/website/static/lib/summernote/src/js/editing/Bullet.js new file mode 100644 index 00000000000..d0b0f2e9169 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/editing/Bullet.js @@ -0,0 +1,201 @@ +define([ + 'summernote/core/list', + 'summernote/core/func', + 'summernote/core/dom', + 'summernote/core/range' +], function (list, func, dom, range) { + + var Bullet = function () { + /** + * toggle ordered list + * @type command + */ + this.insertOrderedList = function () { + this.toggleList('OL'); + }; + + /** + * toggle unordered list + * @type command + */ + this.insertUnorderedList = function () { + this.toggleList('UL'); + }; + + /** + * indent + * @type command + */ + this.indent = function () { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function (idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.wrapList(paras, head.parentNode.nodeName); + } else { + $.each(paras, function (idx, para) { + $(para).css('marginLeft', function (idx, val) { + return (parseInt(val, 10) || 0) + 25; + }); + }); + } + }); + + rng.select(); + }; + + /** + * outdent + * @type command + */ + this.outdent = function () { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function (idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.releaseList([paras]); + } else { + $.each(paras, function (idx, para) { + $(para).css('marginLeft', function (idx, val) { + val = (parseInt(val, 10) || 0); + return val > 25 ? val - 25 : ''; + }); + }); + } + }); + + rng.select(); + }; + + /** + * toggle list + * @param {String} listName - OL or UL + */ + this.toggleList = function (listName) { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + // paragraph to list + if (list.find(paras, dom.isPurePara)) { + $.each(clustereds, function (idx, paras) { + self.wrapList(paras, listName); + }); + // list to paragraph or change list style + } else { + var diffLists = rng.nodes(dom.isList, { + includeAncestor: true + }).filter(function (listNode) { + return !$.nodeName(listNode, listName); + }); + + if (diffLists.length) { + $.each(diffLists, function (idx, listNode) { + dom.replace(listNode, listName); + }); + } else { + this.releaseList(clustereds, true); + } + } + + rng.select(); + }; + + /** + * @param {Node[]} paras + * @param {String} listName + */ + this.wrapList = function (paras, listName) { + var head = list.head(paras); + var last = list.last(paras); + + var prevList = dom.isList(head.previousSibling) && head.previousSibling; + var nextList = dom.isList(last.nextSibling) && last.nextSibling; + + var listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last); + + // P to LI + paras = $.map(paras, function (para) { + return dom.isPurePara(para) ? dom.replace(para, 'LI') : para; + }); + + // append to list(
      ,
        ) + dom.appendChildNodes(listNode, paras); + + if (nextList) { + dom.appendChildNodes(listNode, list.from(nextList.childNodes)); + dom.remove(nextList); + } + }; + + /** + * @param {Array[]} clustereds + * @param {Boolean} isEscapseToBody + * @return {Node[]} + */ + this.releaseList = function (clustereds, isEscapseToBody) { + var releasedParas = []; + + $.each(clustereds, function (idx, paras) { + var head = list.head(paras); + var last = list.last(paras); + + var headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : + head.parentNode; + var lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, { + node: last.parentNode, + offset: dom.position(last) + 1 + }, true) : null; + + var middleList = dom.splitTree(headList, { + node: head.parentNode, + offset: dom.position(head) + }, true); + + paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi) : + list.from(middleList.childNodes).filter(dom.isLi); + + // LI to P + if (isEscapseToBody || !dom.isList(headList.parentNode)) { + paras = $.map(paras, function (para) { + return dom.replace(para, 'P'); + }); + } + + $.each(list.from(paras).reverse(), function (idx, para) { + dom.insertAfter(para, headList); + }); + + // remove empty lists + var rootLists = list.compact([headList, middleList, lastList]); + $.each(rootLists, function (idx, rootList) { + var listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList)); + $.each(listNodes.reverse(), function (idx, listNode) { + if (!dom.nodeLength(listNode)) { + dom.remove(listNode, true); + } + }); + }); + + releasedParas = releasedParas.concat(paras); + }); + + return releasedParas; + }; + }; + + return Bullet; +}); + diff --git a/addons/website/static/lib/summernote/src/js/editing/Editor.js b/addons/website/static/lib/summernote/src/js/editing/Editor.js new file mode 100644 index 00000000000..35af842afe8 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/editing/Editor.js @@ -0,0 +1,457 @@ +define([ + 'summernote/core/agent', + 'summernote/core/func', + 'summernote/core/list', + 'summernote/core/dom', + 'summernote/core/range', + 'summernote/core/async', + 'summernote/editing/Style', + 'summernote/editing/Typing', + 'summernote/editing/Table', + 'summernote/editing/Bullet' +], function (agent, func, list, dom, range, async, + Style, Typing, Table, Bullet) { + /** + * Editor + * @class + */ + var Editor = function () { + + var style = new Style(); + var table = new Table(); + var typing = new Typing(); + var bullet = new Bullet(); + + /** + * create range + */ + this.createRange = function ($editable) { + $editable.focus(); + return range.create(); + }; + + /** + * save current range + * + * @param {jQuery} $editable + */ + this.saveRange = function ($editable, thenCollapse) { + $editable.focus(); + $editable.data('range', range.create()); + if (thenCollapse) { + range.create().collapse().select(); + } + }; + + /** + * restore lately range + * + * @param {jQuery} $editable + */ + this.restoreRange = function ($editable) { + var rng = $editable.data('range'); + if (rng) { + rng.select(); + $editable.focus(); + } + }; + + /** + * current style + * @param {Node} target + */ + this.currentStyle = function (target) { + var rng = range.create(); + return rng ? rng.isOnEditable() && style.current(rng, target) : false; + }; + + var triggerOnChange = this.triggerOnChange = function ($editable) { + var onChange = $editable.data('callbacks').onChange; + if (onChange) { + onChange($editable.html(), $editable); + } + }; + + /** + * undo + * @param {jQuery} $editable + */ + this.undo = function ($editable) { + $editable.data('NoteHistory').undo(); + triggerOnChange($editable); + }; + + /** + * redo + * @param {jQuery} $editable + */ + this.redo = function ($editable) { + $editable.data('NoteHistory').redo(); + triggerOnChange($editable); + }; + + /** + * after command + * @param {jQuery} $editable + */ + var afterCommand = this.afterCommand = function ($editable) { + $editable.data('NoteHistory').recordUndo(); + triggerOnChange($editable); + }; + + /* jshint ignore:start */ + // native commands(with execCommand), generate function for execCommand + var commands = ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', + 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', + 'formatBlock', 'removeFormat', + 'backColor', 'foreColor', 'insertHorizontalRule', 'fontName']; + + for (var idx = 0, len = commands.length; idx < len; idx ++) { + this[commands[idx]] = (function (sCmd) { + return function ($editable, value) { + document.execCommand(sCmd, false, value); + + afterCommand($editable); + }; + })(commands[idx]); + } + /* jshint ignore:end */ + + /** + * handle tab key + * + * @param {jQuery} $editable + * @param {Object} options + */ + this.tab = function ($editable, options) { + var rng = range.create(); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng); + } else { + typing.insertTab($editable, rng, options.tabsize); + afterCommand($editable); + } + }; + + /** + * handle shift+tab key + */ + this.untab = function () { + var rng = range.create(); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng, true); + } + }; + + /** + * insert paragraph + * + * @param {Node} $editable + */ + this.insertParagraph = function ($editable) { + typing.insertParagraph($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.insertOrderedList = function ($editable) { + bullet.insertOrderedList($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.insertUnorderedList = function ($editable) { + bullet.insertUnorderedList($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.indent = function ($editable) { + bullet.indent($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.outdent = function ($editable) { + bullet.outdent($editable); + afterCommand($editable); + }; + + /** + * insert image + * + * @param {jQuery} $editable + * @param {String} sUrl + */ + this.insertImage = function ($editable, sUrl, filename) { + async.createImage(sUrl, filename).then(function ($image) { + $image.css({ + display: '', + width: Math.min($editable.width(), $image.width()) + }); + range.create().insertNode($image[0]); + afterCommand($editable); + }).fail(function () { + var callbacks = $editable.data('callbacks'); + if (callbacks.onImageUploadError) { + callbacks.onImageUploadError(); + } + }); + }; + + /** + * insert node + * @param {Node} $editable + * @param {Node} node + * @param {Boolean} [isInline] + */ + this.insertNode = function ($editable, node, isInline) { + range.create().insertNode(node, isInline); + afterCommand($editable); + }; + + /** + * insert text + * @param {Node} $editable + * @param {String} text + */ + this.insertText = function ($editable, text) { + var textNode = this.createRange($editable).insertNode(dom.createText(text), true); + range.create(textNode, dom.nodeLength(textNode)).select(); + afterCommand($editable); + }; + + /** + * formatBlock + * + * @param {jQuery} $editable + * @param {String} tagName + */ + this.formatBlock = function ($editable, tagName) { + tagName = agent.isMSIE ? '<' + tagName + '>' : tagName; + document.execCommand('FormatBlock', false, tagName); + afterCommand($editable); + }; + + this.formatPara = function ($editable) { + this.formatBlock($editable, 'P'); + afterCommand($editable); + }; + + /* jshint ignore:start */ + for (var idx = 1; idx <= 6; idx ++) { + this['formatH' + idx] = function (idx) { + return function ($editable) { + this.formatBlock($editable, 'H' + idx); + }; + }(idx); + }; + /* jshint ignore:end */ + + /** + * fontsize + * FIXME: Still buggy + * + * @param {jQuery} $editable + * @param {String} value - px + */ + this.fontSize = function ($editable, value) { + document.execCommand('fontSize', false, 3); + if (agent.isFF) { + // firefox: to , buggy + $editable.find('font[size=3]').removeAttr('size').css('font-size', value + 'px'); + } else { + // chrome: to + $editable.find('span').filter(function () { + return this.style.fontSize === 'medium'; + }).css('font-size', value + 'px'); + } + + afterCommand($editable); + }; + + /** + * lineHeight + * @param {jQuery} $editable + * @param {String} value + */ + this.lineHeight = function ($editable, value) { + style.stylePara(range.create(), { + lineHeight: value + }); + afterCommand($editable); + }; + + /** + * unlink + * + * @type command + * + * @param {jQuery} $editable + */ + this.unlink = function ($editable) { + var rng = range.create(); + if (rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + rng = range.createFromNode(anchor); + rng.select(); + document.execCommand('unlink'); + + afterCommand($editable); + } + }; + + /** + * create link + * + * @type command + * + * @param {jQuery} $editable + * @param {Object} linkInfo + * @param {Object} options + */ + this.createLink = function ($editable, linkInfo, options) { + var linkUrl = linkInfo.url; + var linkText = linkInfo.text; + var isNewWindow = linkInfo.newWindow; + var rng = linkInfo.range; + + if (options.onCreateLink) { + linkUrl = options.onCreateLink(linkUrl); + } + + rng = rng.deleteContents(); + + // Create a new link when there is no anchor on range. + var anchor = rng.insertNode($('' + linkText + '')[0], true); + $(anchor).attr({ + href: linkUrl, + target: isNewWindow ? '_blank' : '' + }); + + range.createFromNode(anchor).select(); + afterCommand($editable); + }; + + /** + * returns link info + * + * @return {Object} + */ + this.getLinkInfo = function ($editable) { + $editable.focus(); + + var rng = range.create().expand(dom.isAnchor); + + // Get the first anchor on range(for edit). + var $anchor = $(list.head(rng.nodes(dom.isAnchor))); + + return { + range: rng, + text: rng.toString(), + isNewWindow: $anchor.length ? $anchor.attr('target') === '_blank' : true, + url: $anchor.length ? $anchor.attr('href') : '' + }; + }; + + this.color = function ($editable, sObjColor) { + var oColor = JSON.parse(sObjColor); + var foreColor = oColor.foreColor, backColor = oColor.backColor; + + if (foreColor) { document.execCommand('foreColor', false, foreColor); } + if (backColor) { document.execCommand('backColor', false, backColor); } + + afterCommand($editable); + }; + + this.insertTable = function ($editable, sDim) { + var dimension = sDim.split('x'); + var rng = range.create(); + rng = rng.deleteContents(); + rng.insertNode(table.createTable(dimension[0], dimension[1])); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + * @param {String} value + * @param {jQuery} $target + */ + this.floatMe = function ($editable, value, $target) { + $target.css('float', value); + afterCommand($editable); + }; + + this.imageShape = function ($editable, value, $target) { + $target.removeClass('img-rounded img-circle img-thumbnail'); + + if (value) { + $target.addClass(value); + } + + afterCommand($editable); + }; + + /** + * resize overlay element + * @param {jQuery} $editable + * @param {String} value + * @param {jQuery} $target - target element + */ + this.resize = function ($editable, value, $target) { + $target.css({ + width: value * 100 + '%', + height: '' + }); + + afterCommand($editable); + }; + + /** + * @param {Position} pos + * @param {jQuery} $target - target element + * @param {Boolean} [bKeepRatio] - keep ratio + */ + this.resizeTo = function (pos, $target, bKeepRatio) { + var imageSize; + if (bKeepRatio) { + var newRatio = pos.y / pos.x; + var ratio = $target.data('ratio'); + imageSize = { + width: ratio > newRatio ? pos.x : pos.y / ratio, + height: ratio > newRatio ? pos.x * ratio : pos.y + }; + } else { + imageSize = { + width: pos.x, + height: pos.y + }; + } + + $target.css(imageSize); + }; + + /** + * remove media object + * + * @param {jQuery} $editable + * @param {String} value - dummy argument (for keep interface) + * @param {jQuery} $target - target element + */ + this.removeMedia = function ($editable, value, $target) { + $target.detach(); + + afterCommand($editable); + }; + }; + + return Editor; +}); diff --git a/addons/website/static/lib/summernote/src/js/editing/History.js b/addons/website/static/lib/summernote/src/js/editing/History.js new file mode 100644 index 00000000000..ef8dd6016f1 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/editing/History.js @@ -0,0 +1,60 @@ +define(['summernote/core/range'], function (range) { + /** + * History + * @class + */ + var History = function ($editable) { + var stack = [], stackOffset = -1; + var editable = $editable[0]; + + var makeSnapshot = function () { + var rng = range.create(); + var emptyBookmark = {s: {path: [0], offset: 0}, e: {path: [0], offset: 0}}; + + return { + contents: $editable.html(), + bookmark: (rng ? rng.bookmark(editable) : emptyBookmark) + }; + }; + + var applySnapshot = function (snapshot) { + if (snapshot.contents !== null) { + $editable.html(snapshot.contents); + } + if (snapshot.bookmark !== null) { + range.createFromBookmark(editable, snapshot.bookmark).select(); + } + }; + + this.undo = function () { + if (0 < stackOffset) { + stackOffset--; + applySnapshot(stack[stackOffset]); + } + }; + + this.redo = function () { + if (stack.length - 1 > stackOffset) { + stackOffset++; + applySnapshot(stack[stackOffset]); + } + }; + + this.recordUndo = function () { + stackOffset++; + + // Wash out stack after stackOffset + if (stack.length > stackOffset) { + stack = stack.slice(0, stackOffset); + } + + // Create new snapshot and push it to the end + stack.push(makeSnapshot()); + }; + + // Create first undo stack + this.recordUndo(); + }; + + return History; +}); diff --git a/addons/website/static/lib/summernote/src/js/editing/Style.js b/addons/website/static/lib/summernote/src/js/editing/Style.js new file mode 100644 index 00000000000..ec0260c0317 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/editing/Style.js @@ -0,0 +1,93 @@ +define([ + 'summernote/core/agent', + 'summernote/core/dom' +], function (agent, dom) { + /** + * Style + * @class + */ + var Style = function () { + /** + * passing an array of style properties to .css() + * will result in an object of property-value pairs. + * (compability with version < 1.9) + * + * @param {jQuery} $obj + * @param {Array} propertyNames - An array of one or more CSS properties. + * @returns {Object} + */ + var jQueryCSS = function ($obj, propertyNames) { + if (agent.jqueryVersion < 1.9) { + var result = {}; + $.each(propertyNames, function (idx, propertyName) { + result[propertyName] = $obj.css(propertyName); + }); + return result; + } + return $obj.css.call($obj, propertyNames); + }; + + /** + * paragraph level style + * + * @param {WrappedRange} rng + * @param {Object} styleInfo + */ + this.stylePara = function (rng, styleInfo) { + $.each(rng.nodes(dom.isPara, { + includeAncestor: true + }), function (idx, para) { + $(para).css(styleInfo); + }); + }; + + /** + * get current style on cursor + * + * @param {WrappedRange} rng + * @param {Node} target - target element on event + * @return {Object} - object contains style properties. + */ + this.current = function (rng, target) { + var $cont = $(dom.isText(rng.sc) ? rng.sc.parentNode : rng.sc); + var properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height']; + var styleInfo = jQueryCSS($cont, properties) || {}; + + styleInfo['font-size'] = parseInt(styleInfo['font-size'], 10); + + // document.queryCommandState for toggle state + styleInfo['font-bold'] = document.queryCommandState('bold') ? 'bold' : 'normal'; + styleInfo['font-italic'] = document.queryCommandState('italic') ? 'italic' : 'normal'; + styleInfo['font-underline'] = document.queryCommandState('underline') ? 'underline' : 'normal'; + styleInfo['font-strikethrough'] = document.queryCommandState('strikeThrough') ? 'strikethrough' : 'normal'; + styleInfo['font-superscript'] = document.queryCommandState('superscript') ? 'superscript' : 'normal'; + styleInfo['font-subscript'] = document.queryCommandState('subscript') ? 'subscript' : 'normal'; + + // list-style-type to list-style(unordered, ordered) + if (!rng.isOnList()) { + styleInfo['list-style'] = 'none'; + } else { + var aOrderedType = ['circle', 'disc', 'disc-leading-zero', 'square']; + var isUnordered = $.inArray(styleInfo['list-style-type'], aOrderedType) > -1; + styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered'; + } + + var para = dom.ancestor(rng.sc, dom.isPara); + if (para && para.style['line-height']) { + styleInfo['line-height'] = para.style.lineHeight; + } else { + var lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10); + styleInfo['line-height'] = lineHeight.toFixed(1); + } + + styleInfo.image = dom.isImg(target) && target; + styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor); + styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable); + styleInfo.range = rng; + + return styleInfo; + }; + }; + + return Style; +}); diff --git a/addons/website/static/lib/summernote/src/js/editing/Table.js b/addons/website/static/lib/summernote/src/js/editing/Table.js new file mode 100644 index 00000000000..291f85128e5 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/editing/Table.js @@ -0,0 +1,50 @@ +define([ + 'summernote/core/dom', 'summernote/core/range', 'summernote/core/list' +], function (dom, range, list) { + /** + * Table + * @class + */ + var Table = function () { + /** + * handle tab key + * + * @param {WrappedRange} rng + * @param {Boolean} isShift + */ + this.tab = function (rng, isShift) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var table = dom.ancestor(cell, dom.isTable); + var cells = dom.listDescendant(table, dom.isCell); + + var nextCell = list[isShift ? 'prev' : 'next'](cells, cell); + if (nextCell) { + range.create(nextCell, 0).select(); + } + }; + + /** + * create empty table element + * + * @param {Number} rowCount + * @param {Number} colCount + * @return {Node} + */ + this.createTable = function (colCount, rowCount) { + var tds = [], tdHTML; + for (var idxCol = 0; idxCol < colCount; idxCol++) { + tds.push('' + dom.blank + ''); + } + tdHTML = tds.join(''); + + var trs = [], trHTML; + for (var idxRow = 0; idxRow < rowCount; idxRow++) { + trs.push('' + tdHTML + ''); + } + trHTML = trs.join(''); + return $('' + trHTML + '
        ')[0]; + }; + }; + return Table; +}); + diff --git a/addons/website/static/lib/summernote/src/js/editing/Typing.js b/addons/website/static/lib/summernote/src/js/editing/Typing.js new file mode 100644 index 00000000000..2a094cafa22 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/editing/Typing.js @@ -0,0 +1,65 @@ +define([ + 'summernote/core/dom', + 'summernote/core/range' +], function (dom, range) { + + var Typing = function () { + + /** + * @param {jQuery} $editable + * @param {WrappedRange} rng + * @param {Number} tabsize + */ + this.insertTab = function ($editable, rng, tabsize) { + var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR)); + rng = rng.deleteContents(); + rng.insertNode(tab, true); + + rng = range.create(tab, tabsize); + rng.select(); + }; + + /** + * insert paragraph + */ + this.insertParagraph = function () { + var rng = range.create(); + + // deleteContents on range. + rng = rng.deleteContents(); + + // Wrap range if it needs to be wrapped by paragraph + rng = rng.wrapBodyInlineWithPara(); + + // finding paragraph + var splitRoot = dom.ancestor(rng.sc, dom.isPara); + + var nextPara; + // on paragraph: split paragraph + if (splitRoot) { + nextPara = dom.splitTree(splitRoot, rng.getStartPoint()); + + var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor); + emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor)); + + $.each(emptyAnchors, function (idx, anchor) { + dom.remove(anchor); + }); + // no paragraph: insert empty paragraph + } else { + var next = rng.sc.childNodes[rng.so]; + nextPara = $(dom.emptyPara)[0]; + if (next) { + rng.sc.insertBefore(nextPara, next); + } else { + rng.sc.appendChild(nextPara); + } + } + + range.create(nextPara, 0).normalize().select(); + }; + + }; + + return Typing; +}); diff --git a/addons/website/static/lib/summernote/src/js/intro.js b/addons/website/static/lib/summernote/src/js/intro.js new file mode 100644 index 00000000000..dd5e9763077 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/intro.js @@ -0,0 +1,21 @@ +/** + * Super simple wysiwyg editor on Bootstrap v@VERSION + * http://hackerwins.github.io/summernote/ + * + * summernote.js + * Copyright 2013-2014 Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license./ + * + * Date: @DATE + */ +(function (factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals: jQuery + factory(window.jQuery); + } +}(function ($) { + 'use strict'; diff --git a/addons/website/static/lib/summernote/src/js/module/Button.js b/addons/website/static/lib/summernote/src/js/module/Button.js new file mode 100644 index 00000000000..805ebbce75e --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/module/Button.js @@ -0,0 +1,117 @@ +define([ + 'summernote/core/list' +], function (list) { + /** + * Button + */ + var Button = function () { + /** + * update button status + * + * @param {jQuery} $container + * @param {Object} styleInfo + */ + this.update = function ($container, styleInfo) { + /** + * handle dropdown's check mark (for fontname, fontsize, lineHeight). + * @param {jQuery} $btn + * @param {Number} value + */ + var checkDropdownMenu = function ($btn, value) { + $btn.find('.dropdown-menu li a').each(function () { + // always compare string to avoid creating another func. + var isChecked = ($(this).data('value') + '') === (value + ''); + this.className = isChecked ? 'checked' : ''; + }); + }; + + /** + * update button state(active or not). + * + * @param {String} selector + * @param {Function} pred + */ + var btnState = function (selector, pred) { + var $btn = $container.find(selector); + $btn.toggleClass('active', pred()); + }; + + // fontname + var $fontname = $container.find('.note-fontname'); + if ($fontname.length) { + var selectedFont = styleInfo['font-family']; + if (!!selectedFont) { + selectedFont = list.head(selectedFont.split(',')); + selectedFont = selectedFont.replace(/\'/g, ''); + $fontname.find('.note-current-fontname').text(selectedFont); + checkDropdownMenu($fontname, selectedFont); + } + } + + // fontsize + var $fontsize = $container.find('.note-fontsize'); + $fontsize.find('.note-current-fontsize').text(styleInfo['font-size']); + checkDropdownMenu($fontsize, parseFloat(styleInfo['font-size'])); + + // lineheight + var $lineHeight = $container.find('.note-height'); + checkDropdownMenu($lineHeight, parseFloat(styleInfo['line-height'])); + + btnState('button[data-event="bold"]', function () { + return styleInfo['font-bold'] === 'bold'; + }); + btnState('button[data-event="italic"]', function () { + return styleInfo['font-italic'] === 'italic'; + }); + btnState('button[data-event="underline"]', function () { + return styleInfo['font-underline'] === 'underline'; + }); + btnState('button[data-event="strikethrough"]', function () { + return styleInfo['font-strikethrough'] === 'strikethrough'; + }); + btnState('button[data-event="superscript"]', function () { + return styleInfo['font-superscript'] === 'superscript'; + }); + btnState('button[data-event="subscript"]', function () { + return styleInfo['font-subscript'] === 'subscript'; + }); + btnState('button[data-event="justifyLeft"]', function () { + return styleInfo['text-align'] === 'left' || styleInfo['text-align'] === 'start'; + }); + btnState('button[data-event="justifyCenter"]', function () { + return styleInfo['text-align'] === 'center'; + }); + btnState('button[data-event="justifyRight"]', function () { + return styleInfo['text-align'] === 'right'; + }); + btnState('button[data-event="justifyFull"]', function () { + return styleInfo['text-align'] === 'justify'; + }); + btnState('button[data-event="insertUnorderedList"]', function () { + return styleInfo['list-style'] === 'unordered'; + }); + btnState('button[data-event="insertOrderedList"]', function () { + return styleInfo['list-style'] === 'ordered'; + }); + }; + + /** + * update recent color + * + * @param {Node} button + * @param {String} eventName + * @param {value} value + */ + this.updateRecentColor = function (button, eventName, value) { + var $color = $(button).closest('.note-color'); + var $recentColor = $color.find('.note-recent-color'); + var colorInfo = JSON.parse($recentColor.attr('data-value')); + colorInfo[eventName] = value; + $recentColor.attr('data-value', JSON.stringify(colorInfo)); + var sKey = eventName === 'backColor' ? 'background-color' : 'color'; + $recentColor.find('i').css(sKey, value); + }; + }; + + return Button; +}); diff --git a/addons/website/static/lib/summernote/src/js/module/Dialog.js b/addons/website/static/lib/summernote/src/js/module/Dialog.js new file mode 100644 index 00000000000..8e7cf07b323 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/module/Dialog.js @@ -0,0 +1,158 @@ +define('summernote/module/Dialog', function () { + /** + * Dialog + * + * @class + */ + var Dialog = function () { + + /** + * toggle button status + * + * @param {jQuery} $btn + * @param {Boolean} isEnable + */ + var toggleBtn = function ($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }; + + /** + * show image dialog + * + * @param {jQuery} $editable + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showImageDialog = function ($editable, $dialog) { + return $.Deferred(function (deferred) { + var $imageDialog = $dialog.find('.note-image-dialog'); + + var $imageInput = $dialog.find('.note-image-input'), + $imageUrl = $dialog.find('.note-image-url'), + $imageBtn = $dialog.find('.note-image-btn'); + + $imageDialog.one('shown.bs.modal', function () { + // Cloning imageInput to clear element. + $imageInput.replaceWith($imageInput.clone() + .on('change', function () { + deferred.resolve(this.files || this.value); + $imageDialog.modal('hide'); + }) + .val('') + ); + + $imageBtn.click(function (event) { + event.preventDefault(); + + deferred.resolve($imageUrl.val()); + $imageDialog.modal('hide'); + }); + + $imageUrl.on('keyup paste', function (event) { + var url; + + if (event.type === 'paste') { + url = event.originalEvent.clipboardData.getData('text'); + } else { + url = $imageUrl.val(); + } + + toggleBtn($imageBtn, url); + }).val('').trigger('focus'); + }).one('hidden.bs.modal', function () { + $imageInput.off('change'); + $imageUrl.off('keyup paste'); + $imageBtn.off('click'); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }).modal('show'); + }); + }; + + /** + * Show link dialog and set event handlers on dialog controls. + * + * @param {jQuery} $dialog + * @param {Object} linkInfo + * @return {Promise} + */ + this.showLinkDialog = function ($editable, $dialog, linkInfo) { + return $.Deferred(function (deferred) { + var $linkDialog = $dialog.find('.note-link-dialog'); + + var $linkText = $linkDialog.find('.note-link-text'), + $linkUrl = $linkDialog.find('.note-link-url'), + $linkBtn = $linkDialog.find('.note-link-btn'), + $openInNewWindow = $linkDialog.find('input[type=checkbox]'); + + $linkDialog.one('shown.bs.modal', function () { + $linkText.val(linkInfo.text); + + $linkText.on('input', function () { + // if linktext was modified by keyup, + // stop cloning text from linkUrl + linkInfo.text = $linkText.val(); + }); + + // if no url was given, copy text to url + if (!linkInfo.url) { + linkInfo.url = linkInfo.text; + toggleBtn($linkBtn, linkInfo.text); + } + + $linkUrl.on('input', function () { + toggleBtn($linkBtn, $linkUrl.val()); + // display same link on `Text to display` input + // when create a new link + if (!linkInfo.text) { + $linkText.val($linkUrl.val()); + } + }).val(linkInfo.url).trigger('focus').trigger('select'); + + $openInNewWindow.prop('checked', linkInfo.newWindow); + + $linkBtn.one('click', function (event) { + event.preventDefault(); + + deferred.resolve({ + range: linkInfo.range, + url: $linkUrl.val(), + text: $linkText.val(), + newWindow: $openInNewWindow.is(':checked') + }); + $linkDialog.modal('hide'); + }); + }).one('hidden.bs.modal', function () { + // detach events + $linkText.off('input'); + $linkUrl.off('input'); + $linkBtn.off('click'); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }).modal('show'); + }).promise(); + }; + + /** + * show help dialog + * + * @param {jQuery} $dialog + */ + this.showHelpDialog = function ($editable, $dialog) { + return $.Deferred(function (deferred) { + var $helpDialog = $dialog.find('.note-help-dialog'); + + $helpDialog.one('hidden.bs.modal', function () { + deferred.resolve(); + }).modal('show'); + }).promise(); + }; + }; + + return Dialog; +}); diff --git a/addons/website/static/lib/summernote/src/js/module/Handle.js b/addons/website/static/lib/summernote/src/js/module/Handle.js new file mode 100644 index 00000000000..375428faa32 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/module/Handle.js @@ -0,0 +1,44 @@ +define('summernote/module/Handle', function () { + /** + * Handle + */ + var Handle = function () { + /** + * update handle + * @param {jQuery} $handle + * @param {Object} styleInfo + * @param {Boolean} isAirMode + */ + this.update = function ($handle, styleInfo, isAirMode) { + var $selection = $handle.find('.note-control-selection'); + if (styleInfo.image) { + var $image = $(styleInfo.image); + var pos = isAirMode ? $image.offset() : $image.position(); + + // include margin + var imageSize = { + w: $image.outerWidth(true), + h: $image.outerHeight(true) + }; + + $selection.css({ + display: 'block', + left: pos.left, + top: pos.top, + width: imageSize.w, + height: imageSize.h + }).data('target', styleInfo.image); // save current image element. + var sizingText = imageSize.w + 'x' + imageSize.h; + $selection.find('.note-control-selection-info').text(sizingText); + } else { + $selection.hide(); + } + }; + + this.hide = function ($handle) { + $handle.children().hide(); + }; + }; + + return Handle; +}); diff --git a/addons/website/static/lib/summernote/src/js/module/Popover.js b/addons/website/static/lib/summernote/src/js/module/Popover.js new file mode 100644 index 00000000000..29d44666a23 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/module/Popover.js @@ -0,0 +1,101 @@ +define([ + 'summernote/core/func', + 'summernote/core/list', + 'summernote/module/Button' +], function (func, list, Button) { + /** + * Popover (http://getbootstrap.com/javascript/#popovers) + */ + var Popover = function () { + var button = new Button(); + + /** + * returns position from placeholder + * @param {Node} placeholder + * @param {Boolean} isAirMode + */ + var posFromPlaceholder = function (placeholder, isAirMode) { + var $placeholder = $(placeholder); + var pos = isAirMode ? $placeholder.offset() : $placeholder.position(); + var height = $placeholder.outerHeight(true); // include margin + + // popover below placeholder. + return { + left: pos.left, + top: pos.top + height + }; + }; + + /** + * show popover + * @param {jQuery} popover + * @param {Position} pos + */ + var showPopover = function ($popover, pos) { + $popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + }; + + var PX_POPOVER_ARROW_OFFSET_X = 20; + + /** + * update current state + * @param {jQuery} $popover - popover container + * @param {Object} styleInfo - style object + * @param {Boolean} isAirMode + */ + this.update = function ($popover, styleInfo, isAirMode) { + button.update($popover, styleInfo); + + var $linkPopover = $popover.find('.note-link-popover'); + if (styleInfo.anchor) { + var $anchor = $linkPopover.find('a'); + var href = $(styleInfo.anchor).attr('href'); + $anchor.attr('href', href).html(href); + showPopover($linkPopover, posFromPlaceholder(styleInfo.anchor, isAirMode)); + } else { + $linkPopover.hide(); + } + + var $imagePopover = $popover.find('.note-image-popover'); + if (styleInfo.image) { + showPopover($imagePopover, posFromPlaceholder(styleInfo.image, isAirMode)); + } else { + $imagePopover.hide(); + } + + var $airPopover = $popover.find('.note-air-popover'); + if (isAirMode && !styleInfo.range.isCollapsed()) { + var bnd = func.rect2bnd(list.last(styleInfo.range.getClientRects())); + showPopover($airPopover, { + left: Math.max(bnd.left + bnd.width / 2 - PX_POPOVER_ARROW_OFFSET_X, 0), + top: bnd.top + bnd.height + }); + } else { + $airPopover.hide(); + } + }; + + /** + * @param {Node} button + * @param {String} eventName + * @param {String} value + */ + this.updateRecentColor = function (button, eventName, value) { + button.updateRecentColor(button, eventName, value); + }; + + /** + * hide all popovers + * @param {jQuery} $popover - popover container + */ + this.hide = function ($popover) { + $popover.children().hide(); + }; + }; + + return Popover; +}); diff --git a/addons/website/static/lib/summernote/src/js/module/Toolbar.js b/addons/website/static/lib/summernote/src/js/module/Toolbar.js new file mode 100644 index 00000000000..5ff172012ca --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/module/Toolbar.js @@ -0,0 +1,56 @@ +define([ + 'summernote/core/list', + 'summernote/module/Button' +], function (list, Button) { + /** + * Toolbar + */ + var Toolbar = function () { + var button = new Button(); + + this.update = function ($toolbar, styleInfo) { + button.update($toolbar, styleInfo); + }; + + /** + * @param {Node} button + * @param {String} eventName + * @param {String} value + */ + this.updateRecentColor = function (buttonNode, eventName, value) { + button.updateRecentColor(buttonNode, eventName, value); + }; + + /** + * activate buttons exclude codeview + * @param {jQuery} $toolbar + */ + this.activate = function ($toolbar) { + $toolbar.find('button') + .not('button[data-event="codeview"]') + .removeClass('disabled'); + }; + + /** + * deactivate buttons exclude codeview + * @param {jQuery} $toolbar + */ + this.deactivate = function ($toolbar) { + $toolbar.find('button') + .not('button[data-event="codeview"]') + .addClass('disabled'); + }; + + this.updateFullscreen = function ($container, bFullscreen) { + var $btn = $container.find('button[data-event="fullscreen"]'); + $btn.toggleClass('active', bFullscreen); + }; + + this.updateCodeview = function ($container, isCodeview) { + var $btn = $container.find('button[data-event="codeview"]'); + $btn.toggleClass('active', isCodeview); + }; + }; + + return Toolbar; +}); diff --git a/addons/website/static/lib/summernote/src/js/outro.js b/addons/website/static/lib/summernote/src/js/outro.js new file mode 100644 index 00000000000..be4600a5cb1 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/outro.js @@ -0,0 +1 @@ +})); diff --git a/addons/website/static/lib/summernote/src/js/settings.js b/addons/website/static/lib/summernote/src/js/settings.js new file mode 100644 index 00000000000..2c3c54d2391 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/settings.js @@ -0,0 +1,305 @@ +define('summernote/settings', function () { + var settings = { + // version + version: '@VERSION', + + /** + * options + */ + options: { + width: null, // set editor width + height: null, // set editor height, ex) 300 + + minHeight: null, // set minimum height of editor + maxHeight: null, // set maximum height of editor + + focus: false, // set focus to editable area after initializing summernote + + tabsize: 4, // size of tab ex) 2 or 4 + styleWithSpan: true, // style with span (Chrome and FF only) + + disableLinkTarget: false, // hide link Target Checkbox + disableDragAndDrop: false, // disable drag and drop event + disableResizeEditor: false, // disable resizing editor + + shortcuts: true, // enable keyboard shortcuts + + placeholder: false, // enable placeholder text + + codemirror: { // codemirror options + mode: 'text/html', + htmlMode: true, + lineNumbers: true + }, + + // language + lang: 'en-US', // language 'en-US', 'ko-KR', ... + direction: null, // text direction, ex) 'rtl' + + // toolbar + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'italic', 'underline', 'clear']], + ['fontname', ['fontname']], + ['color', ['color']], + ['para', ['ul', 'ol', 'paragraph']], + ['height', ['height']], + ['table', ['table']], + ['insert', ['link', 'picture', 'hr']], + ['view', ['fullscreen', 'codeview']], + ['help', ['help']] + ], + + // air mode: inline editor + airMode: false, + // airPopover: [ + // ['style', ['style']], + // ['font', ['bold', 'italic', 'underline', 'clear']], + // ['fontname', ['fontname']], + // ['color', ['color']], + // ['para', ['ul', 'ol', 'paragraph']], + // ['height', ['height']], + // ['table', ['table']], + // ['insert', ['link', 'picture']], + // ['help', ['help']] + // ], + airPopover: [ + ['color', ['color']], + ['font', ['bold', 'underline', 'clear']], + ['para', ['ul', 'paragraph']], + ['table', ['table']], + ['insert', ['link', 'picture']] + ], + + // style tag + styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + + // default fontName + defaultFontName: 'Helvetica Neue', + + // fontName + fontNames: [ + 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', + 'Helvetica Neue', 'Impact', 'Lucida Grande', + 'Tahoma', 'Times New Roman', 'Verdana' + ], + + // pallete colors(n x n) + colors: [ + ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'], + ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'], + ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'], + ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'], + ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'], + ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'], + ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'], + ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'] + ], + + // lineHeight + lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'], + + // insertTable max size + insertTableMaxSize: { + col: 10, + row: 10 + }, + + // image + maximumImageFileSize: null, // size in bytes, null = no limit + + // callbacks + oninit: null, // initialize + onfocus: null, // editable has focus + onblur: null, // editable out of focus + onenter: null, // enter key pressed + onkeyup: null, // keyup + onkeydown: null, // keydown + onImageUpload: null, // imageUpload + onImageUploadError: null, // imageUploadError + onToolbarClick: null, + onsubmit: null, + + /** + * manipulate link address when user create link + * @param {String} sLinkUrl + * @return {String} + */ + onCreateLink: function (sLinkUrl) { + if (sLinkUrl.indexOf('@') !== -1 && sLinkUrl.indexOf(':') === -1) { + sLinkUrl = 'mailto:' + sLinkUrl; + } else if (sLinkUrl.indexOf('://') === -1) { + sLinkUrl = 'http://' + sLinkUrl; + } + + return sLinkUrl; + }, + + keyMap: { + pc: { + 'ENTER': 'insertParagraph', + 'CTRL+Z': 'undo', + 'CTRL+Y': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CTRL+B': 'bold', + 'CTRL+I': 'italic', + 'CTRL+U': 'underline', + 'CTRL+SHIFT+S': 'strikethrough', + 'CTRL+BACKSLASH': 'removeFormat', + 'CTRL+SHIFT+L': 'justifyLeft', + 'CTRL+SHIFT+E': 'justifyCenter', + 'CTRL+SHIFT+R': 'justifyRight', + 'CTRL+SHIFT+J': 'justifyFull', + 'CTRL+SHIFT+NUM7': 'insertUnorderedList', + 'CTRL+SHIFT+NUM8': 'insertOrderedList', + 'CTRL+LEFTBRACKET': 'outdent', + 'CTRL+RIGHTBRACKET': 'indent', + 'CTRL+NUM0': 'formatPara', + 'CTRL+NUM1': 'formatH1', + 'CTRL+NUM2': 'formatH2', + 'CTRL+NUM3': 'formatH3', + 'CTRL+NUM4': 'formatH4', + 'CTRL+NUM5': 'formatH5', + 'CTRL+NUM6': 'formatH6', + 'CTRL+ENTER': 'insertHorizontalRule', + 'CTRL+K': 'showLinkDialog' + }, + + mac: { + 'ENTER': 'insertParagraph', + 'CMD+Z': 'undo', + 'CMD+SHIFT+Z': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CMD+B': 'bold', + 'CMD+I': 'italic', + 'CMD+U': 'underline', + 'CMD+SHIFT+S': 'strikethrough', + 'CMD+BACKSLASH': 'removeFormat', + 'CMD+SHIFT+L': 'justifyLeft', + 'CMD+SHIFT+E': 'justifyCenter', + 'CMD+SHIFT+R': 'justifyRight', + 'CMD+SHIFT+J': 'justifyFull', + 'CMD+SHIFT+NUM7': 'insertUnorderedList', + 'CMD+SHIFT+NUM8': 'insertOrderedList', + 'CMD+LEFTBRACKET': 'outdent', + 'CMD+RIGHTBRACKET': 'indent', + 'CMD+NUM0': 'formatPara', + 'CMD+NUM1': 'formatH1', + 'CMD+NUM2': 'formatH2', + 'CMD+NUM3': 'formatH3', + 'CMD+NUM4': 'formatH4', + 'CMD+NUM5': 'formatH5', + 'CMD+NUM6': 'formatH6', + 'CMD+ENTER': 'insertHorizontalRule', + 'CMD+K': 'showLinkDialog' + } + } + }, + + // default language: en-US + lang: { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize Full', + resizeHalf: 'Resize Half', + resizeQuarter: 'Resize Quarter', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Float None', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image here', + dropImage: 'Drop image', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window' + }, + table: { + table: 'Table' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + normal: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Background Color', + foreground: 'Foreground Color', + transparent: 'Transparent', + setTransparent: 'Set transparent', + reset: 'Reset', + resetToDefault: 'Reset to default' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style' + }, + history: { + undo: 'Undo', + redo: 'Redo' + } + } + } + }; + + return settings; +}); diff --git a/addons/website/static/lib/summernote/src/js/summernote.js b/addons/website/static/lib/summernote/src/js/summernote.js new file mode 100644 index 00000000000..d9122a4ff63 --- /dev/null +++ b/addons/website/static/lib/summernote/src/js/summernote.js @@ -0,0 +1,173 @@ +define([ + 'summernote/core/agent', 'summernote/core/dom', + 'summernote/core/range', + 'summernote/settings', + 'summernote/EventHandler', 'summernote/Renderer' +], function (agent, dom, range, settings, EventHandler, Renderer) { + // jQuery namespace for summernote + $.summernote = $.summernote || {}; + + // extends default `settings` + $.extend($.summernote, settings); + + var renderer = new Renderer(); + var eventHandler = new EventHandler(); + + $.extend($.summernote, { + renderer: renderer, + eventHandler: eventHandler, + core: { + agent: agent, + dom: dom, + range: range + }, + pluginEvents: {} + }); + + /** + * addPlugin + * + * @param {Object} plugin + */ + $.summernote.addPlugin = function (plugin) { + if (plugin.buttons) { + $.each(plugin.buttons, function (name, button) { + renderer.addButtonInfo(name, button); + }); + } + + if (plugin.dialogs) { + $.each(plugin.dialogs, function (name, dialog) { + renderer.addDialogInfo(name, dialog); + }); + } + + if (plugin.events) { + $.each(plugin.events, function (name, event) { + $.summernote.pluginEvents[name] = event; + }); + } + + if (plugin.langs) { + $.each(plugin.langs, function (locale, lang) { + if ($.summernote.lang[locale]) { + $.extend($.summernote.lang[locale], lang); + } + }); + } + + if (plugin.options) { + $.extend($.summernote.options, plugin.options); + } + }; + + /** + * extend jquery fn + */ + $.fn.extend({ + /** + * initialize summernote + * - create editor layout and attach Mouse and keyboard events. + * + * @param {Object} options + * @returns {this} + */ + summernote: function (options) { + // extend default options + options = $.extend({}, $.summernote.options, options); + + // Include langInfo in options for later use, e.g. for image drag-n-drop + // Setup language info with en-US as default + options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]); + + this.each(function (idx, holder) { + var $holder = $(holder); + + // createLayout with options + renderer.createLayout($holder, options); + + var info = renderer.layoutInfoFromHolder($holder); + eventHandler.attach(info, options); + + // Textarea: auto filling the code before form submit. + if (dom.isTextarea($holder[0])) { + $holder.closest('form').submit(function () { + var contents = $holder.code(); + $holder.val(contents); + + // callback on submit + if (options.onsubmit) { + options.onsubmit(contents); + } + }); + } + }); + + // focus on first editable element + if (this.first().length && options.focus) { + var info = renderer.layoutInfoFromHolder(this.first()); + info.editable.focus(); + } + + // callback on init + if (this.length && options.oninit) { + options.oninit(); + } + + return this; + }, + // + + /** + * get the HTML contents of note or set the HTML contents of note. + * + * @param {String} [sHTML] - HTML contents(optional, set) + * @returns {this|String} - context(set) or HTML contents of note(get). + */ + code: function (sHTML) { + // get the HTML contents of note + if (sHTML === undefined) { + var $holder = this.first(); + if (!$holder.length) { return; } + var info = renderer.layoutInfoFromHolder($holder); + if (!!(info && info.editable)) { + var isCodeview = info.editor.hasClass('codeview'); + if (isCodeview && agent.hasCodeMirror) { + info.codable.data('cmEditor').save(); + } + return isCodeview ? info.codable.val() : info.editable.html(); + } + return dom.isTextarea($holder[0]) ? $holder.val() : $holder.html(); + } + + // set the HTML contents of note + this.each(function (i, holder) { + var info = renderer.layoutInfoFromHolder($(holder)); + if (info && info.editable) { info.editable.html(sHTML); } + }); + + return this; + }, + + /** + * destroy Editor Layout and detach Key and Mouse Event + * + * @returns {this} + */ + destroy: function () { + this.each(function (idx, holder) { + var $holder = $(holder); + + var info = renderer.layoutInfoFromHolder($holder); + if (!info || !info.editable) { return; } + + var options = info.editor.data('options'); + + eventHandler.detach(info, options); + renderer.removeLayout($holder, info, options); + }); + + return this; + } + }); +}); diff --git a/addons/website/static/lib/summernote/src/less/elements.less b/addons/website/static/lib/summernote/src/less/elements.less new file mode 100644 index 00000000000..2ece26af004 --- /dev/null +++ b/addons/website/static/lib/summernote/src/less/elements.less @@ -0,0 +1,156 @@ +/*--------------------------------------------------- + LESS Elements 0.9 + --------------------------------------------------- + A set of useful LESS mixins + More info at: http://lesselements.com + ---------------------------------------------------*/ + +.gradient(@color: #F5F5F5, @start: #EEE, @stop: #FFF) { + background: @color; + background: -webkit-gradient(linear, + left bottom, + left top, + color-stop(0, @start), + color-stop(1, @stop)); + background: -ms-linear-gradient(bottom, + @start, + @stop); + background: -moz-linear-gradient(center bottom, + @start 0%, + @stop 100%); + background: -o-linear-gradient(@stop, + @start); + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",@stop,@start)); +} +.bw-gradient(@color: #F5F5F5, @start: 0, @stop: 255) { + background: @color; + background: -webkit-gradient(linear, + left bottom, + left top, + color-stop(0, rgb(@start,@start,@start)), + color-stop(1, rgb(@stop,@stop,@stop))); + background: -ms-linear-gradient(bottom, + rgb(@start,@start,@start) 0%, + rgb(@stop,@stop,@stop) 100%); + background: -moz-linear-gradient(center bottom, + rgb(@start,@start,@start) 0%, + rgb(@stop,@stop,@stop) 100%); + background: -o-linear-gradient(rgb(@stop,@stop,@stop), + rgb(@start,@start,@start)); + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",rgb(@stop,@stop,@stop),rgb(@start,@start,@start))); +} +.bordered(@top-color: #EEE, @right-color: #EEE, @bottom-color: #EEE, @left-color: #EEE) { + border-top: solid 1px @top-color; + border-left: solid 1px @left-color; + border-right: solid 1px @right-color; + border-bottom: solid 1px @bottom-color; +} +.drop-shadow(@x-axis: 0, @y-axis: 1px, @blur: 2px, @alpha: 0.1) { + -webkit-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); + -moz-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); + box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha); +} +.rounded(@radius: 2px) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} +.border-radius(@topright: 0, @bottomright: 0, @bottomleft: 0, @topleft: 0) { + -webkit-border-top-right-radius: @topright; + -webkit-border-bottom-right-radius: @bottomright; + -webkit-border-bottom-left-radius: @bottomleft; + -webkit-border-top-left-radius: @topleft; + -moz-border-radius-topright: @topright; + -moz-border-radius-bottomright: @bottomright; + -moz-border-radius-bottomleft: @bottomleft; + -moz-border-radius-topleft: @topleft; + border-top-right-radius: @topright; + border-bottom-right-radius: @bottomright; + border-bottom-left-radius: @bottomleft; + border-top-left-radius: @topleft; + .background-clip(padding-box); +} +.opacity(@opacity: 0.5) { + -webkit-opacity: @opacity; + -khtml-opacity: @opacity; + -moz-opacity: @opacity; + opacity: @opacity; + @opperc: @opacity * 100; + -ms-filter: ~"progid:DXImageTransform.Microsoft.Alpha(opacity=@{opperc})"; + filter: ~"alpha(opacity=@{opperc})"; +} +.transition-duration(@duration: 0.2s) { + -moz-transition-duration: @duration; + -webkit-transition-duration: @duration; + -o-transition-duration: @duration; + transition-duration: @duration; +} +.transform(...) { + -webkit-transform: @arguments; + -moz-transform: @arguments; + -o-transform: @arguments; + -ms-transform: @arguments; + transform: @arguments; +} +.rotation(@deg:5deg){ + .transform(rotate(@deg)); +} +.scale(@ratio:1.5){ + .transform(scale(@ratio)); +} +.transition(@duration:0.2s, @ease:ease-out) { + -webkit-transition: all @duration @ease; + -moz-transition: all @duration @ease; + -o-transition: all @duration @ease; + transition: all @duration @ease; +} +.inner-shadow(@horizontal:0, @vertical:1px, @blur:2px, @alpha: 0.4) { + -webkit-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); + -moz-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); + box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha); +} +.box-shadow(@arguments) { + -webkit-box-shadow: @arguments; + -moz-box-shadow: @arguments; + box-shadow: @arguments; +} +.box-sizing(@sizing: border-box) { + -ms-box-sizing: @sizing; + -moz-box-sizing: @sizing; + -webkit-box-sizing: @sizing; + box-sizing: @sizing; +} +.user-select(@argument: none) { + -webkit-user-select: @argument; + -moz-user-select: @argument; + -ms-user-select: @argument; + user-select: @argument; +} +.columns(@colwidth: 250px, @colcount: 0, @colgap: 50px, @columnRuleColor: #EEE, @columnRuleStyle: solid, @columnRuleWidth: 1px) { + -moz-column-width: @colwidth; + -moz-column-count: @colcount; + -moz-column-gap: @colgap; + -moz-column-rule-color: @columnRuleColor; + -moz-column-rule-style: @columnRuleStyle; + -moz-column-rule-width: @columnRuleWidth; + -webkit-column-width: @colwidth; + -webkit-column-count: @colcount; + -webkit-column-gap: @colgap; + -webkit-column-rule-color: @columnRuleColor; + -webkit-column-rule-style: @columnRuleStyle; + -webkit-column-rule-width: @columnRuleWidth; + column-width: @colwidth; + column-count: @colcount; + column-gap: @colgap; + column-rule-color: @columnRuleColor; + column-rule-style: @columnRuleStyle; + column-rule-width: @columnRuleWidth; +} +.translate(@x:0, @y:0) { + .transform(translate(@x, @y)); +} +.background-clip(@argument: padding-box) { + -moz-background-clip: @argument; + -webkit-background-clip: @argument; + background-clip: @argument; +} diff --git a/addons/website/static/lib/summernote/src/less/summernote.less b/addons/website/static/lib/summernote/src/less/summernote.less new file mode 100644 index 00000000000..f410bcd9e26 --- /dev/null +++ b/addons/website/static/lib/summernote/src/less/summernote.less @@ -0,0 +1,455 @@ +@import "elements.less"; + +/* Theme Variables + ------------------------------------------*/ +@border-color: #a9a9a9; +@background-color: #f5f5f5; + +/* Frame Mode Layout + ------------------------------------------*/ +.note-editor { + border: 1px solid @border-color; + position: relative; + + /* dropzone */ + @dropzone-color: lightskyblue; + @dropzone-active-color: darken(@dropzone-color, 30); + .note-dropzone { + position: absolute; + display: none; + z-index: 1; + border: 2px dashed @dropzone-color; + color: @dropzone-color; + background-color: white; + opacity: 0.95; + pointer-event: none; + + .note-dropzone-message { + display: table-cell; + vertical-align: middle; + text-align: center; + font-size: 28px; + font-weight: bold; + } + + &.hover { + border: 2px dashed @dropzone-active-color; + color: @dropzone-active-color; + } + } + + &.dragover .note-dropzone { + display: table; + } + + .note-toolbar { + background-color: @background-color; + border-bottom: 1px solid @border-color; + } + + /* fullscreen mode */ + &.fullscreen { + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 1050; /* bs3 modal-backdrop: 1030, bs2: 1040 */ + .note-editable { + background-color: white; + } + .note-resizebar { + display: none; + } + } + + /* codeview mode */ + &.codeview { + .note-editable { + display: none; + } + .note-codable { + display: block; + } + } + + /* statusbar */ + .note-statusbar { + background-color: @background-color; + .note-resizebar { + height: 8px; + width: 100%; + border-top: 1px solid @border-color; + cursor: ns-resize; + .note-icon-bar { + width: 20px; + margin: 1px auto; + border-top: 1px solid @border-color; + } + } + } + + /* editable */ + .note-editable[contenteditable=true]:empty:not(:focus):before { + content:attr(data-placeholder); + color: #a9a9a9; + } + + .note-editable { + padding: 10px; + overflow: auto; + outline: none; + } + .note-editable[contenteditable="false"] { + background-color: #e5e5e5; + } + + /* codeable */ + .note-codable { + display: none; + width: 100%; + padding: 10px; + border: none; + box-shadow: none; + font-family: Menlo, Monaco, monospace, sans-serif; + font-size: 14px; + color: #ccc; + background-color: #222; + resize: none; + + /* override BS2 default style */ + .box-sizing(border-box); + .rounded(0); + margin-bottom: 0; + } +} + +/* Air Mode Layout + ------------------------------------------*/ +.note-air-editor { + outline: none; +} + +/* Popover + ------------------------------------------*/ +.note-popover .popover { + max-width: none; + .popover-content { + a { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; /* for FF */ + vertical-align: middle; /* for FF */ + } + } + & .arrow { + left: 20px; + } +} + +/* Popover and Toolbar (Button container) + ------------------------------------------*/ +.note-popover .popover .popover-content, .note-toolbar { + margin: 0; + padding: 0 0 5px 5px; + + &>.btn-group { + margin-top: 5px; + margin-left: 0; + margin-right: 5px; + } + + .btn-group { + .note-table { + min-width: 0; + padding: 5px; + .note-dimension-picker { + font-size: 18px; + .note-dimension-picker-mousecatcher { + position: absolute !important; + z-index: 3; + width: 10em; + height: 10em; + cursor: pointer; + } + .note-dimension-picker-unhighlighted { + position: relative !important; + z-index: 1; + width: 5em; + height: 5em; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat; + } + .note-dimension-picker-highlighted { + position: absolute !important; + z-index: 2; + width: 1em; + height: 1em; + background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat; + } + } + } + } + + .note-style { + h1, h2, h3, h4, h5, h6, blockquote { + margin: 0; + } + } + + .note-color { + .dropdown-toggle { + width: 20px; + padding-left: 5px; + } + .dropdown-menu { + min-width: 340px; + .btn-group { + margin: 0; + &:first-child { + margin: 0 5px; + } + + .note-palette-title { + font-size: 12px; + margin: 2px 7px; + text-align: center; + border-bottom: 1px solid #eee; + } + + .note-color-reset { + font-size: 11px; + margin: 3px; + padding: 0 3px; + cursor: pointer; + .rounded(5px); + } + + .note-color-row { + height: 20px; + } + + .note-color-reset:hover { + background: #eee; + } + } + } + } + + .note-para { + .dropdown-menu { + min-width: 216px; + padding: 5px; + &>div:first-child { + margin-right: 5px; + } + } + } + + /* dropdown-menu for toolbar and popover */ + .dropdown-menu { + min-width: 90px; + + /* dropdown-menu right position */ + /* http://forrst.com/posts/Bootstrap_right_positioned_dropdown-2KB */ + &.right { + right: 0; + left: auto; + &::before { right: 9px; left: auto !important; } + &::after { right: 10px; left: auto !important; } + } + + /* dropdown-menu for selectbox */ + li a i { + color: deepskyblue; + visibility: hidden; + } + li a.checked i { + visibility: visible; + } + } + + .note-fontsize-10 { + font-size: 10px; + } + + /* color palette for toolbar and popover */ + .note-color-palette { + line-height: 1; + div { + .note-color-btn { + width: 20px; + height: 20px; + padding: 0; + margin: 0; + border: 1px solid #fff; + } + .note-color-btn:hover { + border: 1px solid #000; + } + } + } +} + +/* Dialog + ------------------------------------------*/ +.note-dialog { + &>div { + display: none; /* BS2's hide pacth. */ + } + .note-modal-form { + margin: 0; /* overwrite BS2's form margin bottom */ + } + .note-image-dialog { + .note-dropzone { + min-height: 100px; + font-size: 30px; + line-height: 4; /* vertical-align */ + color: lightgray; + text-align: center; + border: 4px dashed lightgray; + margin-bottom: 10px; + } + } + .note-help-dialog { + @note-shortcut-hl: #dd0; + font-size: 12px; + color: #ccc; + background-color: #222 !important; + .opacity(0.9); + .modal-content { + background: transparent; + border: 1px solid white; + .box-shadow(none); + .rounded(5px); + } + + /* BS2's background pacth. */ + background: transparent; + border: none; + + a { + font-size: 12px; + color: white; + } + + .title { + color: white; + font-size: 14px; + font-weight: bold; + padding-bottom: 5px; + margin-bottom: 10px; + border-bottom: white 1px solid; + } + + .modal-close { + font-size: 14px; + color: @note-shortcut-hl; + cursor: pointer; + } + + .text-center { + margin: 10px 0 0; + } + + .note-shortcut { + padding-top: 8px; + padding-bottom: 8px; + + &-row { + margin-right: -5px; + margin-left: -5px; + } + + &-col { + padding-right: 5px; + padding-left: 5px; + } + + &-title { + font-size: 13px; + font-weight: bold; + color: @note-shortcut-hl; + } + + &-key { + font-family: "Courier New"; + color: @note-shortcut-hl; + text-align: right; + } + } + } +} + +/* Handle + ------------------------------------------*/ +.note-handle { + /* control selection */ + .note-control-selection { + position: absolute; + display: none; + border: 1px solid black; + &>div { position: absolute; } + + .note-control-selection-bg { + width: 100%; + height: 100%; + background-color: black; + .opacity(0.30) + } + + .note-control-handle { + width: 7px; + height: 7px; + border: 1px solid black; + } + + .note-control-holder { + .note-control-handle; + } + + .note-control-sizing { + .note-control-handle; + background-color: white; + } + + .note-control-nw { + top: -5px; + left: -5px; + border-right: none; + border-bottom: none; + } + + .note-control-ne { + top: -5px; + right: -5px; + border-bottom: none; + border-left: none; + } + + .note-control-sw { + bottom: -5px; + left: -5px; + border-top: none; + border-right: none; + } + + .note-control-se { + right: -5px; + bottom: -5px; + cursor: se-resize; + } + + .note-control-selection-info { + right: 0; + bottom: 0; + padding: 5px; + margin: 5px; + color: white; + background-color: black; + font-size: 12px; + .rounded(5px); + .opacity(0.7); + } + } +} diff --git a/addons/website/static/lib/summernote/summernote.css b/addons/website/static/lib/summernote/summernote.css new file mode 100644 index 00000000000..f22f83c5acd --- /dev/null +++ b/addons/website/static/lib/summernote/summernote.css @@ -0,0 +1 @@ +.note-editor{position:relative;border:1px solid #a9a9a9}.note-editor .note-dropzone{position:absolute;z-index:1;display:none;color:#87cefa;background-color:white;border:2px dashed #87cefa;opacity:.95;pointer-event:none}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:bold;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf;border:2px dashed #098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-toolbar{background-color:#f5f5f5;border-bottom:1px solid #a9a9a9}.note-editor.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%}.note-editor.fullscreen .note-editable{background-color:white}.note-editor.fullscreen .note-resizebar{display:none}.note-editor.codeview .note-editable{display:none}.note-editor.codeview .note-codable{display:block}.note-editor .note-statusbar{background-color:#f5f5f5}.note-editor .note-statusbar .note-resizebar{width:100%;height:8px;cursor:ns-resize;border-top:1px solid #a9a9a9}.note-editor .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #a9a9a9}.note-editor .note-editable{padding:10px;overflow:auto;outline:0}.note-editor .note-editable[contenteditable="false"]{background-color:#e5e5e5}.note-editor .note-codable{display:none;width:100%;padding:10px;margin-bottom:0;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;resize:none}.note-air-editor{outline:0}.note-popover .popover{max-width:none}.note-popover .popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover .popover .arrow{left:20px}.note-popover .popover .popover-content,.note-toolbar{padding:0 0 5px 5px;margin:0}.note-popover .popover .popover-content>.btn-group,.note-toolbar>.btn-group{margin-top:5px;margin-right:5px;margin-left:0}.note-popover .popover .popover-content .note-table .dropdown-menu,.note-toolbar .note-table .dropdown-menu{min-width:0;padding:5px}.note-popover .popover .popover-content .note-table .dropdown-menu .note-dimension-picker,.note-toolbar .note-table .dropdown-menu .note-dimension-picker{font-size:18px}.note-popover .popover .popover-content .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher,.note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover .popover-content .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted,.note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover .popover-content .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted,.note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover .popover-content .note-style h1,.note-toolbar .note-style h1,.note-popover .popover .popover-content .note-style h2,.note-toolbar .note-style h2,.note-popover .popover .popover-content .note-style h3,.note-toolbar .note-style h3,.note-popover .popover .popover-content .note-style h4,.note-toolbar .note-style h4,.note-popover .popover .popover-content .note-style h5,.note-toolbar .note-style h5,.note-popover .popover .popover-content .note-style h6,.note-toolbar .note-style h6,.note-popover .popover .popover-content .note-style blockquote,.note-toolbar .note-style blockquote{margin:0}.note-popover .popover .popover-content .note-color .dropdown-toggle,.note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover .popover-content .note-color .dropdown-menu,.note-toolbar .note-color .dropdown-menu{min-width:340px}.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group,.note-toolbar .note-color .dropdown-menu .btn-group{margin:0}.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group:first-child,.note-toolbar .note-color .dropdown-menu .btn-group:first-child{margin:0 5px}.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-palette-title,.note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title{margin:2px 7px;font-size:12px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset,.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset{padding:0 3px;margin:3px;font-size:11px;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-row,.note-toolbar .note-color .dropdown-menu .btn-group .note-color-row{height:20px}.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset:hover,.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover{background:#eee}.note-popover .popover .popover-content .note-para .dropdown-menu,.note-toolbar .note-para .dropdown-menu{min-width:216px;padding:5px}.note-popover .popover .popover-content .note-para .dropdown-menu>div:first-child,.note-toolbar .note-para .dropdown-menu>div:first-child{margin-right:5px}.note-popover .popover .popover-content .dropdown-menu,.note-toolbar .dropdown-menu{min-width:90px}.note-popover .popover .popover-content .dropdown-menu.right,.note-toolbar .dropdown-menu.right{right:0;left:auto}.note-popover .popover .popover-content .dropdown-menu.right::before,.note-toolbar .dropdown-menu.right::before{right:9px;left:auto!important}.note-popover .popover .popover-content .dropdown-menu.right::after,.note-toolbar .dropdown-menu.right::after{right:10px;left:auto!important}.note-popover .popover .popover-content .dropdown-menu li a i,.note-toolbar .dropdown-menu li a i{color:deepskyblue;visibility:hidden}.note-popover .popover .popover-content .dropdown-menu li a.checked i,.note-toolbar .dropdown-menu li a.checked i{visibility:visible}.note-popover .popover .popover-content .note-fontsize-10,.note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover .popover-content .note-color-palette,.note-toolbar .note-color-palette{line-height:1}.note-popover .popover .popover-content .note-color-palette div .note-color-btn,.note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:1px solid #fff}.note-popover .popover .popover-content .note-color-palette div .note-color-btn:hover,.note-toolbar .note-color-palette div .note-color-btn:hover{border:1px solid #000}.note-dialog>div{display:none}.note-dialog .note-image-dialog .note-dropzone{min-height:100px;margin-bottom:10px;font-size:30px;line-height:4;color:lightgray;text-align:center;border:4px dashed lightgray}.note-dialog .note-help-dialog{font-size:12px;color:#ccc;background:transparent;background-color:#222!important;border:0;-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9;-ms-filter:alpha(opacity=90);filter:alpha(opacity=90)}.note-dialog .note-help-dialog .modal-content{background:transparent;border:1px solid white;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.note-dialog .note-help-dialog a{font-size:12px;color:white}.note-dialog .note-help-dialog .title{padding-bottom:5px;font-size:14px;font-weight:bold;color:white;border-bottom:white 1px solid}.note-dialog .note-help-dialog .modal-close{font-size:14px;color:#dd0;cursor:pointer}.note-dialog .note-help-dialog .note-shortcut-layout{width:100%}.note-dialog .note-help-dialog .note-shortcut-layout td{vertical-align:top}.note-dialog .note-help-dialog .note-shortcut{margin-top:8px}.note-dialog .note-help-dialog .note-shortcut th{font-size:13px;color:#dd0;text-align:left}.note-dialog .note-help-dialog .note-shortcut td:first-child{min-width:110px;padding-right:10px;font-family:"Courier New";color:#dd0;text-align:right}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid black}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:black;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;background-color:white;border:1px solid black}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;font-size:12px;color:white;background-color:black;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:alpha(opacity=70);filter:alpha(opacity=70)} \ No newline at end of file From 685d447892c4b2d6548c7e09fda9d4bd4ae5b5b9 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 17 Dec 2014 10:33:16 +0100 Subject: [PATCH 04/13] [IMP] summernote: change lib for overwrite method --- .../lib/summernote/src/js/EventHandler.js | 20 +++++ .../static/lib/summernote/src/js/Renderer.js | 15 ++-- .../lib/summernote/src/js/core/range.js | 77 +++++++++++-------- .../lib/summernote/src/js/editing/Editor.js | 5 ++ .../lib/summernote/src/js/module/Popover.js | 2 + .../lib/summernote/src/js/module/Toolbar.js | 2 + .../lib/summernote/src/js/summernote.js | 10 ++- 7 files changed, 91 insertions(+), 40 deletions(-) diff --git a/addons/website/static/lib/summernote/src/js/EventHandler.js b/addons/website/static/lib/summernote/src/js/EventHandler.js index 5660b633509..2dba3357d06 100644 --- a/addons/website/static/lib/summernote/src/js/EventHandler.js +++ b/addons/website/static/lib/summernote/src/js/EventHandler.js @@ -248,6 +248,13 @@ define([ } }; + this.commands = commands; // odoo change for overwrite + this.editor = editor; // odoo change for overwrite + this.toolbar = toolbar; // odoo change for overwrite + this.popover = popover; // odoo change for overwrite + this.handle = handle; // odoo change for overwrite + this.dialog = dialog; // odoo change for overwrite + var hMousedown = function (event) { //preventDefault Selection for FF, IE8+ if (dom.isImg(event.target)) { @@ -564,6 +571,19 @@ define([ if (keyName) { aKey.push(keyName); } var eventName = keyMap[aKey.join('+')]; + + // odoo change: add visible event to overwrite the browser comportment + var keycode = event.keyCode; + if (!eventName && + !event.ctrlKey && !event.metaKey && ( // special code/command + (keycode > 47 && keycode < 58) || // number keys + keycode == 32 || keycode == 13 || // spacebar & return + (keycode > 64 && keycode < 91) || // letter keys + (keycode > 95 && keycode < 112) || // numpad keys + (keycode > 185 && keycode < 193) || // ;=,-./` (in order) + (keycode > 218 && keycode < 223))) { // [\]' (in order)) + eventName = 'visible'; + } if (eventName) { event.preventDefault(); diff --git a/addons/website/static/lib/summernote/src/js/Renderer.js b/addons/website/static/lib/summernote/src/js/Renderer.js index 5b1cc794c15..2f27901e875 100644 --- a/addons/website/static/lib/summernote/src/js/Renderer.js +++ b/addons/website/static/lib/summernote/src/js/Renderer.js @@ -434,6 +434,9 @@ define([ '
    '; }; + this.tplButtonInfo = tplButtonInfo; // odoo change for overwrite + this.tplPopovers = tplPopovers; // odoo change for overwrite + var tplHandles = function () { return '
    ' + '
    ' + @@ -691,6 +694,8 @@ define([ }); }; + this.createPalette = createPalette; // odoo change for overwrite + /** * create summernote layout (air mode) * @@ -711,12 +716,12 @@ define([ var body = document.body; // create Popover - var $popover = $(tplPopovers(langInfo, options)); + var $popover = $(this.tplPopovers(langInfo, options)); // odoo change for overwrite $popover.addClass('note-air-layout'); $popover.attr('id', 'note-popover-' + id); $popover.appendTo(body); createTooltip($popover, keyMap); - createPalette($popover, options); + this.createPalette($popover, options); // odoo change for overwrite // create Handle var $handle = $(tplHandles()); @@ -793,12 +798,12 @@ define([ var $toolbar = $(toolbarHTML).prependTo($editor); var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; - createPalette($toolbar, options); + this.createPalette($toolbar, options); // odoo change for overwrite createTooltip($toolbar, keyMap, 'bottom'); //05. create Popover - var $popover = $(tplPopovers(langInfo, options)).prependTo($editor); - createPalette($popover, options); + var $popover = $(this.tplPopovers(langInfo, options)).prependTo($editor); // odoo change for overwrite + this.createPalette($popover, options); // odoo change for overwrite createTooltip($popover, keyMap); //06. handle(control selection, ...) diff --git a/addons/website/static/lib/summernote/src/js/core/range.js b/addons/website/static/lib/summernote/src/js/core/range.js index 785c063f48b..85a659bbd1b 100644 --- a/addons/website/static/lib/summernote/src/js/core/range.js +++ b/addons/website/static/lib/summernote/src/js/core/range.js @@ -353,42 +353,42 @@ define([ * delete contents on range * @return {WrappedRange} */ - this.deleteContents = function () { - if (this.isCollapsed()) { - return this; - } + // this.deleteContents = function () { + // if (this.isCollapsed()) { + // return this; + // } - var rng = this.splitText(); - var nodes = rng.nodes(null, { - fullyContains: true - }); + // var rng = this.splitText(); + // var nodes = rng.nodes(null, { + // fullyContains: true + // }); - var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { - return !list.contains(nodes, point.node); - }); + // var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { + // return !list.contains(nodes, point.node); + // }); - var emptyParents = []; - $.each(nodes, function (idx, node) { - // find empty parents - var parent = node.parentNode; - if (point.node !== parent && dom.nodeLength(parent) === 1) { - emptyParents.push(parent); - } - dom.remove(node, false); - }); + // var emptyParents = []; + // $.each(nodes, function (idx, node) { + // // find empty parents + // var parent = node.parentNode; + // if (point.node !== parent && dom.nodeLength(parent) === 1) { + // emptyParents.push(parent); + // } + // dom.remove(node, false); + // }); - // remove empty parents - $.each(emptyParents, function (idx, node) { - dom.remove(node, false); - }); + // // remove empty parents + // $.each(emptyParents, function (idx, node) { + // dom.remove(node, false); + // }); - return new WrappedRange( - point.node, - point.offset, - point.node, - point.offset - ); - }; + // return new WrappedRange( + // point.node, + // point.offset, + // point.node, + // point.offset + // ); + // }; /** * makeIsOn: return isOn(pred) function @@ -545,6 +545,9 @@ define([ }; return { + + WrappedRange: WrappedRange, // odoo change for overwrite + /** * create Range Object From arguments or Browser Selection * @@ -563,7 +566,7 @@ define([ // Firefox: returns entire body as range on initialization. We won't never need it. return null; } - + var nativeRng = selection.getRangeAt(0); sc = nativeRng.startContainer; so = nativeRng.startOffset; @@ -591,6 +594,16 @@ define([ ec = endPoint.cont; eo = endPoint.offset; } + + /* fir for some browser like PhantomJS + * if you select a span with PhantomJS put the carret on the last char of the previous text node + * instead of put the caret on the parent node with the the ofset to target the node + */ + if (sc.nodeType === 3 && sc.nextSibling && sc.nextSibling.tagName && dom.nodeLength(sc) === so) { + so = dom.listPrev(ec).length-1; + sc = sc.parentNode; + } + } else if (arguments.length === 2) { //collapsed ec = sc; eo = so; diff --git a/addons/website/static/lib/summernote/src/js/editing/Editor.js b/addons/website/static/lib/summernote/src/js/editing/Editor.js index 35af842afe8..1a830b8bc83 100644 --- a/addons/website/static/lib/summernote/src/js/editing/Editor.js +++ b/addons/website/static/lib/summernote/src/js/editing/Editor.js @@ -22,6 +22,11 @@ define([ var typing = new Typing(); var bullet = new Bullet(); + this.style = style; // odoo change for overwrite + this.table = table; // odoo change for overwrite + this.typing = typing; // odoo change for overwrite + this.bullet = bullet; // odoo change for overwrite + /** * create range */ diff --git a/addons/website/static/lib/summernote/src/js/module/Popover.js b/addons/website/static/lib/summernote/src/js/module/Popover.js index 29d44666a23..ec40dc6e7d4 100644 --- a/addons/website/static/lib/summernote/src/js/module/Popover.js +++ b/addons/website/static/lib/summernote/src/js/module/Popover.js @@ -9,6 +9,8 @@ define([ var Popover = function () { var button = new Button(); + this.button = button; // odoo change for overwrite + /** * returns position from placeholder * @param {Node} placeholder diff --git a/addons/website/static/lib/summernote/src/js/module/Toolbar.js b/addons/website/static/lib/summernote/src/js/module/Toolbar.js index 5ff172012ca..832b7c4c561 100644 --- a/addons/website/static/lib/summernote/src/js/module/Toolbar.js +++ b/addons/website/static/lib/summernote/src/js/module/Toolbar.js @@ -8,6 +8,8 @@ define([ var Toolbar = function () { var button = new Button(); + this.button = button; // odoo change for overwrite + this.update = function ($toolbar, styleInfo) { button.update($toolbar, styleInfo); }; diff --git a/addons/website/static/lib/summernote/src/js/summernote.js b/addons/website/static/lib/summernote/src/js/summernote.js index d9122a4ff63..791a9452e85 100644 --- a/addons/website/static/lib/summernote/src/js/summernote.js +++ b/addons/website/static/lib/summernote/src/js/summernote.js @@ -2,8 +2,10 @@ define([ 'summernote/core/agent', 'summernote/core/dom', 'summernote/core/range', 'summernote/settings', - 'summernote/EventHandler', 'summernote/Renderer' -], function (agent, dom, range, settings, EventHandler, Renderer) { + 'summernote/EventHandler', 'summernote/Renderer', + 'summernote/core/list', // odoo change for overwrite + 'summernote/core/key' // odoo change for overwrite +], function (agent, dom, range, settings, EventHandler, Renderer, list, key) { // odoo change for overwrite // jQuery namespace for summernote $.summernote = $.summernote || {}; @@ -19,7 +21,9 @@ define([ core: { agent: agent, dom: dom, - range: range + range: range, + list: list, // odoo change for overwrite + key: key // odoo change for overwrite }, pluginEvents: {} }); From 9f51d7fdfa2ed92700431dab7892f998829714e0 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 17 Dec 2014 14:29:59 +0100 Subject: [PATCH 05/13] [FIX] tour.js to dispatch a real keyup event to simulate keypress with summernote lib --- addons/web/static/src/js/tour.js | 113 +++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 30 deletions(-) diff --git a/addons/web/static/src/js/tour.js b/addons/web/static/src/js/tour.js index 68f3ab45810..08738ac019e 100644 --- a/addons/web/static/src/js/tour.js +++ b/addons/web/static/src/js/tour.js @@ -29,18 +29,18 @@ if (typeof openerp.Tour !== "undefined") { * :containsRegex() - set by user ( use: $(el).find(':containsRegex(/(red|blue|yellow)/gi)') ) */ $.extend($.expr[':'],{ - containsExact: function(a,i,m){ - return $.trim(a.innerHTML.toLowerCase()) === m[3].toLowerCase(); + containsExact: function(element, index, matches){ + return $.trim(element.innerHTML.toLowerCase()) === matches[3].toLowerCase(); }, - containsExactCase: function(a,i,m){ - return $.trim(a.innerHTML) === m[3]; + containsExactCase: function(element, index, matches){ + return $.trim(element.innerHTML) === matches[3]; }, // Note all escaped characters need to be double escaped // inside of the containsRegex, so "\(" needs to be "\\(" - containsRegex: function(a,i,m){ + containsRegex: function(element, index, matches){ var regreg = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/, - reg = regreg.exec(m[3]); - return reg ? new RegExp(reg[1], reg[2]).test($.trim(a.innerHTML)) : false; + reg = regreg.exec(matches[3]); + return reg ? new RegExp(reg[1], reg[2]).test($.trim(element.innerHTML)) : false; }, propChecked: function(element, index, matches) { return $(element).prop("checked") === true; @@ -165,7 +165,10 @@ var Tour = { Tour.$element.removeData("tour"); Tour.$element.removeData("tour-step"); $(".tour-backdrop").remove(); - $(".popover.tour").remove(); + if (Tour.$popover.data('bs.popover')) { + Tour.$popover.data('bs.popover').$element.popover('destroy'); + } + Tour.$popover.remove(); Tour.$element = null; } }, @@ -212,6 +215,9 @@ var Tour = { var $tip = $element.data("bs.popover").tip(); + Tour.$popover = $tip.add($element.data("bs.popover").arrow()); + + // add popover style (orphan, static, backdrop) if (step.orphan) { $tip.addClass("orphan"); @@ -344,9 +350,12 @@ var Tour = { + (step ? '\nstep: ' + step.id + ": '" + (step._title || step.title) + "'" : '' ) + (all ? '\nhref: ' + window.location.href : '' ) + (all ? '\nreferrer: ' + document.referrer : '' ) - + (step ? '\nelement: ' + Boolean(!step.element || ($(step.element).size() && $(step.element).is(":visible") && !$(step.element).is(":hidden"))) : '' ) - + (step ? '\nwaitNot: ' + Boolean(!step.waitNot || !$(step.waitNot).size()) : '' ) - + (step ? '\nwaitFor: ' + Boolean(!step.waitFor || $(step.waitFor).size()) : '' ) + + (step ? '\nelement: ' + ((!step.element || ($(step.element).size() && $(step.element).is(":visible") && !$(step.element).is(":hidden"))) ? 'true ' : 'false') : '' ) + + (step && step.element ? " "+JSON.stringify(step.element) : "") + + (step ? '\nwaitNot: ' + ((!step.waitNot || !$(step.waitNot).size()) ? 'true ' : 'false') : '' ) + + (step && step.waitNot ? " "+JSON.stringify(step.waitNot) : "") + + (step ? '\nwaitFor: ' + ((!step.waitFor || $(step.waitFor).size()) ? 'true ' : 'false') : '' ) + + (step && step.waitFor ? " "+JSON.stringify(step.waitFor) : "") + (all ? "\nlocalStorage: " + JSON.stringify(localStorage) : '' ) + (all ? '\n\n' + $("body").html() : '' ); Tour.log(message, true); @@ -402,7 +411,7 @@ var Tour = { return Tour.error(state.step, "Tour '"+state.id+"' undefined"); } Tour.saveState(state.id, state.mode, state.step_id, state.number-1, state.wait+1); - Tour.log("Tour '"+state.id+"' wait for running (tour undefined)"); + //Tour.log("Tour '"+state.id+"' wait for running (tour undefined)"); setTimeout(Tour.running, Tour.retryRunningDelay); } }, @@ -436,7 +445,15 @@ var Tour = { // use an other timeout for cke dom loading Tour.saveState(state.id, state.mode, state.step.id, 0); setTimeout(function () { - if (state.step.onend && Tour._goto(state.step.onend())) return; + if (state.step.onend) { + try { + if(Tour._goto(state.step.onend())) { + return; + } + } catch (e) { + console.log(e); + } + } Tour.nextStep(next); }, Tour.defaultDelay); return; @@ -500,7 +517,7 @@ var Tour = { step = step || state.step; var next = state.step.next ? Tour.search_step(state.step.next) : state.tour.steps[step.id+1]; - if (state.mode === "test" && state.number > 3) { + if (state.mode === "test" && state.number > 5) { return Tour.error(next, "Cycling. Can't reach the next step"); } @@ -513,8 +530,14 @@ var Tour = { Tour.autoTogglePopover(true); // onload a step you can fallback to an other step - if (step.onload && Tour._goto(step.onload())) { - return; + if (step.onload) { + try { + if(Tour._goto(step.onload())) { + return; + } + } catch (e) { + console.log(e); + } } if (state.mode === "test") { @@ -560,40 +583,70 @@ var Tour = { var $element = $(step.element); if (!$element.size()) return; + var click_event = function(type) { + var evt = document.createEvent("MouseEvents"); + evt.initMouseEvent(type, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, $element[0]); + $element[0].dispatchEvent(evt); + }; + if (step.snippet) { Tour.autoDragAndDropSnippet($element); + } else if (step.keydown) { + + if (!(step.keydown instanceof Array)) { + step.keydown = [step.keydown]; + } + var keydown = function (list) { + var keyCode = list.shift(); + if (keyCode) { + setTimeout(function () { + setTimeout(function () { + $element.trigger({ type: 'keydown', keyCode: keyCode }); + if ((keyCode > 47 && keyCode < 58) || // number keys + keyCode == 32 || // spacebar + (keyCode > 64 && keyCode < 91) || // letter keys + (keyCode > 95 && keyCode < 112) || // numpad keys + (keyCode > 185 && keyCode < 193) || // ;=,-./` (in order) + (keyCode > 218 && keyCode < 223)) { // [\]' (in order)) + document.execCommand('insertText', 0, String.fromCharCode(keyCode)); + } + $element.trigger({ type: 'keyup', keyCode: keyCode }); + keydown(list); + },0); + },25); + } + }; + keydown(step.keydown.slice()); + } else if ($element.is(":visible")) { - $element.trigger($.Event("mouseenter", { srcElement: $element[0] })); - $element.trigger($.Event("mousedown", { srcElement: $element[0] })); - - var evt = document.createEvent("MouseEvents"); - evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - $element[0].dispatchEvent(evt); + click_event("mouseover"); + click_event("mousedown"); + click_event("mouseup"); + click_event("click"); // trigger after for step like: mouseenter, next step click on button display with mouseenter setTimeout(function () { if (!Tour.getState()) return; - $element.trigger($.Event("mouseup", { srcElement: $element[0] })); - $element.trigger($.Event("mouseleave", { srcElement: $element[0] })); - }, 1000); + click_event("mouseout"); + }, self.defaultDelay<<1); } if (step.sampleText) { - $element.trigger($.Event("keydown", { srcElement: $element })); + $element.trigger($.Event("keydown", { srcElement: $element[0] })); if ($element.is("input") ) { $element.val(step.sampleText); } if ($element.is("select")) { $element.val(step.sampleText); } else { - $element.html(step.sampleText); + $element.text(step.sampleText); } setTimeout(function () { if (!Tour.getState()) return; - $element.trigger($.Event("keyup", { srcElement: $element })); - $element.trigger($.Event("change", { srcElement: $element })); + $element.trigger($.Event("keyup", { srcElement: $element[0] })); + $element.trigger($.Event("change", { srcElement: $element[0] })); }, self.defaultDelay<<1); } @@ -607,7 +660,7 @@ var Tour = { $thumbnail.trigger($.Event("mousemove", { which: 1, pageX: document.body.scrollWidth/2, pageY: document.body.scrollHeight/2 })); var $dropZone = $(".oe_drop_zone").first(); var dropPosition = $dropZone.position(); - $dropZone.trigger($.Event("mouseup", { which: 1, pageX: dropPosition.left, pageY: dropPosition.top })); + $thumbnail.trigger($.Event("mouseup", { which: 1, pageX: dropPosition.left, pageY: dropPosition.top })); } }; openerp.Tour = Tour; From ba1144551cf6b84cc01d8ba990f4afc2a6157a7a Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 17 Dec 2014 14:30:49 +0100 Subject: [PATCH 06/13] [REM] remove ckeditor --- addons/web/static/lib/ckeditor/CHANGES.md | 414 ------ addons/web/static/lib/ckeditor/LICENSE.md | 1264 ----------------- addons/web/static/lib/ckeditor/README.md | 39 - .../static/lib/ckeditor/adapters/jquery.js | 10 - .../web/static/lib/ckeditor/build-config.js | 91 -- addons/web/static/lib/ckeditor/ckeditor.js | 890 ------------ addons/web/static/lib/ckeditor/config.js | 34 - addons/web/static/lib/ckeditor/contents.css | 123 -- addons/web/static/lib/ckeditor/lang/en.js | 5 - .../plugins/a11yhelp/dialogs/a11yhelp.js | 10 - .../dialogs/lang/_translationstatus.txt | 25 - .../plugins/a11yhelp/dialogs/lang/ar.js | 11 - .../plugins/a11yhelp/dialogs/lang/bg.js | 11 - .../plugins/a11yhelp/dialogs/lang/ca.js | 12 - .../plugins/a11yhelp/dialogs/lang/cs.js | 13 - .../plugins/a11yhelp/dialogs/lang/cy.js | 11 - .../plugins/a11yhelp/dialogs/lang/da.js | 11 - .../plugins/a11yhelp/dialogs/lang/de.js | 12 - .../plugins/a11yhelp/dialogs/lang/el.js | 13 - .../plugins/a11yhelp/dialogs/lang/en.js | 11 - .../plugins/a11yhelp/dialogs/lang/eo.js | 12 - .../plugins/a11yhelp/dialogs/lang/es.js | 12 - .../plugins/a11yhelp/dialogs/lang/et.js | 11 - .../plugins/a11yhelp/dialogs/lang/fa.js | 11 - .../plugins/a11yhelp/dialogs/lang/fi.js | 12 - .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 12 - .../plugins/a11yhelp/dialogs/lang/fr.js | 13 - .../plugins/a11yhelp/dialogs/lang/gl.js | 12 - .../plugins/a11yhelp/dialogs/lang/gu.js | 11 - .../plugins/a11yhelp/dialogs/lang/he.js | 11 - .../plugins/a11yhelp/dialogs/lang/hi.js | 11 - .../plugins/a11yhelp/dialogs/lang/hr.js | 11 - .../plugins/a11yhelp/dialogs/lang/hu.js | 12 - .../plugins/a11yhelp/dialogs/lang/id.js | 11 - .../plugins/a11yhelp/dialogs/lang/it.js | 12 - .../plugins/a11yhelp/dialogs/lang/ja.js | 9 - .../plugins/a11yhelp/dialogs/lang/km.js | 11 - .../plugins/a11yhelp/dialogs/lang/ko.js | 11 - .../plugins/a11yhelp/dialogs/lang/ku.js | 12 - .../plugins/a11yhelp/dialogs/lang/lt.js | 11 - .../plugins/a11yhelp/dialogs/lang/lv.js | 13 - .../plugins/a11yhelp/dialogs/lang/mk.js | 11 - .../plugins/a11yhelp/dialogs/lang/mn.js | 11 - .../plugins/a11yhelp/dialogs/lang/nb.js | 11 - .../plugins/a11yhelp/dialogs/lang/nl.js | 12 - .../plugins/a11yhelp/dialogs/lang/no.js | 11 - .../plugins/a11yhelp/dialogs/lang/pl.js | 13 - .../plugins/a11yhelp/dialogs/lang/pt-br.js | 11 - .../plugins/a11yhelp/dialogs/lang/pt.js | 12 - .../plugins/a11yhelp/dialogs/lang/ro.js | 12 - .../plugins/a11yhelp/dialogs/lang/ru.js | 11 - .../plugins/a11yhelp/dialogs/lang/si.js | 10 - .../plugins/a11yhelp/dialogs/lang/sk.js | 12 - .../plugins/a11yhelp/dialogs/lang/sl.js | 12 - .../plugins/a11yhelp/dialogs/lang/sq.js | 11 - .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 11 - .../plugins/a11yhelp/dialogs/lang/sr.js | 11 - .../plugins/a11yhelp/dialogs/lang/sv.js | 12 - .../plugins/a11yhelp/dialogs/lang/th.js | 11 - .../plugins/a11yhelp/dialogs/lang/tr.js | 12 - .../plugins/a11yhelp/dialogs/lang/ug.js | 11 - .../plugins/a11yhelp/dialogs/lang/uk.js | 12 - .../plugins/a11yhelp/dialogs/lang/vi.js | 11 - .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 9 - .../plugins/a11yhelp/dialogs/lang/zh.js | 10 - .../plugins/clipboard/dialogs/paste.js | 11 - .../colordialog/dialogs/colordialog.js | 13 - .../plugins/dialog/dialogDefinition.js | 4 - .../plugins/fakeobjects/images/spacer.gif | Bin 43 -> 0 bytes .../lib/ckeditor/plugins/find/dialogs/find.js | 24 - .../web/static/lib/ckeditor/plugins/icons.png | Bin 12224 -> 0 bytes .../lib/ckeditor/plugins/icons_hidpi.png | Bin 37692 -> 0 bytes .../ckeditor/plugins/iframe/dialogs/iframe.js | 10 - .../plugins/iframe/images/placeholder.png | Bin 449 -> 0 bytes .../ckeditor/plugins/image/dialogs/image.js | 43 - .../ckeditor/plugins/image/images/noimage.png | Bin 2115 -> 0 bytes .../ckeditor/plugins/link/dialogs/anchor.js | 8 - .../lib/ckeditor/plugins/link/dialogs/link.js | 37 - .../ckeditor/plugins/link/images/anchor.png | Bin 763 -> 0 bytes .../plugins/link/images/hidpi/anchor.png | Bin 1597 -> 0 bytes .../plugins/pastefromword/filter/default.js | 31 - .../lib/ckeditor/plugins/preview/preview.html | 10 - .../ckeditor/plugins/table/dialogs/table.js | 21 - .../plugins/templates/dialogs/templates.css | 84 -- .../plugins/templates/dialogs/templates.js | 10 - .../plugins/templates/templates/default.js | 6 - .../templates/templates/images/template1.gif | Bin 375 -> 0 bytes .../templates/templates/images/template2.gif | Bin 333 -> 0 bytes .../templates/templates/images/template3.gif | Bin 422 -> 0 bytes .../ckeditor/plugins/widget/images/handle.png | Bin 345 -> 0 bytes .../lib/ckeditor/skins/moono/dialog.css | 5 - .../lib/ckeditor/skins/moono/dialog_ie.css | 5 - .../lib/ckeditor/skins/moono/dialog_ie7.css | 5 - .../lib/ckeditor/skins/moono/dialog_ie8.css | 5 - .../ckeditor/skins/moono/dialog_iequirks.css | 5 - .../lib/ckeditor/skins/moono/dialog_opera.css | 5 - .../lib/ckeditor/skins/moono/editor.css | 5 - .../lib/ckeditor/skins/moono/editor_gecko.css | 5 - .../lib/ckeditor/skins/moono/editor_ie.css | 5 - .../lib/ckeditor/skins/moono/editor_ie7.css | 5 - .../lib/ckeditor/skins/moono/editor_ie8.css | 5 - .../ckeditor/skins/moono/editor_iequirks.css | 5 - .../static/lib/ckeditor/skins/moono/icons.png | Bin 12224 -> 0 bytes .../lib/ckeditor/skins/moono/icons_hidpi.png | Bin 37692 -> 0 bytes .../lib/ckeditor/skins/moono/images/arrow.png | Bin 261 -> 0 bytes .../lib/ckeditor/skins/moono/images/close.png | Bin 824 -> 0 bytes .../skins/moono/images/hidpi/close.png | Bin 1792 -> 0 bytes .../skins/moono/images/hidpi/lock-open.png | Bin 1503 -> 0 bytes .../skins/moono/images/hidpi/lock.png | Bin 1616 -> 0 bytes .../skins/moono/images/hidpi/refresh.png | Bin 2320 -> 0 bytes .../ckeditor/skins/moono/images/lock-open.png | Bin 736 -> 0 bytes .../lib/ckeditor/skins/moono/images/lock.png | Bin 728 -> 0 bytes .../ckeditor/skins/moono/images/refresh.png | Bin 953 -> 0 bytes .../static/lib/ckeditor/skins/moono/readme.md | 51 - addons/web/static/lib/ckeditor/styles.js | 111 -- 115 files changed, 4055 deletions(-) delete mode 100644 addons/web/static/lib/ckeditor/CHANGES.md delete mode 100644 addons/web/static/lib/ckeditor/LICENSE.md delete mode 100644 addons/web/static/lib/ckeditor/README.md delete mode 100644 addons/web/static/lib/ckeditor/adapters/jquery.js delete mode 100644 addons/web/static/lib/ckeditor/build-config.js delete mode 100644 addons/web/static/lib/ckeditor/ckeditor.js delete mode 100644 addons/web/static/lib/ckeditor/config.js delete mode 100644 addons/web/static/lib/ckeditor/contents.css delete mode 100644 addons/web/static/lib/ckeditor/lang/en.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/da.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/de.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/el.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/en.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/es.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/et.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/he.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/id.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/it.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/km.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/no.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/si.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/th.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/clipboard/dialogs/paste.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/colordialog/dialogs/colordialog.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/dialog/dialogDefinition.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/fakeobjects/images/spacer.gif delete mode 100644 addons/web/static/lib/ckeditor/plugins/find/dialogs/find.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/icons.png delete mode 100644 addons/web/static/lib/ckeditor/plugins/icons_hidpi.png delete mode 100644 addons/web/static/lib/ckeditor/plugins/iframe/dialogs/iframe.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/iframe/images/placeholder.png delete mode 100644 addons/web/static/lib/ckeditor/plugins/image/dialogs/image.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/image/images/noimage.png delete mode 100644 addons/web/static/lib/ckeditor/plugins/link/dialogs/anchor.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/link/dialogs/link.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/link/images/anchor.png delete mode 100644 addons/web/static/lib/ckeditor/plugins/link/images/hidpi/anchor.png delete mode 100644 addons/web/static/lib/ckeditor/plugins/pastefromword/filter/default.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/preview/preview.html delete mode 100644 addons/web/static/lib/ckeditor/plugins/table/dialogs/table.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/templates/dialogs/templates.css delete mode 100644 addons/web/static/lib/ckeditor/plugins/templates/dialogs/templates.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/templates/templates/default.js delete mode 100644 addons/web/static/lib/ckeditor/plugins/templates/templates/images/template1.gif delete mode 100644 addons/web/static/lib/ckeditor/plugins/templates/templates/images/template2.gif delete mode 100644 addons/web/static/lib/ckeditor/plugins/templates/templates/images/template3.gif delete mode 100644 addons/web/static/lib/ckeditor/plugins/widget/images/handle.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/dialog.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/dialog_ie.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/dialog_ie7.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/dialog_ie8.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/dialog_iequirks.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/dialog_opera.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/editor.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/editor_gecko.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/editor_ie.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/editor_ie7.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/editor_ie8.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/editor_iequirks.css delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/icons.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/icons_hidpi.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/arrow.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/close.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/hidpi/close.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/hidpi/lock-open.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/hidpi/lock.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/hidpi/refresh.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/lock-open.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/lock.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/images/refresh.png delete mode 100644 addons/web/static/lib/ckeditor/skins/moono/readme.md delete mode 100644 addons/web/static/lib/ckeditor/styles.js diff --git a/addons/web/static/lib/ckeditor/CHANGES.md b/addons/web/static/lib/ckeditor/CHANGES.md deleted file mode 100644 index 261439fe8fe..00000000000 --- a/addons/web/static/lib/ckeditor/CHANGES.md +++ /dev/null @@ -1,414 +0,0 @@ -CKEditor 4 Changelog -==================== - -## CKEditor 4.3.2 - -* [#11331](http://dev.ckeditor.com/ticket/11331): A menu button will have a changed label when selected instead of using the `aria-pressed` attribute. -* [#11177](http://dev.ckeditor.com/ticket/11177): Widget drag handler improvements: - * [#11176](http://dev.ckeditor.com/ticket/11176): Fixed: Initial position is not updated when the widget data object is empty. - * [#11001](http://dev.ckeditor.com/ticket/11001): Fixed: Multiple synchronous layout recalculations are caused by initial drag handler positioning causing performance issues. - * [#11161](http://dev.ckeditor.com/ticket/11161): Fixed: Drag handler is not repositioned in various situations. - * [#11281](http://dev.ckeditor.com/ticket/11281): Fixed: Drag handler and mask are duplicated after widget reinitialization. -* [#11207](http://dev.ckeditor.com/ticket/11207): [Firefox] Fixed: Misplaced [Enhanced Image](http://ckeditor.com/addon/image2) resizer in the inline editor. -* [#11102](http://dev.ckeditor.com/ticket/11102): `CKEDITOR.template` improvements: - * [#11102](http://dev.ckeditor.com/ticket/11102): Added newline character support. - * [#11216](http://dev.ckeditor.com/ticket/11216): Added "\\'" substring support. -* [#11121](http://dev.ckeditor.com/ticket/11121): [Firefox] Fixed: High Contrast mode is enabled when the editor is loaded in a hidden iframe. -* [#11350](http://dev.ckeditor.com/ticket/11350): The default value of [`config.contentsCss`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-contentsCss) is affected by [`CKEDITOR.getUrl`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getUrl). -* [#11097](http://dev.ckeditor.com/ticket/11097): Improved the [Autogrow](http://ckeditor.com/addon/autogrow) plugin performance when dealing with very big tables. -* [#11290](http://dev.ckeditor.com/ticket/11290): Removed redundant code in the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin. -* [#11133](http://dev.ckeditor.com/ticket/11133): [Page Break](http://ckeditor.com/addon/pagebreak) becomes editable if pasted. -* [#11126](http://dev.ckeditor.com/ticket/11126): Fixed: Native Undo executed once the bottom of the snapshot stack is reached. -* [#11131](http://dev.ckeditor.com/ticket/11131): [Div Editing Area](http://ckeditor.com/addon/divarea): Fixed: Error thrown when switching to source mode if the selection was in widget's nested editable. -* [#11139](http://dev.ckeditor.com/ticket/11139): [Div Editing Area](http://ckeditor.com/addon/divarea): Fixed: Elements Path is not cleared after switching to source mode. -* [#10778](http://dev.ckeditor.com/ticket/10778): Fixed a bug with range enlargement. The range no longer expands to visible whitespace. -* [#11146](http://dev.ckeditor.com/ticket/11146): [IE] Fixed: Preview window switches Internet Explorer to Quirks Mode. -* [#10762](http://dev.ckeditor.com/ticket/10762): [IE] Fixed: JavaScript code displayed in preview window's URL bar. -* [#11186](http://dev.ckeditor.com/ticket/11186): Introduced the [`widgets.repository.addUpcastCallback`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-addUpcastCallback) method that allows to block upcasting given element to a widget. -* [#11307](http://dev.ckeditor.com/ticket/11307): Fixed: Paste as Plain Text conflict with the [MooTools](http://mootools.net) library. -* [#11140](http://dev.ckeditor.com/ticket/11140): [IE11] Fixed: Anchors are not draggable. -* [#11379](http://dev.ckeditor.com/ticket/11379): Changed default contents `line-height` to unitless values to avoid huge text overlapping (like in [#9696](http://dev.ckeditor.com/ticket/9696)). -* [#10787](http://dev.ckeditor.com/ticket/10787): [Firefox] Fixed: Broken replacement of text while pasting into `div`-based editor. -* [#10884](http://dev.ckeditor.com/ticket/10884): Widgets integration with the [Show Blocks](http://ckeditor.com/addon/showblocks) plugin. -* [#11021](http://dev.ckeditor.com/ticket/11021): Fixed: An error thrown when selecting entire editable contents while fake selection is on. -* [#11086](http://dev.ckeditor.com/ticket/11086): [IE8] Re-enable inline widgets drag&drop in Internet Explorer 8. -* [#11372](http://dev.ckeditor.com/ticket/11372): Widgets: Special characters encoded twice in nested editables. -* [#10068](http://dev.ckeditor.com/ticket/10068): Fixed: Support for protocol-relative URLs. -* [#11283](http://dev.ckeditor.com/ticket/11283): [Enhanced Image](http://ckeditor.com/addon/image2): A `
    ` element with `text-align: center` and an image inside is not recognised correctly. -* [#11196](http://dev.ckeditor.com/ticket/11196): [Accessibility Instructions](http://ckeditor.com/addon/a11yhelp): Allowed additional keyboard button labels to be translated in the dialog window. - -## CKEditor 4.3.1 - -**Important Notes:** - -* To match the naming convention, the `language` button is now `Language` ([#11201](http://dev.ckeditor.com/ticket/11201)). -* [Enhanced Image](http://ckeditor.com/addon/image2) button, context menu, command, and icon names match those of the [Image](http://ckeditor.com/addon/image) plugin ([#11222](http://dev.ckeditor.com/ticket/11222)). - -Fixed Issues: - -* [#11244](http://dev.ckeditor.com/ticket/11244): Changed: The [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method now fires the [`widget.repository.checkWidgets`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-event-checkWidgets) event, so from CKEditor 4.3.1 it is preferred to use the method rather than fire the event. -* [#11171](http://dev.ckeditor.com/ticket/11171): Fixed: [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) and [`editor.insertText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertText) methods do not call the [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method. -* [#11085](http://dev.ckeditor.com/ticket/11085): [IE8] Replaced preview generated by the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) widget with a placeholder. -* [#11044](http://dev.ckeditor.com/ticket/11044): Enhanced WAI-ARIA support for the [Language](http://ckeditor.com/addon/language) plugin drop-down menu. -* [#11075](http://dev.ckeditor.com/ticket/11075): With drop-down menu button focused, pressing the *Down Arrow* key will now open the menu and focus its first option. -* [#11165](http://dev.ckeditor.com/ticket/11165): Fixed: The [File Browser](http://ckeditor.com/addon/filebrowser) plugin cannot be removed from the editor. -* [#11159](http://dev.ckeditor.com/ticket/11159): [IE9-10] [Enhanced Image](http://ckeditor.com/addon/image2): Fixed buggy discovery of image dimensions. -* [#11101](http://dev.ckeditor.com/ticket/11101): Drop-down lists no longer break when given double quotes. -* [#11077](http://dev.ckeditor.com/ticket/11077): [Enhanced Image](http://ckeditor.com/addon/image2): Empty undo step recorded when resizing the image. -* [#10853](http://dev.ckeditor.com/ticket/10853): [Enhanced Image](http://ckeditor.com/addon/image2): Widget has paragraph wrapper when de-captioning unaligned image. -* [#11198](http://dev.ckeditor.com/ticket/11198): Widgets: Drag handler is not fully visible when an inline widget is in a heading. -* [#11132](http://dev.ckeditor.com/ticket/11132): [Firefox] Fixed: Caret is lost after drag and drop of an inline widget. -* [#11182](http://dev.ckeditor.com/ticket/11182): [IE10-11] Fixed: Editor crashes (IE11) or works with minor issues (IE10) if a page is loaded in Quirks Mode. See [`env.quirks`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-quirks) for more details. -* [#11204](http://dev.ckeditor.com/ticket/11204): Added `figure` and `figcaption` styles to the `contents.css` file so [Enhanced Image](http://ckeditor.com/addon/image2) looks nicer. -* [#11202](http://dev.ckeditor.com/ticket/11202): Fixed: No newline in [BBCode](http://ckeditor.com/addon/bbcode) mode. -* [#10890](http://dev.ckeditor.com/ticket/10890): Fixed: Error thrown when pressing the *Delete* key in a list item. -* [#10055](http://dev.ckeditor.com/ticket/10055): [IE8-10] Fixed: *Delete* pressed on a selected image causes the browser to go back. -* [#11183](http://dev.ckeditor.com/ticket/11183): Fixed: Inserting a horizontal rule or a table in multiple row selection causes a browser crash. Additionally, the [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) method does not insert the element into every range of a selection any more. -* [#11042](http://dev.ckeditor.com/ticket/11042): Fixed: Selection made on an element containing a non-editable element was not auto faked. -* [#11125](http://dev.ckeditor.com/ticket/11125): Fixed: Keyboard navigation through menu and drop-down items will now cycle. -* [#11011](http://dev.ckeditor.com/ticket/11011): Fixed: The [`editor.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-applyStyle) method removes attributes from nested elements. -* [#11179](http://dev.ckeditor.com/ticket/11179): Fixed: [`editor.destroy()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-destroy) does not cleanup content generated by the [Table Resize](http://ckeditor.com/addon/tableresize) plugin for inline editors. -* [#11237](http://dev.ckeditor.com/ticket/11237): Fixed: Table border attribute value is deleted when pasting content from Microsoft Word. -* [#11250](http://dev.ckeditor.com/ticket/11250): Fixed: HTML entities inside the `");return""+encodeURIComponent(a)+""})}function r(a){return a.replace(I,function(a,b){return decodeURIComponent(b)})} -function o(a){return a.replace(/<\!--(?!{cke_protected})[\s\S]+?--\>/g,function(a){return"<\!--"+l+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\>"})}function u(a){return a.replace(/<\!--\{cke_protected\}\{C\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)})}function f(a,b){var c=b._.dataStore;return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function s(a, -b){for(var c=[],d=b.config.protectedSource,e=b._.dataStore||(b._.dataStore={id:1}),f=/<\!--\{cke_temp(comment)?\}(\d*?)--\>/g,d=[//gi,//gi].concat(d),a=a.replace(/<\!--[\s\S]*?--\>/g,function(a){return"<\!--{cke_tempcomment}"+(c.push(a)-1)+"--\>"}),k=0;k"});a=a.replace(f,function(a,b,d){return"<\!--"+ -l+(b?"{C}":"")+encodeURIComponent(c[d]).replace(/--/g,"%2D%2D")+"--\>"});return a.replace(/(['"]).*?\1/g,function(a){return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){e[e.id]=decodeURIComponent(b);return"{cke_protected_"+e.id++ +"}"})})}CKEDITOR.htmlDataProcessor=function(b){var c,d,k=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;this.htmlFilter=d=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(z);c.addRules(t,{applyToAll:true}); -c.addRules(a(b,"data"),{applyToAll:true});d.addRules(J);d.addRules(H,{applyToAll:true});d.addRules(a(b,"html"),{applyToAll:true});b.on("toHtml",function(a){var a=a.data,c=a.dataValue,c=s(c,b),c=n(c,O),c=i(c),c=n(c,C),c=c.replace(v,"$1cke:$2"),c=c.replace(G,""),c=CKEDITOR.env.opera?c:c.replace(/(]*>)(\r\n|\n)/g,"$1$2$2"),d=a.context||b.editable().getName(),f;if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&d=="pre"){d="div";c="
    "+c+"
    ";f=1}d=b.document.createElement(d); -d.setHtml("a"+c);c=d.getHtml().substr(1);c=c.replace(RegExp(" data-cke-"+CKEDITOR.rnd+"-","ig")," ");f&&(c=c.replace(/^
    |<\/pre>$/gi,""));c=c.replace(x,"$1$2");c=r(c);c=u(c);a.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,a.fixForBody===false?false:e(a.enterMode,b.config.autoParagraph))},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,true,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(k.dataFilter,
    -true)},null,null,10);b.on("toHtml",function(a){var a=a.data,b=a.dataValue,c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(true);a.dataValue=o(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^
    /i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,e(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(k.htmlFilter, -true)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue,false,true)},null,null,11);b.on("toDataFormat",function(a){var c=a.data.dataValue,d=k.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(true);c=u(c);c=f(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var e=this.editor,f,k,l;if(b&&typeof b=="object"){f=b.context;c=b.fixForBody;d=b.dontFilter;k=b.filter;l=b.enterMode}else f=b;!f&&f!==null&&(f=e.editable().getName()); -return e.fire("toHtml",{dataValue:a,context:f,fixForBody:c,dontFilter:d,filter:k||e.filter,enterMode:l||e.enterMode}).dataValue},toDataFormat:function(a,b){var c,d,e;if(b){c=b.context;d=b.filter;e=b.enterMode}!c&&c!==null&&(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:e||this.editor.enterMode}).dataValue}};var y=/(?: |\xa0)$/,l="{cke_protected}",p=CKEDITOR.dtd,k=["caption","colgroup","col","thead","tfoot", -"tbody"],q=CKEDITOR.tools.extend({},p.$blockLimit,p.$block),z={elements:{input:m,textarea:m}},t={attributeNames:[[/^on/,"data-cke-pa-on"],[/^data-cke-expando$/,""]]},J={elements:{embed:function(a){var b=a.parent;if(b&&b.name=="object"){var c=b.attributes.width,b=b.attributes.height;if(c)a.attributes.width=c;if(b)a.attributes.height=b}},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes["data-cke-saved-name"])return false}}},H={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]], -attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return false;for(var c=["name","href","src"],d,e=0;e-1&&d>-1&&c!=d)){c=a.parent?a.getIndex(): --1;d=b.parent?b.getIndex():-1}return c>d?1:-1})},param:function(a){a.children=[];a.isEmpty=true;return a},span:function(a){a.attributes["class"]=="Apple-style-span"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];if(b&&b.value)b.value=CKEDITOR.tools.trim(b.value);if(!a.attributes.type)a.attributes.type="text/css"},title:function(a){var b= -a.children[0];!b&&h(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]||""},input:j,textarea:j},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||false}}};if(CKEDITOR.env.ie)H.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})};var w=/<(a|area|img|input|source)\b([^>]*)>/gi,K=/\s(on\w+|href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,C=/(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi, -O=/(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,I=/([^<]*)<\/cke:encoded>/gi,v=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,x=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,G=/]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict"; -CKEDITOR.htmlParser.element=function(a,e){this.name=a;this.attributes=e||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!(!CKEDITOR.dtd.$nonBodyContent[b]&&!CKEDITOR.dtd.$block[b]&&!CKEDITOR.dtd.$listItem[b]&&!CKEDITOR.dtd.$tableContent[b]&&!(CKEDITOR.dtd.$nonEditable[b]||b=="br"));this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}}; -CKEDITOR.htmlParser.cssStyle=function(a){var e={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,d){c=="font-family"&&(d=d.replace(/["']/g,""));e[c.toLowerCase()]=d});return{rules:e,populate:function(a){var c=this.toString();if(c)a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c},toString:function(){var a=[],c; -for(c in e)e[c]&&a.push(c,":",e[c],";");return a.join("")}}}; -(function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(typeof a=="string"?b.name==a:b.name in a)}}var e=function(a,b){a=a[0];b=b[0];return ab?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var e=this,h,m,b=e.getFilterContext(b);if(b.off)return true; -if(!e.parent)a.onRoot(b,e);for(;;){h=e.name;if(!(m=a.onElementName(b,h))){this.remove();return false}e.name=m;if(!(e=a.onElement(b,e))){this.remove();return false}if(e!==this){this.replaceWith(e);return false}if(e.name==h)break;if(e.type!=CKEDITOR.NODE_ELEMENT){this.replaceWith(e);return false}if(!e.name){this.replaceWithChildren();return false}}h=e.attributes;var j,i;for(j in h){i=j;for(m=h[j];;)if(i=a.onAttributeName(b,j))if(i!=j){delete h[j];j=i}else break;else{delete h[j];break}i&&((m=a.onAttribute(b, -e,i,m))===false?delete h[i]:h[i]=m)}e.isEmpty||this.filterChildren(a,false,b);return true},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var g=this.name,h=[],m=this.attributes,j,i;a.openTag(g,m);for(j in m)h.push([j,m[j]]);a.sortAttributes&&h.sort(e);j=0;for(i=h.length;j0)this.children[a-1].next=null;this.parent.add(e,this.getIndex()+1);return e},removeClass:function(a){var b=this.attributes["class"];if(b)(b=CKEDITOR.tools.trim(b.replace(RegExp("(?:\\s+|^)"+a+ -"(?:\\s+|$)")," ")))?this.attributes["class"]=b:delete this.attributes["class"]},hasClass:function(a){var b=this.attributes["class"];return!b?false:RegExp("(?:^|\\s)"+a+"(?=\\s|$)").test(b)},getFilterContext:function(a){var b=[];a||(a={off:false,nonEditable:false,nestedEditable:false});!a.off&&this.attributes["data-cke-processor"]=="off"&&b.push("off",true);!a.nonEditable&&this.attributes.contenteditable=="false"?b.push("nonEditable",true):!a.nestedEditable&&this.attributes.contenteditable=="true"&& -b.push("nestedEditable",true);if(b.length)for(var a=CKEDITOR.tools.copy(a),e=0;e'+c.getValue()+"
    ",CKEDITOR.document); -a.insertAfter(c);c.hide();c.$.form&&b._attachToForm()}else b.setData(a.getHtml(),null,true);b.on("loaded",function(){b.fire("uiReady");b.editable(a);b.container=a;b.setData(b.getData(1));b.resetDirty();b.fire("contentDom");b.mode="wysiwyg";b.fire("mode");b.status="ready";b.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,b)},null,null,1E4);b.on("destroy",function(){if(c){b.container.clearCustomData();b.container.remove();c.show()}b.element.clearCustomData();delete b.element});return b}; -CKEDITOR.inlineAll=function(){var a,e,b;for(b in CKEDITOR.dtd.$editable)for(var c=CKEDITOR.document.getElementsByTag(b),d=0,g=c.count();d{voiceLabel}<{outerEl} class="cke_inner cke_reset" role="presentation">{topHtml}<{outerEl} id="{contentId}" class="cke_contents cke_reset" role="presentation">{bottomHtml}')); -b=CKEDITOR.dom.element.createFromHtml(c.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:[a.lang.editor,a.name].join(", "),topHtml:j?''+j+"":"",contentId:a.ui.spaceId("contents"),bottomHtml:i?''+i+"":"",outerEl:CKEDITOR.env.ie?"span":"div"}));if(m==CKEDITOR.ELEMENT_MODE_REPLACE){e.hide(); -b.insertAfter(e)}else e.append(b);a.container=b;j&&a.ui.space("top").unselectable();i&&a.ui.space("bottom").unselectable();e=a.config.width;m=a.config.height;e&&b.setStyle("width",CKEDITOR.tools.cssLength(e));m&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(m));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}CKEDITOR.replace=function(b,c){return a(b,c,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(b,c,e){return a(b, -c,e,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b",g="",a=k+a.replace(d,function(){return g+k})+g}a=a.replace(/\n/g,"
    ");b||(a=a.replace(RegExp("
    (?=)"),function(a){return e.repeat(a,2)}));a=a.replace(/^ | $/g," ");a=a.replace(/(>|\s) /g,function(a,b){return b+" "}).replace(/ (?=<)/g," ");o(this,"text",a)},insertElement:function(a,b){b?this.insertElementIntoRange(a,b):this.insertElementIntoSelection(a)},insertElementIntoRange:function(a,b){var c=this.editor,e=c.config.enterMode,d=a.getName(), -k=CKEDITOR.dtd.$block[d];if(b.checkReadOnly())return false;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})&&u(b);var g,h;if(k)for(;(g=b.getCommonAncestor(0,1))&&(h=CKEDITOR.dtd[g.getName()])&&(!h||!h[d]);)if(g.getName()in CKEDITOR.dtd.span)b.splitElement(g);else if(b.checkStartOfBlock()&&b.checkEndOfBlock()){b.setStartBefore(g);b.collapse(true);g.remove()}else b.splitBlock(e==CKEDITOR.ENTER_DIV?"div":"p",c.editable());b.insertNode(a); -return true},insertElementIntoSelection:function(a){var b=this.editor,e=b.activeEnterMode,b=b.getSelection(),d=b.getRanges()[0],g=a.getName(),g=CKEDITOR.dtd.$block[g];h(this);if(this.insertElementIntoRange(a,d)){d.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);if(g)if((g=a.getNext(function(a){return c(a)&&!j(a)}))&&g.type==CKEDITOR.NODE_ELEMENT&&g.is(CKEDITOR.dtd.$block))g.getDtd()["#"]?d.moveToElementEditStart(g):d.moveToElementEditEnd(a);else if(!g&&e!=CKEDITOR.ENTER_BR){g=d.fixBlock(true,e==CKEDITOR.ENTER_DIV? -"div":"p");d.moveToElementEditStart(g)}}b.selectRanges([d]);m(this,CKEDITOR.env.opera)},setData:function(a,b){b||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.editor.fire("dataReady")},getData:function(a){var b=this.getHtml();a||(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)}, -setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")||a.config.ignoreEmptyParagraph!==false&&(b=b.replace(i,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus", -function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type=="Control"||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"cke_editable_inline": -a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?"cke_editable_themed":"");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",function(a){CKEDITOR.env.opera&&CKEDITOR.document.getActive().equals(this.isInline()?this:this.getWindow().getFrame())?a.cancel():this.hasFocus=false},null,null,-1);this.on("focus",function(){this.hasFocus=true},null,null, --1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=true;a.once("contentDom",function(){a.focusManager.focus()})}this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var e=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var d=a.config.contentsLangDirection;this.getDirection(1)!=d&&this.changeAttr("dir",d);var l=CKEDITOR.getCss();if(l){d=e.getHead(); -if(!d.getCustomData("stylesheet")){l=e.appendStyleText(l);l=new CKEDITOR.dom.element(l.ownerNode||l.owningElement);d.setCustomData("stylesheet",l);l.data("cke-temp",1)}}d=e.getCustomData("stylesheet_ref")||0;e.setCustomData("stylesheet_ref",d+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){var a=a.data,b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains("a");b&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()}); -var p={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return true;var c=b.data.keyCode,e;if(c in p){var b=a.getSelection(),d,l=b.getRanges()[0],h=l.startPath(),i,j,m,c=c==8;if(CKEDITOR.env.ie&&CKEDITOR.env.version<11&&(d=b.getSelectedElement())||(d=g(b))){a.fire("saveSnapshot");l.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START);d.remove();l.select();a.fire("saveSnapshot");e=1}else if(l.collapsed)if((i=h.block)&&(m=i[c?"getPrevious":"getNext"](n))&&m.type==CKEDITOR.NODE_ELEMENT&&m.is("table")&& -l[c?"checkStartOfBlock":"checkEndOfBlock"]()){a.fire("saveSnapshot");l[c?"checkEndOfBlock":"checkStartOfBlock"]()&&i.remove();l["moveToElementEdit"+(c?"End":"Start")](m);l.select();a.fire("saveSnapshot");e=1}else if(h.blockLimit&&h.blockLimit.is("td")&&(j=h.blockLimit.getAscendant("table"))&&l.checkBoundaryOfElement(j,c?CKEDITOR.START:CKEDITOR.END)&&(m=j[c?"getPrevious":"getNext"](n))){a.fire("saveSnapshot");l["moveToElementEdit"+(c?"End":"Start")](m);l.checkStartOfBlock()&&l.checkEndOfBlock()?m.remove(): -l.select();a.fire("saveSnapshot");e=1}else if((j=h.contains(["td","th","caption"]))&&l.checkBoundaryOfElement(j,c?CKEDITOR.START:CKEDITOR.END))e=1}return!e});a.blockless&&(CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)&&this.attachListener(this,"keyup",function(b){if(b.data.getKeystroke()in p&&!this.getFirst(c)){this.appendBogus();b=a.createRange();b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START);b.select()}});this.attachListener(this,"dblclick",function(b){if(a.readOnly)return false;b={element:b.data.getTarget()}; -a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);!CKEDITOR.env.ie&&!CKEDITOR.env.opera&&this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget();if(c.is("img","hr","input","textarea","select")){a.getSelection().selectElement(c);c.is("input","textarea","select")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(b.data.$.button==2){b=b.data.getTarget();if(!b.getOuterHtml().replace(i,"")){var c=a.createRange(); -c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()});this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()})}}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());a=this.getDocument(); -var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");if(--c)a.setCustomData("stylesheet_ref",c);else{a.removeCustomData("stylesheet_ref");b.removeCustomData("stylesheet").remove()}}this.editor.fire("contentDomUnload");delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var j= -CKEDITOR.dom.walker.bogus(),i=/(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,n=CKEDITOR.dom.walker.whitespaces(true),r=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on("instanceLoaded",function(b){var c=b.editor;c.on("insertElement",function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))){a.getAttribute("contentEditable")!="false"&&a.data("cke-editable",a.hasAttribute("contenteditable")? -"true":"1");a.setAttribute("contentEditable",false)}});c.on("selectionChange",function(b){if(!c.readOnly){var e=c.getSelection();if(e&&!e.isLocked){e=c.checkDirty();c.fire("lockSnapshot");a(b);c.fire("unlockSnapshot");!e&&c.resetDirty()}}})});CKEDITOR.on("instanceCreated",function(a){var b=a.editor;b.on("mode",function(){var a=b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE? -"top":"contents")){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml(''+this.lang.common.editorHelp+"");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");var o=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,e){var d,k,l,g,p=[],t=e.range.startContainer;d=e.range.startPath();for(var t= -h[t.getName()],i=0,j=c.getChildren(),m=j.count(),n=-1,J=-1,r=0,o=d.contains(h.$list);i-1)p[n].firstNotAllowed=1;if(J>-1)p[J].lastNotAllowed=1;return p}function e(b,c){var d=[],k=b.getChildren(),l=k.count(),g,p=0,i=h[c],t=!b.is(h.$inline)||b.is("br");for(t&&d.push(" ");p ",o.document);o.insertNode(x);o.setStartAfter(x)}G=new CKEDITOR.dom.elementPath(o.startContainer);n.endPath=B=new CKEDITOR.dom.elementPath(o.endContainer);if(!o.collapsed){var v=B.block||B.blockLimit,V=o.getCommonAncestor();v&&(!v.equals(V)&&!v.contains(V)&&o.checkEndOfBlock())&&n.zombies.push(v);o.deleteContents()}for(;(D=a(o.startContainer)&& -o.startContainer.getChild(o.startOffset-1))&&a(D)&&D.isBlockBoundary()&&G.contains(D);)o.moveToPosition(D,CKEDITOR.POSITION_BEFORE_END);g(o,n.blockLimit,G,B);if(x){o.setEndBefore(x);o.collapse();x.remove()}x=o.startPath();if(v=x.contains(d,false,1)){o.splitElement(v);n.inlineStylesRoot=v;n.inlineStylesPeak=x.lastElement}x=o.createBookmark();(v=x.startNode.getPrevious(c))&&a(v)&&d(v)&&u.push(v);(v=x.startNode.getNext(c))&&a(v)&&d(v)&&u.push(v);for(v=x.startNode;(v=v.getParent())&&d(v);)u.push(v);o.moveToBookmark(x); -if(x=r){x=n.range;if(n.type=="text"&&n.inlineStylesRoot){D=n.inlineStylesPeak;o=D.getDocument().createText("{cke-peak}");for(u=n.inlineStylesRoot.getParent();!D.equals(u);){o=o.appendTo(D.clone());D=D.getParent()}r=o.getOuterHtml().split("{cke-peak}").join(r)}D=n.blockLimit.getName();if(/^\s+|\s+$/.test(r)&&"span"in CKEDITOR.dtd[D])var P=' ',r=P+r+P;r=n.editor.dataProcessor.toHtml(r,{context:null,fixForBody:false,dontFilter:n.dontFilter,filter:n.editor.activeFilter, -enterMode:n.editor.activeEnterMode});D=x.document.createElement("body");D.setHtml(r);if(P){D.getFirst().remove();D.getLast().remove()}if((P=x.startPath().block)&&!(P.getChildCount()==1&&P.getBogus()))a:{var E;if(D.getChildCount()==1&&a(E=D.getFirst())&&E.is(t)){P=E.getElementsByTag("*");x=0;for(u=P.count();x0;else{A=E.startPath();if(!B.isBlock&&n.editor.config.autoParagraph!==false&&(n.editor.activeEnterMode!=CKEDITOR.ENTER_BR&&n.editor.editable().equals(A.blockLimit)&&!A.block)&&(Q=n.editor.activeEnterMode!=CKEDITOR.ENTER_BR&&n.editor.config.autoParagraph!==false?n.editor.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p":false)){Q=P.createElement(Q);Q.appendBogus();E.insertNode(Q);CKEDITOR.env.needsBrFiller&&(L=Q.getBogus())&&L.remove();E.moveToPosition(Q, -CKEDITOR.POSITION_BEFORE_END)}if((A=E.startPath().block)&&!A.equals(F)){if(L=A.getBogus()){L.remove();D.push(A)}F=A}B.firstNotAllowed&&(o=1);if(o&&B.isElement){A=E.startContainer;for(M=null;A&&!h[A.getName()][B.name];){if(A.equals(r)){A=null;break}M=A;A=A.getParent()}if(A){if(M){S=E.splitElement(M);n.zombies.push(S);n.zombies.push(M)}}else{M=r.getName();T=!x;A=x==G.length-1;M=e(B.node,M);for(var N=[],W=M.length,Z=0,aa=void 0,ba=0,ca=-1;Z0;){e=a.getItem(b);if(!CKEDITOR.tools.trim(e.getHtml())){e.appendBogus();CKEDITOR.env.ie&&(CKEDITOR.env.version<9&&e.getChildCount())&&e.getFirst().remove()}}}return function(e){var d= -e.startContainer,k=d.getAscendant("table",1),g=false;c(k.getElementsByTag("td"));c(k.getElementsByTag("th"));k=e.clone();k.setStart(d,0);k=a(k).lastBackward();if(!k){k=e.clone();k.setEndAt(d,CKEDITOR.POSITION_BEFORE_END);k=a(k).lastForward();g=true}k||(k=d);if(k.is("table")){e.setStartAt(k,CKEDITOR.POSITION_BEFORE_START);e.collapse(true);k.remove()}else{k.is({tbody:1,thead:1,tfoot:1})&&(k=b(k,"tr",g));k.is("tr")&&(k=b(k,k.getParent().is("thead")?"th":"td",g));(d=k.getBogus())&&d.remove();e.moveToPosition(k, -g?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END)}}}()})(); -(function(){function a(){var a=this._.fakeSelection,b;if(a){b=this.getSelection(1);if(!b||!b.isHidden()){a.reset();a=0}}if(!a){a=b||this.getSelection(1);if(!a||a.getType()==CKEDITOR.SELECTION_NONE)return}this.fire("selectionCheck",a);b=this.elementPath();if(!b.compare(this._.selectionPreviousPath)){if(CKEDITOR.env.webkit)this._.previousActive=this.document.getActive();this._.selectionPreviousPath=b;this.fire("selectionChange",{selection:a,path:b})}}function e(){r=true;if(!n){b.call(this);n=CKEDITOR.tools.setTimeout(b, -200,this)}}function b(){n=null;if(r){CKEDITOR.tools.setTimeout(a,0,this);r=false}}function c(a){function b(c,e){return!c||c.type==CKEDITOR.NODE_TEXT?false:a.clone()["moveToElementEdit"+(e?"End":"Start")](c)}if(!(a.root instanceof CKEDITOR.editable))return false;var c=a.startContainer,e=a.getPreviousNode(o,null,c),d=a.getNextNode(o,null,c);return b(e)||b(d,1)||!e&&!d&&!(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()&&c.getBogus())?true:false}function d(a){return a.getCustomData("cke-fillingChar")} -function g(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(b!==false){var e,d=a.getDocument().getSelection().getNative(),f=d&&d.type!="None"&&d.getRangeAt(0);if(c.getLength()>1&&f&&f.intersectsNode(c.$)){e=[d.anchorOffset,d.focusOffset];f=d.focusNode==c.$&&d.focusOffset>0;d.anchorNode==c.$&&d.anchorOffset>0&&e[0]--;f&&e[1]--;var g;f=d;if(!f.isCollapsed){g=f.getRangeAt(0);g.setStart(f.anchorNode,f.anchorOffset);g.setEnd(f.focusNode,f.focusOffset);g=g.collapsed}g&&e.unshift(e.pop())}}c.setText(h(c.getText())); -if(e){c=d.getRangeAt(0);c.setStart(c.startContainer,e[0]);c.setEnd(c.startContainer,e[1]);d.removeAllRanges();d.addRange(c)}}}function h(a){return a.replace(/\u200B( )?/g,function(a){return a[1]?" ":""})}function m(a,b,c){var e=a.on("focus",function(a){a.cancel()},null,null,-100);if(CKEDITOR.env.ie)var d=a.getDocument().on("selectionchange",function(a){a.cancel()},null,null,-100);else{var f=new CKEDITOR.dom.range(a);f.moveToElementEditStart(a);var g=a.getDocument().$.createRange();g.setStart(f.startContainer.$, -f.startOffset);g.collapse(1);b.removeAllRanges();b.addRange(g)}c&&a.focus();e.removeListener();d&&d.removeListener()}function j(a){var b=CKEDITOR.dom.element.createFromHtml('
     
    ',a.document);a.fire("lockSnapshot");a.editable().append(b);var c=a.getSelection(),e=a.createRange(),d=c.root.on("selectionchange",function(a){a.cancel()},null,null,0);e.setStartAt(b,CKEDITOR.POSITION_AFTER_START); -e.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);c.selectRanges([e]);d.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=b}function i(a){var b={37:1,39:1,8:1,46:1};return function(c){var e=c.data.getKeystroke();if(b[e]){var d=a.getSelection().getRanges(),f=d[0];if(d.length==1&&f.collapsed)if((e=f[e<38?"getPreviousEditableNode":"getNextEditableNode"]())&&e.type==CKEDITOR.NODE_ELEMENT&&e.getAttribute("contenteditable")=="false"){a.getSelection().fake(e);c.data.preventDefault();c.cancel()}}}} -var n,r,o=CKEDITOR.dom.walker.invisible(1),u=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return false}}function b(a){return function(b){var c=b.editor,e=c.createRange(),d;if(!(d=e.moveToClosestEditablePosition(b.selected,a)))d=e.moveToClosestEditablePosition(b.selected,!a);d&&c.getSelection().selectRanges([e]);c.fire("saveSnapshot");b.selected.remove();if(!d){e.moveToElementEditablePosition(c.editable()); -c.getSelection().selectRanges([e])}c.fire("saveSnapshot");return false}}var c=a(),e=a(1);return{37:c,38:c,39:e,40:e,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(b){function c(){var a=d.getSelection();a&&a.removeAllRanges()}var d=b.editor;d.on("contentDom",function(){var b=d.document,c=CKEDITOR.document,l=d.editable(),h=b.getBody(),p=b.getDocumentElement(),j=l.isInline(),n,m;CKEDITOR.env.gecko&&l.attachListener(l,"focus",function(a){a.removeListener();if(n!==0)if((a=d.getSelection().getNative())&& -a.isCollapsed&&a.anchorNode==l.$){a=d.createRange();a.moveToElementEditStart(l);a.select()}},null,null,-2);l.attachListener(l,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){n&&CKEDITOR.env.webkit&&(n=d._.previousActive&&d._.previousActive.equals(b.getActive()));d.unlockSelection(n);n=0},null,null,-1);l.attachListener(l,"mousedown",function(){n=0});if(CKEDITOR.env.ie||CKEDITOR.env.opera||j){var o=function(){m=new CKEDITOR.dom.selection(d.getSelection());m.lock()};f?l.attachListener(l,"beforedeactivate", -o,null,null,-1):l.attachListener(d,"selectionCheck",o,null,null,-1);l.attachListener(l,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){d.lockSelection(m);n=1},null,null,-1);l.attachListener(l,"mousedown",function(){n=0})}if(CKEDITOR.env.ie&&!j){var r;l.attachListener(l,"mousedown",function(a){if(a.data.$.button==2){a=d.document.getSelection();if(!a||a.getType()==CKEDITOR.SELECTION_NONE)r=d.window.getScrollPosition()}});l.attachListener(l,"mouseup",function(a){if(a.data.$.button==2&&r){d.document.$.documentElement.scrollLeft= -r.x;d.document.$.documentElement.scrollTop=r.y}r=null});if(b.$.compatMode!="BackCompat"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)p.on("mousedown",function(a){function b(a){a=a.data.$;if(e){var c=h.$.createTextRange();try{c.moveToPoint(a.x,a.y)}catch(d){}e.setEndPoint(g.compareEndPoints("StartToStart",c)<0?"EndToEnd":"StartToStart",c);e.select()}}function d(){p.removeListener("mousemove",b);c.removeListener("mouseup",d);p.removeListener("mouseup",d);e.select()}a=a.data;if(a.getTarget().is("html")&& -a.$.y7&&CKEDITOR.env.version<11){p.on("mousedown",function(a){if(a.data.getTarget().is("html")){c.on("mouseup",v);p.on("mouseup",v)}});var v=function(){c.removeListener("mouseup",v);p.removeListener("mouseup",v);var a=CKEDITOR.document.$.selection,d=a.createRange();a.type!="None"&&d.parentElement().ownerDocument== -b.$&&d.select()}}}}l.attachListener(l,"selectionchange",a,d);l.attachListener(l,"keyup",e,d);l.attachListener(l,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){d.forceNextSelectionCheck();d.selectionChange(1)});if(j?CKEDITOR.env.webkit||CKEDITOR.env.gecko:CKEDITOR.env.opera){var x;l.attachListener(l,"mousedown",function(){x=1});l.attachListener(b.getDocumentElement(),"mouseup",function(){x&&e.call(d);x=0})}else l.attachListener(CKEDITOR.env.ie?l:b.getDocumentElement(),"mouseup",e,d);CKEDITOR.env.webkit&& -l.attachListener(b,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:g(l)}},null,null,-1);l.attachListener(l,"keydown",i(d),null,null,-1)});d.on("contentDomUnload",d.forceNextSelectionCheck,d);d.on("dataReady",function(){delete d._.fakeSelection;delete d._.hiddenSelectionContainer;d.selectionChange(1)});d.on("loadSnapshot",function(){var a=d.editable().getLast(function(a){return a.type==CKEDITOR.NODE_ELEMENT});a&&a.hasAttribute("data-cke-hidden-sel")&& -a.remove()},null,null,100);CKEDITOR.env.ie9Compat&&d.on("beforeDestroy",c,null,null,9);CKEDITOR.env.webkit&&d.on("setData",c);d.on("contentDomUnload",function(){d.unlockSelection()});d.on("key",function(a){if(d.mode=="wysiwyg"){var b=d.getSelection();if(b.isFake){var c=u[a.data.keyCode];if(c)return c({editor:d,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});CKEDITOR.on("instanceReady",function(a){var b=a.editor;if(CKEDITOR.env.webkit){b.on("selectionChange",function(){var a=b.editable(), -c=d(a);c&&(c.getCustomData("ready")?g(a):c.setCustomData("ready",1))},null,null,-1);b.on("beforeSetMode",function(){g(b.editable())},null,null,-1);var c,e,a=function(){var a=b.editable();if(a)if(a=d(a)){var f=b.document.$.defaultView.getSelection();f.type=="Caret"&&f.anchorNode==a.$&&(e=1);c=a.getText();a.setText(h(c))}},f=function(){var a=b.editable();if(a)if(a=d(a)){a.setText(c);if(e){b.document.$.defaultView.getSelection().setPosition(a.$,a.getLength());e=0}}};b.on("beforeUndoImage",a);b.on("afterUndoImage", -f);b.on("beforeGetData",a,null,null,0);b.on("getData",f)}});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:e).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if((this._.savedSelection||this._.fakeSelection)&&!a)return this._.savedSelection||this._.fakeSelection;return(a=this.editable())&&this.mode=="wysiwyg"?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&& -a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;return true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable? -this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var f=typeof window.getSelection!="function",s=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection)var b=a,a=a.root;var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:s++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=a=c?a:this.document.getBody();this.isLocked= -0;this._={cache:{}};if(b){CKEDITOR.tools.extend(this._.cache,b._.cache);this.isFake=b.isFake;this.isLocked=b.isLocked;return this}b=f?this.document.$.selection:this.document.getWindow().$.getSelection();if(CKEDITOR.env.webkit)(b.type=="None"&&this.document.getActive().equals(a)||b.type=="Caret"&&b.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT)&&m(a,b);else if(CKEDITOR.env.gecko)b&&(this.document.getActive().equals(a)&&b.anchorNode&&b.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT)&&m(a,b,true);else if(CKEDITOR.env.ie){var d; -try{d=this.document.getActive()}catch(e){}if(f)b.type=="None"&&(d&&d.equals(this.document.getDocumentElement()))&&m(a,null,true);else{(b=b&&b.anchorNode)&&(b=new CKEDITOR.dom.node(b));d&&(d.equals(this.document.getDocumentElement())&&b&&(a.equals(b)||a.contains(b)))&&m(a,null,true)}}d=this.getNative();var g,h;if(d)if(d.getRangeAt)g=(h=d.rangeCount&&d.getRangeAt(0))&&new CKEDITOR.dom.node(h.commonAncestorContainer);else{try{h=d.createRange()}catch(i){}g=h&&CKEDITOR.dom.element.get(h.item&&h.item(0)|| -h.parentElement())}if(!g||!(g.type==CKEDITOR.NODE_ELEMENT||g.type==CKEDITOR.NODE_TEXT)||!this.root.equals(g)&&!this.root.contains(g)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=null;this._.cache.selectedText="";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var y={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype= -{getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=f?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:f?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;if(d=="Text")b=CKEDITOR.SELECTION_TEXT;if(d=="Control")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache; -if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-c.startOffset==1&&y[d.childNodes[c.startOffset].nodeName.toLowerCase()])b=CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=f?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c); -var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,f,g,k=b.duplicate(),l=0,h=e.length-1,i=-1,j,n;l<=h;){i=Math.floor((l+h)/2);f=e[i];k.moveToElementText(f);j=k.compareEndPoints("StartToStart",b);if(j>0)h=i-1;else if(j<0)l=i+1;else return{container:d,offset:a(f)}}if(i==-1||i==e.length-1&&j<0){k.moveToElementText(d);k.setEndPoint("StartToStart",b);k=k.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!k){f=e[e.length-1];return f.nodeType!=CKEDITOR.NODE_TEXT? -{container:d,offset:e.length}:{container:f,offset:f.nodeValue.length}}for(d=e.length;k>0&&d>0;){g=e[--d];if(g.nodeType==CKEDITOR.NODE_TEXT){n=g;k=k-g.nodeValue.length}}return{container:n,offset:-k}}k.collapse(j>0?true:false);k.setEndPoint(j>0?"StartToStart":"EndToStart",b);k=k.text.replace(/(\r\n|\r)/g,"\n").length;if(!k)return{container:d,offset:a(f)+(j>0?0:1)};for(;k>0;)try{g=f[j>0?"previousSibling":"nextSibling"];if(g.nodeType==CKEDITOR.NODE_TEXT){k=k-g.nodeValue.length;n=g}f=g}catch(m){return{container:d, -offset:a(f)}}return{container:n,offset:j>0?-k:n.nodeValue.length+k}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d== -CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e=b.getLength()?j.setStartAfter(b):j.setStartBefore(b));g&&g.type==CKEDITOR.NODE_TEXT&&(i?j.setEndAfter(g):j.setEndBefore(g));b=new CKEDITOR.dom.walker(j);b.evaluator=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.isReadOnly()){var b=f.clone();f.setEndBefore(a);f.collapsed&&d.splice(e--,1);if(!(a.getPosition(j.endContainer)&CKEDITOR.POSITION_CONTAINS)){b.setStartAfter(a); -b.collapsed||d.splice(e+1,0,b)}return true}return false};b.next()}}return c.ranges}}(),getStartElement:function(){var a=this._.cache;if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount(): -b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);else break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();b=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)}, -function(){for(var a=b.getRanges()[0].clone(),c,d,e=2;e&&(!(c=a.getEnclosedNode())||!(c.type==CKEDITOR.NODE_ELEMENT&&y[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=f?b.type=="Control"?"":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement(); -this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges(),d=this.isFake;this.isLocked=0;this.reset();if(a)(a=b||c[0]&&c[0].getCommonAncestor())&&a.getAscendant("body",1)&&(d?this.fake(b):b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection&&this.rev==a._.fakeSelection.rev){delete a._.fakeSelection; -var b=a._.hiddenSelectionContainer;if(b){a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot")}delete a._.hiddenSelectionContainer}this.rev=s++},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){var b=this.root.editor,b=b&&b._.hiddenSelectionContainer;this.reset();if(b)for(var b=this.root,d,e=0;e1){i=a[a.length-1];a[0].setEnd(i.endContainer,i.endOffset)}i=a[0];var a=i.collapsed,m,o,r;if((d=i.getEnclosedNode())&&d.type==CKEDITOR.NODE_ELEMENT&&d.getName()in y&&(!d.is("a")||!d.getText()))try{r=d.$.createControlRange();r.addElement(d.$);r.select();return}catch(s){}(i.startContainer.type==CKEDITOR.NODE_ELEMENT&&i.startContainer.getName()in b||i.endContainer.type==CKEDITOR.NODE_ELEMENT&&i.endContainer.getName()in b)&&i.shrink(CKEDITOR.NODE_ELEMENT,true);r=i.createBookmark();b= -r.startNode;if(!a)h=r.endNode;r=i.document.$.body.createTextRange();r.moveToElementText(b.$);r.moveStart("character",1);if(h){j=i.document.$.body.createTextRange();j.moveToElementText(h.$);r.setEndPoint("EndToEnd",j);r.moveEnd("character",-1)}else{m=b.getNext(n);o=b.hasAscendant("pre");m=!(m&&m.getText&&m.getText().match(j))&&(o||!b.hasPrevious()||b.getPrevious().is&&b.getPrevious().is("br"));o=i.document.createElement("span");o.setHtml("");o.insertBefore(b);m&&i.document.createText("").insertBefore(b)}i.setStartBefore(b); -b.remove();if(a){if(m){r.moveStart("character",-1);r.select();i.document.$.selection.clear()}else r.select();i.moveToPosition(o,CKEDITOR.POSITION_BEFORE_START);o.remove()}else{i.setEndBefore(h);h.remove();r.select()}}else{h=this.getNative();if(!h)return;if(CKEDITOR.env.opera){r=this.document.$.createRange();r.selectNodeContents(this.root.$);h.addRange(r)}this.removeAllRanges();for(r=0;r= -0){i.collapse(1);o.setEnd(i.endContainer.$,i.endOffset)}else throw u;}h.addRange(o)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a){var b=this.root.editor;this.reset();j(b);var c=this._.cache,d=new CKEDITOR.dom.range(this.root);d.setStartBefore(a);d.setEndAfter(a);c.ranges=new CKEDITOR.dom.rangeList(d);c.selectedElement=c.startElement=a;c.type=CKEDITOR.SELECTION_ELEMENT;c.selectedText=c.nativeSel=null;this.isFake=1;this.rev=s++;b._.fakeSelection=this;this.root.fire("selectionchange")}, -isHidden:function(){var a=this.getCommonAncestor();a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(a){for(var b=[],c=0;c]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g, -" ");f=f.replace(/]*>/gi,"\n");if(CKEDITOR.env.ie){var g=a.getDocument().createElement("div");g.append(e);e.$.outerHTML="
    "+f+"
    ";e.copyAttributes(g.getFirst());e=g.getFirst().remove()}else e.setHtml(f);b=e}else f?b=r(c?[a.getHtml()]:i(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,h;if((h=c.getPrevious(C))&&h.type==CKEDITOR.NODE_ELEMENT&&h.is("pre")){d=n(h.getHtml(),/\n$/,"")+"\n\n"+n(c.getHtml(),/^\n/,"");CKEDITOR.env.ie?c.$.outerHTML="
    "+d+"
    ":c.setHtml(d);h.remove()}}else c&& -s(b)}function i(a){a.getName();var b=[];n(a.getOuterHtml(),/(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+""+c+"
    "}).replace(/([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function n(a,b,c){var d="",e="",a=a.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function r(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));
    -for(var d=0;d"),e=e.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat(" ",a.length-1)+" "});if(c){var f=b.clone();f.setHtml(e);c.append(f)}else b.setHtml(e)}return c||b}function o(a,b){var c=this._.definition,
    -d=c.attributes,c=c.styles,e=k(this)[a.getName()],g=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(c),h;for(h in d)if(!((h=="class"||this._.definition.fullMatch)&&a.getAttribute(h)!=q(h,d[h]))&&!(b&&h.slice(0,5)=="data-")){g=a.hasAttribute(h);a.removeAttribute(h)}for(var i in c)if(!(this._.definition.fullMatch&&a.getStyle(i)!=q(i,c[i],true))){g=g||!!a.getStyle(i);a.removeStyle(i)}f(a,e,t[a.getName()]);g&&(this._.definition.alwaysRemoveElement?s(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==
    -CKEDITOR.ENTER_BR&&!a.hasAttributes()?s(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function u(a){for(var b=k(this),c=a.getElementsByTag(this.element),d,e=c.count();--e>=0;){d=c.getItem(e);d.isReadOnly()||o.call(this,d,true)}for(var g in b)if(g!=this.element){c=a.getElementsByTag(g);for(e=c.count()-1;e>=0;e--){d=c.getItem(e);d.isReadOnly()||f(d,b[g])}}}function f(a,b,c){if(b=b&&b.attributes)for(var d=0;d",a||b.name,"");return c.join("")},getDefinition:function(){return this._.definition}};
    -CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(H,";"));for(var e in b){var f=b[e],g=(e+":"+f).replace(H,";");f=="inherit"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d};var O=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,I=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED})();
    -CKEDITOR.styleCommand=function(a,e){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,e,true)};CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);
    -CKEDITOR.loadStylesSet=function(a,e,b){CKEDITOR.stylesSet.addExternal(a,e,"");CKEDITOR.stylesSet.load(a,b)};
    -CKEDITOR.editor.prototype.getStylesSet=function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);else{var e=this,b=e.config.stylesCombo_stylesSet||e.config.stylesSet;if(b===false)a(null);else if(b instanceof Array){e._.stylesDefinitions=b;a(b)}else{b||(b="default");var b=b.split(":"),c=b[0];CKEDITOR.stylesSet.addExternal(c,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(c,function(b){e._.stylesDefinitions=b[c];a(e._.stylesDefinitions)})}}};
    -CKEDITOR.dom.comment=function(a,e){typeof a=="string"&&(a=(e?e.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"<\!--"+this.$.nodeValue+"--\>"}});"use strict";
    -(function(){var a={},e={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit||b in CKEDITOR.dtd.$empty||(e[b]=1);CKEDITOR.dom.elementPath=function(b,d){var g=null,h=null,m=[],j=b,i,d=d||b.getDocument().getBody();do if(j.type==CKEDITOR.NODE_ELEMENT){m.push(j);if(!this.lastElement){this.lastElement=j;if(j.is(CKEDITOR.dtd.$object)||j.getAttribute("contenteditable")=="false")continue}if(j.equals(d))break;if(!h){i=j.getName();
    -j.getAttribute("contenteditable")=="true"?h=j:!g&&e[i]&&(g=j);if(a[i]){var n;if(n=!g){if(i=i=="div"){a:{i=j.getChildren();n=0;for(var r=i.count();n-1}:typeof a=="function"?c=a:typeof a=="object"&&(c=
    -function(b){return b.getName()in a});var d=this.elements,g=d.length;e&&g--;if(b){d=Array.prototype.slice.call(d,0);d.reverse()}for(e=0;e=c){g=d.createText("");g.insertAfter(this)}else{a=d.createText("");a.insertAfter(g);a.remove()}return g},substring:function(a,
    -e){return typeof e!="number"?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,e)}});
    -(function(){function a(a,c,d){var e=a.serializable,h=c[d?"endContainer":"startContainer"],m=d?"endOffset":"startOffset",j=e?c.document.getById(a.startNode):a.startNode,a=e?c.document.getById(a.endNode):a.endNode;if(h.equals(j.getPrevious())){c.startOffset=c.startOffset-h.getLength()-a.getPrevious().getLength();h=a.getNext()}else if(h.equals(a.getPrevious())){c.startOffset=c.startOffset-h.getLength();h=a.getNext()}h.equals(j.getParent())&&c[m]++;h.equals(a.getParent())&&c[m]++;c[d?"endContainer":"startContainer"]=
    -h;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,e)};var e={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],e;return{getNextRange:function(h){e=e==void 0?0:e+1;var m=a[e];if(m&&a.length>1){if(!e)for(var j=a.length-1;j>=0;j--)d.unshift(a[j].createBookmark(true));if(h)for(var i=0;a[e+i+1];){for(var n=m.document,h=0,j=n.getById(d[i].endNode),n=n.getById(d[i+
    -1].startNode);;){j=j.getNextSourceNode(false);if(n.equals(j))h=1;else if(c(j)||j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary())continue;break}if(!h)break;i++}for(m.moveToBookmark(d.shift());i--;){j=a[++e];j.moveToBookmark(d.shift());m.setEnd(j.endContainer,j.endOffset)}}return m}}},createBookmarks:function(b){for(var c=[],d,e=0;eb?-1:1}),e=0,g;e
    ',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var e=a.getComputedStyle("border-top-color"),b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!!(e&&e==b)}catch(c){CKEDITOR.env.hc=false}a.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+" cke_hc"; -CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending){delete CKEDITOR._.pending;for(e=0;ec;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');");return function(c, -a){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "), -panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; -return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\[/g, -"{").replace(/\]/g,"}")}}();CKEDITOR.plugins.add("dialogui",{onLoad:function(){var i=function(b){this._||(this._={});this._["default"]=this._.initValue=b["default"]||"";this._.required=b.required||!1;for(var a=[this._],d=1;darguments.length)){var c=i.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+"_label";this._.children=[];CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"div",null,{role:"presentation"},function(){var f=[],d=a.required?" cke_required":"";"horizontal"!= -a.labelLayout?f.push('",'
    ',e.call(this,b,a),"
    "):(d={type:"hbox",widths:a.widths,padding:0,children:[{type:"html",html:'
    ")});this._.element.on("keydown",i)},onHide:function(){this._.element.removeListener("keydown",i)}}})})(); \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/plugins/templates/templates/default.js b/addons/web/static/lib/ckeditor/plugins/templates/templates/default.js deleted file mode 100644 index d8c172e3f76..00000000000 --- a/addons/web/static/lib/ckeditor/plugins/templates/templates/default.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -CKEDITOR.addTemplates("default",{imagesPath:CKEDITOR.getUrl(CKEDITOR.plugins.getPath("templates")+"templates/images/"),templates:[{title:"Image and Title",image:"template1.gif",description:"One main image with a title and text that surround the image.",html:'

    Type the title here

    Type the text here

    '},{title:"Strange Template",image:"template2.gif",description:"A template that defines two colums, each one with a title, and some text.", -html:'

    Title 1

    Title 2

    Text 1Text 2

    More text goes here.

    '},{title:"Text and Table",image:"template3.gif",description:"A title with some text and a table.",html:'

    Title goes here

    Table title
       
       
       

    Type the text here

    '}]}); \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/plugins/templates/templates/images/template1.gif b/addons/web/static/lib/ckeditor/plugins/templates/templates/images/template1.gif deleted file mode 100644 index efdabbebd4503ceb55c948fa73b9b83cbd373e57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_!bNk%w1VPpVC0FeLyva+%O00960{{R30A^8LV00000EC2ui0Av7000092 zgpaAq?GK}zwAu@W-n{z{hT=$;9b%^H%BpA!$8!13_AS@=&Xal%3~GMDB95pDD3{Ep z^T{;k4xj+g%7JRP+$IPq!1Bb&uKB$DQa@x|8x8NO4b`hO25#TOnRw~9=3yE0xyeE4CQ8$(2)Mz>8udZCXX=BRr7DZbW_#-a zYZEHlJM(KAEc4dditDMnJ4(CC+&uK06fIp0D*Z|wX5EYpGb{?;a*WKVoEoWp!Y!`y zeo4*}FFC(bZf@duda#%D-q zaHzPUxA@lRm;@PFNk%w1VPpVC0FeLyva+%O00960{{R30A^8LV00000EC2ui0Av7000092 zgpaAq?GK}zwAu@W-n{z{hT=$;9b%^H%BpA!$8!13_AS@=&Xal%3~GMDB93TG#*l%g z^9hYgr_`$T`us4l+^+W<)gC_JviY3#AeC&_xD98m<8-m1jvsB&<_@0q~XXRsCap^IRqK$(K#c!N9pBf82AawVH$?WN){q&IjedXiz+EX zOS+od%WDgp+d909toAG5`lTy-9D18rOxWx+T}>D*o&1Qa9n5V^96nACtqfi*?*05t zZSMX~zfpQ^<%jRPUfiDEO8=eEuB)DKv}S_cJW8uTxqL`=(AMXYB~Aenu4SM=e_ zrj6M`kqsZ_xrlC}y^5evW>krApudqWP2zFM5Fo{b%sA$2wGU)SI5vkKVQCad(WEn$ zGF`IFr&KONpB8ayRSwduHn4I{;q@zxs8h=VDkqjl*t8(;n#c+zd*_U=jy QeEa(S3plV~2n7HDJNoX*`2YX_ diff --git a/addons/web/static/lib/ckeditor/plugins/widget/images/handle.png b/addons/web/static/lib/ckeditor/plugins/widget/images/handle.png deleted file mode 100644 index 8d1c9765d4a94dbae6d53c72caa95f85f6d0dcec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^{22?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4oV@X`PMD>y9wfHk0 za<`MaJN!NE8SDxc>o2WgbhvC%DRZ2ML9mc%!(5x@nX(R_oQm{0zZQL;w&c#`M>r#n_KZ!Obq4sU61^n`c~=Dn|Ia> z2Ic?FHt#Xpyrian8t=)++8aIP?$#=EzMor}buLTk(UcD>?nG_tR_*LqH}AX$L)-7G m*F8>sT{H7f^WM*^*S*;LQ?~d+*Gixd89ZJ6T-G@yGywpVc#4<+ diff --git a/addons/web/static/lib/ckeditor/skins/moono/dialog.css b/addons/web/static/lib/ckeditor/skins/moono/dialog.css deleted file mode 100644 index 41ce000ee53..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/dialog.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/dialog_ie.css b/addons/web/static/lib/ckeditor/skins/moono/dialog_ie.css deleted file mode 100644 index c2e129e07bd..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/dialog_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/dialog_ie7.css b/addons/web/static/lib/ckeditor/skins/moono/dialog_ie7.css deleted file mode 100644 index 5f2fbbaec26..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/dialog_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/dialog_ie8.css b/addons/web/static/lib/ckeditor/skins/moono/dialog_ie8.css deleted file mode 100644 index 49050b8624c..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/dialog_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/dialog_iequirks.css b/addons/web/static/lib/ckeditor/skins/moono/dialog_iequirks.css deleted file mode 100644 index 7dbe919114c..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/dialog_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/dialog_opera.css b/addons/web/static/lib/ckeditor/skins/moono/dialog_opera.css deleted file mode 100644 index 62f4c3633a5..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/dialog_opera.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_footer{display:block;height:38px}.cke_ltr .cke_dialog_footer>*{float:right}.cke_rtl .cke_dialog_footer>*{float:left} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/editor.css b/addons/web/static/lib/ckeditor/skins/moono/editor.css deleted file mode 100644 index b044f015a94..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/editor.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/editor_gecko.css b/addons/web/static/lib/ckeditor/skins/moono/editor_gecko.css deleted file mode 100644 index 0ee8fd669a4..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/editor_gecko.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/editor_ie.css b/addons/web/static/lib/ckeditor/skins/moono/editor_ie.css deleted file mode 100644 index 56cfb69746d..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/editor_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/editor_ie7.css b/addons/web/static/lib/ckeditor/skins/moono/editor_ie7.css deleted file mode 100644 index e5826556211..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/editor_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/editor_ie8.css b/addons/web/static/lib/ckeditor/skins/moono/editor_ie8.css deleted file mode 100644 index 8b0b286fb11..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/editor_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/editor_iequirks.css b/addons/web/static/lib/ckeditor/skins/moono/editor_iequirks.css deleted file mode 100644 index ce8133537f8..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/editor_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup *:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_rtl .cke_toolgroup *:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/addons/web/static/lib/ckeditor/skins/moono/icons.png b/addons/web/static/lib/ckeditor/skins/moono/icons.png deleted file mode 100644 index 5d0e880ac503725d718b6fef938fcb1f10b47e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12224 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 P2wYd-md0d5=ji_eLfL|+ diff --git a/addons/web/static/lib/ckeditor/skins/moono/images/arrow.png b/addons/web/static/lib/ckeditor/skins/moono/images/arrow.png deleted file mode 100644 index 0d1eb39c6763770690d4cd6faf81503975a25f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol>0V4T5^Y?)SlDyqr82*Fcg1yTp14TFsJR*x3 z7`TN&n2}-D90{Nxdx@v7EBhTTAs$Q7;?s#GK%q&VE{-7@=ig3J6RR&$neB-Qn+l0CXLLr>mdKI;Vst0B#;z A`2YX_ diff --git a/addons/web/static/lib/ckeditor/skins/moono/images/close.png b/addons/web/static/lib/ckeditor/skins/moono/images/close.png deleted file mode 100644 index 04b9c97dde8273f8518060c82104b38b51832fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|iQ=q4dV~EA+rIQW2r5r_$|IbhBX1!iK_4XmB4ZGuZyxX>Mli(%E z3$HvlGJ~HaFWITo!p#_bl)s>kG4~ILn4ZiInf3+cyI*T<`W(k~_vmY;nOSN7-tT?5 z_kMlG#)t>?(@N_U7A5H`{SZHU%5|y8mTLiCjxG~YC1*%7ESS=i8mXXUVBBMvkk)Zx zV?z+v(jd;QQM_K73j+!*M=?Jx=(qL zyV9$j>$uN4a_JV!q7Nf$g=w9`d^C7^PGA=~P!uT~qnS$!bq$4+Rn zRm$m#aRaT?oBmm{=FQhCd#|NJzRQD|8O+Vit9IW#m0|Mh$eHi2ze*L#9F{1SQ8HHc z4Zg9BH*Meg5Uo|W-`4Hlx9=LmhWqbRZRG0Hp8YoQowzL1@kK9x5mTUu>hHgCQ-VsW z92RMKolEYT^XF2b3{bDqtLv}7DjKgo{7|9&u;Yx#t3aOM*WBA}k1bpkwU1Xgef{_8 zQ_+pAttB$Yjb{4TF*LmYZ6CdM+Pt%A&Pql~pVU2tB$E3i4jY^)wB33;_hapR#yj&8 z_k69LfBWq=h6*9Umc$MPj)YE+L~jQEM2UT~&p(fMdGbAP`{}*^yE`_mUcEY>LGD~J zSC6>3_=>RA3QDRDyr(~v8;?`jEllcfxgCxj?;QX|b^2DN4hVt@qz0ADq;^f4F ZRK5J7^x5xhq=1STJYD@<);T3K0RTH-Q&a!| diff --git a/addons/web/static/lib/ckeditor/skins/moono/images/hidpi/close.png b/addons/web/static/lib/ckeditor/skins/moono/images/hidpi/close.png deleted file mode 100644 index 8abca8e9726db1db199a0872d24b08842ec8ea62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 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 diff --git a/addons/web/static/lib/ckeditor/skins/moono/images/lock.png b/addons/web/static/lib/ckeditor/skins/moono/images/lock.png deleted file mode 100644 index c127f9ebe788baaf9c69bea6d1c7653d990cbe3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|i<3~>y#}JFtwUamcJ$4Xi+b?OIx5#CqXV9F5Wxj{CWzI9}I~1#a zxe)M?q2wX2-yR1Qm6(Yl9w#m)DsJBWEpFlsaiv2;q%iS9F@!!9`;&sdy-?D_h?Q(q*;!@Xr zV*c4mE2&-y9=7-yFU!6waO`^Yu%KeH%1PY`s-8vGGJN?_6BIZECcgK-;k1vV>B05e zw{L%aRyS9L^8l;C?_&!@*Ij?jI3e|BVW3Dk!?h@eu0=aeZ+auK;QH%@t6uNgR=ody zy3tGqgSmdn?`v`p(oynm@B2FvhaW#y*4NkH6rr=P%R;Vy@CgHpZ{!H zwJLSq^XbxxyXWj>$o)R8an-!;6a1mJ`I1|7zP)n_4XvrE3Ak>WC{a{WQnD>V=iDWe zr8?eoifiiXfN&PEETh{4m<&t;ucLK6UWP&V5D diff --git a/addons/web/static/lib/ckeditor/skins/moono/images/refresh.png b/addons/web/static/lib/ckeditor/skins/moono/images/refresh.png deleted file mode 100644 index a1a061c50de209f0b3749537a6a20fba2b93c8e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|i(=iY?K- z+T>WE_|9u#iQ?6_3VMH-)0Rt%@4C1)k0tvrvkZ&loF;Dff{VURL7EFQFE4q&cfzy3 zyEe~Io3gXOO#IyOrv>Y-ye^HC6Fg|Zv+1TzaBy%32gBbw`SYJU7IB2K9;mpPF-z@b z$*deR?~M^h40Ve#ULHzQ+dU=I$FK<`iUaz4iRSe5FrS zX0ui2pHGeyQ)*)MIVU^YWeHafbN;PubEBf8ldGzJy9yaFtrFZ>9zj|)JT`TzH=g*%O7yY+w z-(Ff@AAkDkr|k!{%YV;oZf0J4HS0ekf9TZNv!&0SJC|W1b>a2bfKZ;pKdSTd{lmk; z>ViX$F{O!#iPf>ltl`$5UteQoE)C=@^Vp&fY6xhvdmBH3f7!H z?LF(PT3d%eTcX+IlQ#lI7-N`O939qQSLSivdwp`e%afTMHdV$tqPW~jOU|4`{&{%O;vd(ZWIzOti+-G(*I=klM5?CjN2 zER5>v>iwZxU+&T?luK3-Pe-~bU zDYGi;PTuyNd-opon#6Mcvw^R0=-*hEFr%4grhoqY`F)7i)T0)Cd($@m%wK)=ms@B* z!@BkBIhzr!AdYO6I#mR{Use1WE>9gP2NC6cwc)I$z JtaD0e0su#cn~(qi diff --git a/addons/web/static/lib/ckeditor/skins/moono/readme.md b/addons/web/static/lib/ckeditor/skins/moono/readme.md deleted file mode 100644 index d086fe9b78d..00000000000 --- a/addons/web/static/lib/ckeditor/skins/moono/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -"Moono" Skin -==================== - -This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor -[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by -the CKEditor team. "Moono" is maintained by the core developers. - -For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK) -documentation. - -Features -------------------- -"Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency. -It comes with the following features: - -- Chameleon feature with brightness, -- high-contrast compatibility, -- graphics source provided in SVG. - -Directory Structure -------------------- - -CSS parts: -- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, -- **mainui.css**: the file contains styles of entire editor outline structures, -- **toolbar.css**: the file contains styles of the editor toolbar space (top), -- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, -- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded -until the first panel open up, -- **elementspath.css**: the file contains styles of the editor elements path bar (bottom), -- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, -it's not loaded until the first menu open up, -- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, -- **reset.css**: the file defines the basis of style resets among all editor UI spaces, -- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, -- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. - -Other parts: -- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, -- **icons/**: contains all skin defined icons, -- **images/**: contains a fill general used images, -- **dev/**: contains SVG source of the skin icons. - -License -------- - -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - -Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). - -See LICENSE.md for more information. diff --git a/addons/web/static/lib/ckeditor/styles.js b/addons/web/static/lib/ckeditor/styles.js deleted file mode 100644 index 18e4316b059..00000000000 --- a/addons/web/static/lib/ckeditor/styles.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license - */ - -// This file contains style definitions that can be used by CKEditor plugins. -// -// The most common use for it is the "stylescombo" plugin, which shows a combo -// in the editor toolbar, containing all styles. Other plugins instead, like -// the div plugin, use a subset of the styles on their feature. -// -// If you don't have plugins that depend on this file, you can simply ignore it. -// Otherwise it is strongly recommended to customize this file to match your -// website requirements and design properly. - -CKEDITOR.stylesSet.add( 'default', [ - /* Block Styles */ - - // These styles are already available in the "Format" combo ("format" plugin), - // so they are not needed here by default. You may enable them to avoid - // placing the "Format" combo in the toolbar, maintaining the same features. - /* - { name: 'Paragraph', element: 'p' }, - { name: 'Heading 1', element: 'h1' }, - { name: 'Heading 2', element: 'h2' }, - { name: 'Heading 3', element: 'h3' }, - { name: 'Heading 4', element: 'h4' }, - { name: 'Heading 5', element: 'h5' }, - { name: 'Heading 6', element: 'h6' }, - { name: 'Preformatted Text',element: 'pre' }, - { name: 'Address', element: 'address' }, - */ - - { name: 'Italic Title', element: 'h2', styles: { 'font-style': 'italic' } }, - { name: 'Subtitle', element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } }, - { - name: 'Special Container', - element: 'div', - styles: { - padding: '5px 10px', - background: '#eee', - border: '1px solid #ccc' - } - }, - - /* Inline Styles */ - - // These are core styles available as toolbar buttons. You may opt enabling - // some of them in the Styles combo, removing them from the toolbar. - // (This requires the "stylescombo" plugin) - /* - { name: 'Strong', element: 'strong', overrides: 'b' }, - { name: 'Emphasis', element: 'em' , overrides: 'i' }, - { name: 'Underline', element: 'u' }, - { name: 'Strikethrough', element: 'strike' }, - { name: 'Subscript', element: 'sub' }, - { name: 'Superscript', element: 'sup' }, - */ - - { name: 'Marker', element: 'span', attributes: { 'class': 'marker' } }, - - { name: 'Big', element: 'big' }, - { name: 'Small', element: 'small' }, - { name: 'Typewriter', element: 'tt' }, - - { name: 'Computer Code', element: 'code' }, - { name: 'Keyboard Phrase', element: 'kbd' }, - { name: 'Sample Text', element: 'samp' }, - { name: 'Variable', element: 'var' }, - - { name: 'Deleted Text', element: 'del' }, - { name: 'Inserted Text', element: 'ins' }, - - { name: 'Cited Work', element: 'cite' }, - { name: 'Inline Quotation', element: 'q' }, - - { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } }, - { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } }, - - /* Object Styles */ - - { - name: 'Styled image (left)', - element: 'img', - attributes: { 'class': 'left' } - }, - - { - name: 'Styled image (right)', - element: 'img', - attributes: { 'class': 'right' } - }, - - { - name: 'Compact table', - element: 'table', - attributes: { - cellpadding: '5', - cellspacing: '0', - border: '1', - bordercolor: '#ccc' - }, - styles: { - 'border-collapse': 'collapse' - } - }, - - { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, - { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } } -] ); - From 9069d0127c176317436b67b23ae5677dd9d53de7 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 17 Dec 2014 14:31:25 +0100 Subject: [PATCH 07/13] [IMP] website: use the new summernote editor --- addons/web/static/src/css/base.css | 2 +- addons/website/controllers/main.py | 19 +- addons/website/models/ir_qweb.py | 55 +- addons/website/models/website.py | 4 +- addons/website/static/lib/ace/ace.js | 7 +- addons/website/static/lib/ace/mode-xml.js | 4 +- .../website/static/lib/ace/theme-monokai.js | 4 +- addons/website/static/src/css/editor.css | 219 +- addons/website/static/src/css/editor.sass | 148 +- addons/website/static/src/css/snippets.css | 175 +- addons/website/static/src/css/snippets.sass | 26 +- addons/website/static/src/css/website.css | 297 +- addons/website/static/src/css/website.sass | 212 +- addons/website/static/src/img/desert.jpg | Bin 226497 -> 211554 bytes addons/website/static/src/js/summernote.js | 2160 +++++++++++++ addons/website/static/src/js/website.ace.js | 3 +- .../static/src/js/website.contentMenu.js | 34 +- .../website/static/src/js/website.editor.js | 2727 +++++++++-------- addons/website/static/src/js/website.js | 5 +- .../src/js/website.snippets.animation.js | 95 +- .../static/src/js/website.snippets.editor.js | 880 ++++-- .../static/src/js/website.snippets.gallery.js | 280 +- .../static/src/js/website.tour.banner.js | 8 +- .../website/static/src/js/website.tour.rte.js | 341 +++ .../static/src/js/website.translator.js | 5 +- .../static/src/xml/website.contentMenu.xml | 16 +- .../website/static/src/xml/website.editor.xml | 247 +- .../static/src/xml/website.gallery.xml | 12 +- .../static/src/xml/website.snippets.xml | 16 + addons/website/tests/test_converter.py | 11 +- addons/website/tests/test_ui.py | 5 +- addons/website/views/snippets.xml | 300 +- addons/website/views/themes.xml | 14 +- addons/website/views/website_templates.xml | 82 +- addons/website_blog/__openerp__.py | 1 + .../static/src/js/website.tour.blog.js | 6 +- .../static/src/js/website_blog.editor.js | 62 +- addons/website_blog/views/snippets.xml | 18 + .../views/website_blog_templates.xml | 20 +- .../static/src/js/website.tour.event.js | 6 +- .../static/src/js/website.tour.event_sale.js | 2 +- .../static/src/js/website_forum.js | 45 +- addons/website_forum/views/website_forum.xml | 15 +- .../static/src/js/website_email_designer.js | 2 +- .../static/src/css/website_sale.css | 4 + .../static/src/css/website_sale.sass | 3 + .../static/src/js/website_sale.js | 6 +- .../static/src/js/website_sale_tour_shop.js | 6 +- addons/website_sale/views/templates.xml | 2 +- .../static/src/js/website_sale.test.js | 2 +- openerp/addons/base/ir/ir_qweb.py | 6 +- openerp/addons/base/ir/ir_qweb.xml | 19 +- openerp/addons/base/ir/ir_ui_view.py | 2 +- 53 files changed, 6168 insertions(+), 2472 deletions(-) create mode 100644 addons/website/static/src/js/summernote.js create mode 100644 addons/website/static/src/js/website.tour.rte.js create mode 100644 addons/website_blog/views/snippets.xml diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index edc469e57c0..5b9afb52df4 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,4 +1,4 @@ -@charset "UTF-8"; +@charset "utf-8"; @font-face { font-family: "mnmliconsRegular"; src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index 5543342cc0a..bd9e2df6bf7 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -174,7 +174,7 @@ class Website(openerp.addons.web.controllers.main.Home): if noredirect: return werkzeug.wrappers.Response(url, mimetype='text/plain') - return werkzeug.utils.redirect(url) + return werkzeug.utils.redirect(url + "?enable_editor=1") @http.route(['/website/snippets'], type='json', auth="public", website=True) def snippets(self): @@ -311,6 +311,7 @@ class Website(openerp.addons.web.controllers.main.Home): }, request.context) else: # images provided try: + attachment_ids = [] for c_file in request.httprequest.files.getlist('upload'): image_data = c_file.read() image = Image.open(cStringIO.StringIO(image_data)) @@ -319,9 +320,9 @@ class Website(openerp.addons.web.controllers.main.Home): raise ValueError( u"Image size excessive, uploaded images must be smaller " u"than 42 million pixel") - - if not disable_optimization and image.format in ('PNG', 'JPEG'): - image_data = image_save_for_web(image) + + if not disable_optimization and image.format in ('PNG', 'JPEG'): + image_data = image_save_for_web(image) attachment_id = Attachments.create(request.cr, request.uid, { 'name': c_file.filename, @@ -329,11 +330,11 @@ class Website(openerp.addons.web.controllers.main.Home): 'datas_fname': c_file.filename, 'res_model': 'ir.ui.view', }, request.context) - - [attachment] = Attachments.read( - request.cr, request.uid, [attachment_id], ['website_url'], - context=request.context) - uploads.append(attachment) + attachment_ids.append(attachment_id) + + uploads = Attachments.read( + request.cr, request.uid, attachment_ids, ['website_url'], + context=request.context) except Exception, e: logger.exception("Failed to upload image to attachment") message = unicode(e) diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py index c27e7c90335..96c2478e049 100644 --- a/addons/website/models/ir_qweb.py +++ b/addons/website/models/ir_qweb.py @@ -29,6 +29,7 @@ from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATET from openerp.tools import html_escape as escape from openerp.addons.web.http import request from openerp.addons.base.ir import ir_qweb +import simplejson REMOTE_CONNECTION_TIMEOUT = 2.5 @@ -270,28 +271,32 @@ class ManyToOne(orm.AbstractModel): _name = 'website.qweb.field.many2one' _inherit = ['website.qweb.field', 'ir.qweb.field.many2one'] + def attributes(self, cr, uid, field_name, record, options, + source_element, g_att, t_att, qweb_context, + context=None): + attrs = super(ManyToOne, self).attributes( + cr, uid, field_name, record, options, source_element, g_att, t_att, + qweb_context, context=context) + many2one = getattr(record, field_name) + if many2one: + return itertools.chain(attrs, [ + ('data-oe-many2one-id', many2one.id), + ('data-oe-many2one-model', many2one._name)]) + else: + return attrs + def from_html(self, cr, uid, model, field, element, context=None): - # FIXME: layering violations all the things Model = self.pool[element.get('data-oe-model')] M2O = self.pool[field.comodel_name] field_name = element.get('data-oe-field') id = int(element.get('data-oe-id')) - # FIXME: weird things are going to happen for char-type _rec_name - value = html_to_text(element) + many2one_id = int(element.get('data-oe-many2one-id')) - # if anything blows up, just ignore it and bail - try: - # get parent record - [obj] = Model.read(cr, uid, [id], [field_name]) - # get m2o record id - (m2o_id, _) = obj[field_name] - # assume _rec_name and write directly to it - M2O.write(cr, uid, [m2o_id], { - M2O._rec_name: value + if many2one_id and M2O.exists(cr, uid, [many2one_id]): + # save the new id of the many2one + Model.write(cr, uid, [id], { + field_name: many2one_id }, context=context) - except: - logger.exception("Could not save %r to m2o field %s of model %s", - value, field_name, Model._name) # not necessary, but might as well be explicit about it return None @@ -460,8 +465,24 @@ class Contact(orm.AbstractModel): _name = 'website.qweb.field.contact' _inherit = ['ir.qweb.field.contact', 'website.qweb.field.many2one'] - def from_html(self, cr, uid, model, field, element, context=None): - return None + def attributes(self, cr, uid, field_name, record, options, + source_element, g_att, t_att, qweb_context, + context=None): + attrs = super(Contact, self).attributes( + cr, uid, field_name, record, options, source_element, g_att, t_att, + qweb_context, context=context) + many2one = getattr(record, field_name) + if many2one: + return itertools.chain(attrs, [('data-oe-contact-options', simplejson.dumps(options))]) + else: + return attrs + + # helper to call the rendering of contact field in website + def get_record_to_html(self, cr, uid, ids, options=None, context=None): + node = self.record_to_html(cr, uid, + 'record', {'record': self.pool['res.partner'].browse(cr, uid, ids[0], context=context)}, + options=options, context=context) + return node and node.__html__() class QwebView(orm.AbstractModel): _name = 'website.qweb.field.qweb' diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 253c6b71170..943e2f289f4 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -448,7 +448,7 @@ class website(osv.osv): yield page def search_pages(self, cr, uid, ids, needle=None, limit=None, context=None): - name = (needle or "").replace("/page/website.", "").replace("/page/", "") + name = re.sub(r"^/p(a(g(e(/(w(e(b(s(i(t(e(\.)?)?)?)?)?)?)?)?)?)?)?)?", "", needle or "") res = [] for page in self.enumerate_pages(cr, uid, ids, query_string=name, context=context): if needle in page['loc']: @@ -751,7 +751,7 @@ class ir_attachment(osv.osv): # in-document URLs are html-escaped, a straight search will not # find them url = escape(attachment.website_url) - ids = Views.search(cr, uid, ["|", ('arch', 'like', '"%s"' % url), ('arch', 'like', "'%s'" % url)], context=context) + ids = Views.search(cr, uid, ["|", ('arch_db', 'like', '"%s"' % url), ('arch_db', 'like', "'%s'" % url)], context=context) if ids: removal_blocked_by[attachment.id] = Views.read( diff --git a/addons/website/static/lib/ace/ace.js b/addons/website/static/lib/ace/ace.js index 52e7d3ed489..970dc0e7e3e 100644 --- a/addons/website/static/lib/ace/ace.js +++ b/addons/website/static/lib/ace/ace.js @@ -1,4 +1,6 @@ -(function(){function o(e){var i=function(e,t){return r("",e,t)},s=t;e&&(t[e]||(t[e]={}),s=t[e]);if(!s.define||!s.define.packaged)n.original=s.define,s.define=n,s.define.packaged=!0;if(!s.require||!s.require.packaged)r.original=s.require,s.require=i,s.require.packaged=!0}var e="ace",t=function(){return this}();if(!e&&typeof requirejs!="undefined")return;var n=function(e,t,r){if(typeof e!="string"){n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=t),n.modules||(n.modules={},n.payloads={}),n.payloads[e]=r,n.modules[e]=null},r=function(e,t,n){if(Object.prototype.toString.call(t)==="[object Array]"){var i=[];for(var o=0,u=t.length;o1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n5||Math.abs(e.clientY-a)>5;if(!f||i)o=0;o+=1,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600)}o==1&&(u=e.clientX,a=e.clientY),r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var u=Object.create(null);t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=!0;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),r(e,"focus",function(e){u=Object.create(null)})}};if(window.postMessage&&!i.isOldIE){var a=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+a;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}};for(var t in e.FUNCTION_KEYS){var n=e.FUNCTION_KEYS[t].toLowerCase();e[n]=parseInt(t,10)}return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",e}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!="object")return;var r=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r=="win",t.isMac=r=="mac",t.isLinux=r=="linux",t.isIE=(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.setSession(t||new c("")),g.resetOptions(this),g._emit("editor",this)};(function(){r.implement(this,d),this.setKeyboardHandler=function(e){if(!e)this.keyBinding.setKeyboardHandler(null);else if(typeof e=="string"){this.$keybindingId=e;var t=this;g.loadModule(["keybinding",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else delete this.$keybindingId,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;if(this.session){var t=this.session;this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit("changeSession",{session:e,oldSession:t})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e){this.renderer.setTheme(e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session.findMatchingBracket(e.getCursorPosition());if(t)var n=new p(t.row,t.column,t.row,t.column+1);else if(e.session.$mode.getMatching)var n=e.session.$mode.getMatching(e.session);n&&(e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._emit("change",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;this.$highlightActiveLine&&(this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(t=this.getCursorPosition());if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._emit("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._emit("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var e="";return this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange())),this._emit("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;this._emit("paste",e),this.insert(e)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e){var t=this.session,n=t.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()){var i=n.transformAction(t.getState(r.row),"insertion",this,t,e);i&&(e=i.text)}e=e.replace(" ",this.session.getTabString());if(!this.selection.isEmpty())r=this.session.remove(this.getSelectionRange()),this.clearSelection();else if(this.session.getOverwrite()){var s=new p.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}this.clearSelection();var o=r.column,u=t.getState(r.row),a=t.getLine(r.row),f=n.checkOutdent(u,a,e),l=t.insert(r,e);i&&i.selection&&(i.selection.length==2?this.selection.setSelectionRange(new p(r.row,o+i.selection[0],r.row,o+i.selection[1])):this.selection.setSelectionRange(new p(r.row+i.selection[0],i.selection[1],r.row+i.selection[2],i.selection[3])));if(t.getDocument().isNewLine(e)){var c=n.getNextLineIndent(u,a.slice(0,r.column),t.getTabString());this.moveCursorTo(r.row+1,0);var h=t.getTabSize(),d=Number.MAX_VALUE;for(var v=r.row+1;v<=l.row;++v){var m=0;a=t.getLine(v);for(var g=0;g0;++g)a.charAt(g)==" "?y-=h:a.charAt(g)==" "&&(y-=1);t.remove(new p(v,0,v,g))}t.indentRows(r.row+1,l.row,c)}f&&n.autoOutdent(u,t,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=o)s[u].moveBy(i,0),u--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:e.start.row,last:e.end.row}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t==1?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t==0&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):(this.clearSelection(),this.moveCursorTo(r.row,r.column)))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(-e,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(e,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateFileStart=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!=0&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit("destroy",this)},this.setAutoScrollEditorIntoView=function(e){if(e===!1)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&n.isFocused()){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e===!0)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(e=="smooth"),t.isBlinking=!this.$readOnly&&e!="wide"}}).call(y.prototype),g.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._emit("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",focusTimout:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session"}),t.Editor=y}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.startDrag=function(){var e=this.editor;this.setState("drag"),this.dragRange=e.getSelectionRange();var t=e.getSelectionStyle();this.dragSelectionMarker=e.session.addMarker(this.dragRange,"ace_selection",t),e.clearSelection(),r.addCssClass(e.container,"ace_dragging"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(e,t,n,r){if(n=="esc")return{command:this.command}},command:{exec:function(e){var t=e.$mouseHandler;t.dragCursor=null,t.dragEnd(),t.startSelect()}}}),e.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=(new Date).getTime();(e>s||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.dragWait=function(e){var t=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),n=(new Date).getTime(),r=this.editor;t>s?this.startSelect(this.mousedownEvent.getDocumentPosition()):n-this.mousedownEvent.time>r.$mouseHandler.$dragDelay&&this.startDrag()},this.dragWaitEnd=function(e){this.mousedownEvent.domEvent=e,this.startSelect()},this.drag=function(){var e=this.editor;this.dragCursor=e.renderer.screenToTextCoordinates(this.x,this.y),e.moveCursorToPosition(this.dragCursor),e.renderer.scrollCursorIntoView()},this.dragEnd=function(e){var t=this.editor,n=this.dragCursor,i=this.dragRange;r.removeCssClass(t.container,"ace_dragging"),t.session.removeMarker(this.dragSelectionMarker),t.keyBinding.removeKeyboardHandler(this.$dragKeybinding);if(!n)return;t.clearSelection();if(e&&(e.ctrlKey||e.altKey)){var s=t.session,o=i;o.end=s.insert(n,s.getTextRange(i)),o.start=n}else{if(i.contains(n.row,n.column))return;var o=t.moveText(i,n)}if(!o)return;t.selection.setSelectionRange(o)},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);if(i){i.isEmpty()&&(i.start.column--,i.end.column++),this.$clickSelection=i,this.setState("select");return}this.$clickSelection=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines"),this.$clickSelection=n.selection.getLineRange(t.row)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("null")},this.onMouseWheel=function(e){if(e.getShiftKey()||e.getAccelKey())return;var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(o.prototype),t.DefaultHandlers=o}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event"],function(e,t,n){function s(e){function f(){u=r.createElement("div"),u.className="ace_gutter-tooltip",u.style.display="none",t.container.appendChild(u)}function l(){u||f();var e=o.getDocumentPosition().row,r=n.$annotations[e];if(!r)return c();var i=t.session.getLength();if(e==i){var s=t.renderer.pixelToScreenCoordinates(0,o.y).row,l=o.$pos;if(s>t.session.documentToScreenRow(l.row,l.column))return c()}if(a==r)return;a=r.text.join("
    "),u.style.display="block",u.innerHTML=a,t.on("mousewheel",c),h(o)}function c(){s&&(s=clearTimeout(s)),a&&(u.style.display="none",a=null,t.removeEventListener("mousewheel",c))}function h(e){var n=t.renderer.$gutter.getBoundingClientRect();u.style.left=e.x+15+"px",e.y+3*t.renderer.lineHeight+151&&(r=n[n.length-2]);var i=a[t+"Path"];return i==null&&(i=a.basePath),i&&i.slice(-1)!="/"&&(i+="/"),i+t+"-"+r+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=function(){a.packaged=e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var r={},i="",s=document.getElementsByTagName("script");for(var o=0;o=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t]}),t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._emit("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._emit("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oo){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=[];for(var n=0;n1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=u.row&&l.shiftRow(-n)}s=i}else{var p;if(t){p=[i,0];for(var d=0;d=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,c=e;t=Math.min(t,n.length-1);while(c<=t){f=this.getFoldLine(c,f);if(!f)a=this.$getDisplayTokens(i.stringTrimRight(n[c])),s[c]=this.$computeWrapSplits(a,o,r),c++;else{a=[],f.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,a.length),s[0]=u;for(var o=1;o=d)a.pop();s[f.start.row]=this.$computeWrapSplits(a,o,r),c=f.end.row+1}}};var t=1,n=2,u=3,l=4,p=9,d=10,v=11,m=12;this.$computeWrapSplits=function(e,t){function o(t){var r=e.slice(i,t),o=r.length;r.join("").replace(/12/g,function(){o-=1}).replace(/2/g,function(){o-=1}),s+=o,n.push(s),i=t}if(e.length==0)return[];var n=[],r=e.length,i=0,s=0;while(r-i>t){var a=i+t;if(e[a]>=d){while(e[a]>=d)a++;o(a);continue}if(e[a]==u||e[a]==l){for(a;a!=i-1;a--)if(e[a]==u)break;if(a>i){o(a);continue}a=i+t;for(a;af&&e[a]f&&e[a]==p)a--;if(a>f){o(++a);continue}a=i+t,o(a)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(p):u>=4352&&g(u)?i.push(t,n):i.push(t)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&g(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.getRowLength=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u-1>=e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];v&&(s=v[e-o],e>o&&v.length&&(i=v[e-o-1]||v[v.length-1],n=n.substring(i)))}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i],m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}return e}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}this.$wrap=e},get:function(){return this.getUseWrapMode()?this.getWrapLimitRange().min||"free":"off"},handlesSet:!0},firstLineNumber:{set:function(){this._emit("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._emit("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._emit("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0}}),t.EditSession=p}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on("change",function(e){t._emit("changeCursor"),t.$isEmpty||t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){t.$isEmpty||t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+e);return}var t=this.getSelectionAnchor(),n=this.getSelectionLead(),r=this.isBackwards();(!r||t.column!==0)&&this.setSelectionAnchor(t.row,t.column+e),(r||n.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column==0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<=1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e}}).call(u.prototype),t.Selection=u}),ace.define("ace/range",["require","exports","module"],function(e,t,n){var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){if(!this.$embeds)return;this.$modes={};for(var t=0;t1?f.onMatch=this.$applyToken:f.onMatch=f.token);c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null),f.__proto__=null}u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var m=e.substring(l,v-d.length);c.type==h?c.value+=m:(c.type&&f.push(c),c={type:h,value:m})}for(var g=0;gr){while(l=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length==0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this._insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._emit("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;ithis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;t.action==="insertText"?s.row===r&&s.column<=i?s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row):s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=n.doc,i=0,s=r.getLength();while(n.currentLine20){n.fireUpdateEvent(t,n.currentLine-1),n.running=setTimeout(n.$worker,20);return}}n.running=!1,n.fireUpdateEvent(t,s-1)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._emit("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u==f&&l-a<2)throw"The range has to be at least 2 characters width";var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);if(c&&!c.range.isStart(u,a)||h&&!h.range.isEnd(f,l))throw"A fold can't intersect already existing fold"+o.range+c.range;var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRange(n);if(t)this.removeFolds(i);else while(i.length)this.expandFolds(i),i=this.getFoldsInRange(n)},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row,i=0),t==null&&(t=e.end.row,n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){var n=this.getFoldWidget(e),r=this.getLine(e);t=t.domEvent;var i=t.shiftKey,s=t.ctrlKey||t.metaKey,o=t.altKey,u=n==="end"?-1:1,a=this.getFoldAt(e,u===-1?0:r.length,u);if(a){i||s?this.removeFold(a):this.expandFold(a);return}var f=this.getFoldWidgetRange(e);if(f&&!f.isMultiLine()){a=this.getFoldAt(f.start.row,f.start.column,1);if(a&&f.isEqual(a.range)){this.removeFold(a);return}}if(o){var l=this.getParentFoldRangeData(e);if(l.range)var c=l.range.start.row+1,h=l.range.end.row;this.foldAll(c,h,s?1e4:0)}else if(i){var h=f?f.end.row:this.getLength();this.foldAll(e+1,f.end.row,s?1e4:0)}else f&&(s&&(f.collapseChildren=1e4),this.addFold("...",f));f||((t.target||t.srcElement).className+=" ace_invalid")},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw"Can't add a fold to this FoldLine as it has no connection";this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw"Trying to add fold to FoldRow that doesn't have a matching row";this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column+=u,c.start.row+=o),c.end.row==i&&c.end.column>=n.column&&(c.end.column==n.column&&u>0&&fc.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o)}if(o!=0&&f=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(aw&&o[c].end.row==n.end.row)c--;o=o.slice(m,c+1);for(m=0,c=o.length;m=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){this.platform=e,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(t),this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:n},i=this._emit("exec",r);return this._signal("afterExec",r),i===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commmandKeyBinding={},this.addCommands(e)}var r=e("../lib/keys"),i=e("../lib/useragent");(function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commmandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:t.name||e});return}var n=this.commmandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n}),n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){e.indexOf(" ")!=-1&&(e=e.split(/\s+/).pop());var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=this.commmandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(s.prototype),t.HashHandler=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config"],function(e,t,n){function s(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config");t.commands=[{name:"showSettingsMenu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"selectall",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:s("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},readOnly:!0},{name:"foldall",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll()},readOnly:!0},{name:"unfoldall",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},readOnly:!0},{name:"findnext",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},readOnly:!0},{name:"findprevious",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},readOnly:!0},{name:"find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:s("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotostart",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectup",bindKey:s("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:s("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoend",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectdown",bindKey:s("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",readOnly:!0},{name:"golinedown",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordleft",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordleft",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolinestart",bindKey:s("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolinestart",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectleft",bindKey:s("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoleft",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordright",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordright",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolineend",bindKey:s("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolineend",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectright",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoright",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"togglerecording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:s("Ctrl-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:s("Ctrl-Shift-P",null),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},multiSelectAction:"forEach"},{name:"removeline",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},multiSelectAction:"forEach"},{name:"sortlines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine"},{name:"toggleBlockComment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach"},{name:"modifyNumberUp",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()}},{name:"movelinesup",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()}},{name:"copylinesdown",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()}},{name:"movelinesdown",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()}},{name:"del",bindKey:s("Delete","Delete|Ctrl-D"),exec:function(e){e.remove("right")},multiSelectAction:"forEach"},{name:"backspace",bindKey:s("Command-Backspace|Option-Backspace|Shift-Backspace|Backspace","Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach"},{name:"removetolinestart",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach"},{name:"removetolineend",bindKey:s("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach"},{name:"removewordleft",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach"},{name:"removewordright",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach"},{name:"outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach"},{name:"indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach"},{name:"blockoutdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine"},{name:"blockindent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach"},{name:"splitline",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach"},{name:"transposeletters",bindKey:s("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)}},{name:"touppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach"},{name:"tolowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach"}]}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/useragent","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/renderloop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/useragent"),u=e("./config"),a=e("./layer/gutter").Gutter,f=e("./layer/marker").Marker,l=e("./layer/text").Text,c=e("./layer/cursor").Cursor,h=e("./scrollbar").ScrollBar,p=e("./renderloop").RenderLoop,d=e("./lib/event_emitter").EventEmitter,v=".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;color: black;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;top: 0;bottom: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\"opacity: 0\"]{-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget.ace_closed {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}";i.importCssString(v,"ace_editor");var m=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new f(this.content);var r=this.$textLayer=new l(this.content);this.canvas=r.element,this.$markerFront=new f(this.content),this.$cursorLayer=new c(this.content),this.$horizScroll=!1,this.scrollBar=new h(this.container),this.scrollBar.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data)}),this.scrollTop=0,this.scrollLeft=0,s.addListener(this.scroller,"scroll",function(){var e=n.scroller.scrollLeft;n.scrollLeft=e,n.session.setScrollLeft(e)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener("changeCharacterSize",function(){n.updateCharacterSize(),n.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),u.resetOptions(this),u._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session=e,this.scroller.className="ace_scroller",this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$changedLines.lastRow2)return;this.resizing>1?this.resizing++:this.resizing=e?1:0,r||(r=i.getInnerHeight(this.container));if(r&&(e||o.height!=r)){o.height=r,s=this.CHANGE_SIZE,o.scrollerHeight=this.scroller.clientHeight;if(e||!o.scrollerHeight)o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBar.getWidth());this.scrollBar.setHeight(o.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),s|=this.CHANGE_FULL)}n||(n=i.getInnerWidth(this.container));if(n&&(e||this.resizing>1||o.width!=n)){s=this.CHANGE_SIZE,o.width=n;var t=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,n-t-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}if(!this.$size.scrollerHeight)return;e?this.$renderChanges(s,!0):this.$loop.schedule(s),e&&(this.$gutterLayer.$padding=null),e&&delete this.resizing},this.onGutterResize=function(){var e=this.$size.width,t=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+"px",this.$size.scrollerWidth=Math.max(0,e-t-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$loop.schedule(this.CHANGE_MARKER)},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.lineHeight;if(t<0||t>e.height-r)return;var i=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");i*=this.session.$getStringScreenWidth(s)[0]+2,r+=2,t-=1}n-=this.scrollLeft,n>this.$size.scrollerWidth-i&&(n=this.$size.scrollerWidth-i),n-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=i+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-n-i)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(e,t){if(!t&&(!e||!this.session||!this.container.offsetWidth))return;this._signal("beforeRender"),(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL)&&this.$computeLayerConfig();if(e&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var n=this.scroller.scrollLeft;this.scrollLeft=n,this.session.setScrollLeft(n),this.scroller.className=this.scrollLeft==0?"ace_scroller":"ace_scroller ace_scroll-left"}if(e&this.CHANGE_FULL){this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this.$updateScrollBar(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(this.layerConfig):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(this.layerConfig),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),e&this.CHANGE_SIZE&&this.$updateScrollBar(),this._signal("afterRender")},this.$computeLayerConfig=function(){if(!this.$size.scrollerHeight)return this.onResize(!0);var e=this.session,t=this.scrollTop%this.lineHeight,n=this.$size.scrollerHeight+this.lineHeight,r=this.$getLongestLine(),i=this.$hScrollBarAlwaysVisible||this.$size.scrollerWidth-r<0,s=this.$horizScroll!==i;this.$horizScroll=i,s&&(this.scroller.style.overflowX=i?"scroll":"hidden",i||this.session.setScrollLeft(0));var o=this.session.getScreenLength()*this.lineHeight;this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,o-this.$size.scrollerHeight)));var u=Math.ceil(n/this.lineHeight)-1,a=Math.max(0,Math.round((this.scrollTop-t)/this.lineHeight)),f=a+u,l,c,h=this.lineHeight;a=e.screenToDocumentRow(a,0);var p=e.getFoldLine(a);p&&(a=p.start.row),l=e.documentToScreenRow(a,0),c=e.getRowLength(a)*h,f=Math.min(e.screenToDocumentRow(f,0),e.getLength()-1),n=this.$size.scrollerHeight+e.getRowLength(f)*h+c,t=this.scrollTop-l*h,this.layerConfig={width:r,padding:this.$padding,firstRow:a,firstRowScreen:l,lastRow:f,lineHeight:h,characterWidth:this.characterWidth,minHeight:n,maxHeight:o,offset:t,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-t+"px",this.content.style.marginTop=-t+"px",this.content.style.width=r+2*this.$padding+"px",this.content.style.height=n+"px",s&&this.onResize(!0)},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ti?(t&&(i-=t*this.$size.scrollerHeight),this.session.setScrollTop(i)):this.scrollTop+this.$size.scrollerHeightr?(r=1)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e){function r(n){if(t.$themeValue!=e)return;if(!n.cssClass)return;i.importCssString(n.cssText,n.cssClass,t.container.ownerDocument),t.theme&&i.removeCssClass(t.container,t.theme.cssClass),t.$theme=n.cssClass,t.theme=n,i.addCssClass(t.container,n.cssClass),i.setCssClass(t.container,"ace_dark",n.isDark);var r=n.padding||4;t.$padding&&r!=t.$padding&&t.setPadding(r),t.$size&&(t.$size.width=0,t.onResize()),t._dispatchEvent("themeLoaded",{theme:n})}var t=this;this.$themeValue=e,t._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var n=e||"ace/theme/textmate";u.loadModule(["theme",n],r)}else r(e)},this.getTheme=function(){return this.$themeValue},this.setStyle=function(t,n){i.setCssClass(this.container,t,n!=0)},this.unsetStyle=function(t){i.removeCssClass(this.container,t)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),u.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible=e,(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}}}),t.VirtualRenderer=m}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];var t,n;for(var r=0;ru&&(i=o.end.row+1,o=this.session.getNextFoldLine(i,o),u=o?o.start.row:Infinity);if(i>s)break;var p=this.$annotations[i]||t;n.push("
    ",h=i+c);if(a){var d=a[i];d==null&&(d=a[i]=this.session.getFoldWidget(i)),d&&n.push("")}n.push("
    "),i++}this.element=r.setInnerHtml(this.element,n.join("")),this.element.style.height=e.minHeight+"px",this.session.$useWrapMode&&(h=this.session.getLength());var v=(""+h).length*e.characterWidth,m=this.$padding||this.$computePadding();v+=m.left+m.right,v!==this.gutterWidth&&(this.gutterWidth=v,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",v))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1,this.$padding.right=parseInt(e.paddingRight),this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.xn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
    "),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
    ")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
    ")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
    ")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
    ")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){r.implement(this,u),this.EOF_CHAR="¶",this.EOL_CHAR="¬",this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){var e=this;this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=o.isIE||o.isOldGecko?function(){var e=1e3;if(!this.$measureNode){var t=this.$measureNode=i.createElement("div"),n=t.style;n.width=n.height="auto",n.left=n.top=-e*40+"px",n.visibility="hidden",n.position="fixed",n.overflow="visible",n.whiteSpace="nowrap",t.innerHTML=s.stringRepeat("Xy",e);if(this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(t);else{var r=this.element.parentNode;while(!i.hasCssClass(r,"ace_editor"))r=r.parentNode;r.appendChild(t)}}if(!this.element.offsetWidth)return null;var n=this.$measureNode.style,o=i.computedStyle(this.element);for(var u in this.$fontStyles)n[u]=o[u];var a={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(e*2)};return a.width==0||a.height==0?null:a}:function(){if(!this.$measureNode){var e=this.$measureNode=i.createElement("div"),t=e.style;t.width=t.height="auto",t.left=t.top="-100px",t.visibility="hidden",t.position="fixed",t.overflow="visible",t.whiteSpace="nowrap",e.innerHTML="X";var n=this.element.parentNode;while(n&&!i.hasCssClass(n,"ace_editor"))n=n.parentNode;if(!n)return this.$measureNode=null;n.appendChild(e)}var r=this.$measureNode.getBoundingClientRect(),s={height:r.height,width:r.width};return s.width==0||s.height==0?null:s},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+this.TAB_CHAR+s.stringRepeat(" ",n-1)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide";if(this.showInvisibles){r+=" ace_invisible";var i=s.stringRepeat(this.SPACE_CHAR,this.tabSize),o=this.TAB_CHAR+s.stringRepeat(" ",this.tabSize-1)}else var i=s.stringRepeat(" ",this.tabSize),o=i;this.$tabStrings[" "]=""+i+"",this.$tabStrings[" "]=""+o+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;al&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a);else{var l=a.childNodes;while(l.length)r.appendChild(l[0])}s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("
    "),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":s.stringRepeat(" ",e.length);if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e==" "){var f=i.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t){var n=t.search(this.$indentGuideRe);return n<=0?t:t[0]==" "?(n-=n%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("","
    "),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors")};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,e?r.addCssClass(this.element,"ace_smooth-blinking"):r.removeCssClass(this.element,"ace_smooth-blinking"),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking");for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";t()}.bind(this),this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<-e.offset)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar",this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.width=i.scrollbarWidth(e.ownerDocument),this.element.style.width=(this.width||15)+5+"px",s.addListener(this.element,"scroll",this.onScroll.bind(this))};(function(){r.implement(this,o),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}).call(u.prototype),t.ScrollBar=u}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),t.onSessionChange.call(e,e),e.on("changeSession",t.onSessionChange.bind(e)),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function i(){n&&(r.style.cursor="",n=!1)}var t=e.textInput.getElement(),n=!1,r=e.renderer.content;u.addListener(t,"keydown",function(e){e.keyCode==18&&!(e.ctrlKey||e.shiftKey||e.metaKey)?n||(r.style.cursor="crosshair",n=!0):n&&(r.style.cursor="")}),u.addListener(t,"keyup",i),u.addListener(t,"blur",i)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount==0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._emit("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._emit("removeRange",{ranges:e}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=this.session,i=this.selection,o=i.rangeList,u,a=i._eventRegistry;i._eventRegistry={};var f=new s(r);this.inVirtualSelectionMode=!0;for(var l=o.ranges.length;l--;){if(n)while(l>0&&o.ranges[l].start.row==o.ranges[l-1].end.row)l--;f.fromOrientedRange(o.ranges[l]),this.selection=r.selection=f;var c=e.exec(this,t||{});!u==undefined&&(u=c),f.toOrientedRange(o.ranges[l])}f.detach(),this.selection=r.selection=i,this.inVirtualSelectionMode=!1,i._eventRegistry=a,i.mergeOverlappingRanges();var h=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),h&&h.from==h.to&&this.renderer.animateScrolling(h.from),u},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getCopyText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;rn.length||t.length<2||!t[1])return this.commands.exec("insertstring",this,e);for(var r=n.length;r--;){var i=n[r];i.isEmpty()||this.session.remove(i),this.session.insert(i.start,t[r])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();if(i.isEmpty()){var i=n.getWordRange(i.start.row,i.start.column);i.cursor=i.end,this.multiSelect.addRange(i)}var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.multiSelect.addRange(o)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=this.session.doc.removeLines(s,o);u=this.$reAlignText(u),this.session.doc.insertLines(s,u),r.start.column=0,r.end.column=u[u.length-1].length,this.selection.setRange(r)}else{var f=-1,l=n.filter(function(e){if(e.cursor.row==f)return!0;f=e.cursor.row});t.$onRemoveRange(l);var c=0,h=Infinity,p=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>c&&(c=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=c,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e){function o(e){return a.stringRepeat(" ",e)}function u(e){return e[2]?o(r)+e[2]+o(i-e[2].length+s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function f(e){return e[2]?o(r+i-e[2].length)+e[2]+o(s," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?o(r)+e[2]+o(s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var t=!0,n=!0,r,i,s;return e.map(function(e){var o=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return o?r==null?(r=o[1].length,i=o[2].length,s=o[3].length,o):(r+i+s!=o[1].length+o[2].length+o[3].length&&(n=!1),r!=o[1].length&&(t=!1),r>o[1].length&&(r=o[1].length),io[3].length&&(s=o[3].length),o):[e]}).map(t?n?f:u:l)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.removeEventListener("addRange",this.$onAddRange),n.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),n.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),n.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u==0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveCursorToPosition(t),a.selection.clearSelection(),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!s&&!n&&u==0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);a.once("mouseup",function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e))})}else if(n&&u==0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange();var x=[];s?(b=y.documentToScreenPosition(f.lead),g()):(f.moveCursorToPosition(c),f.clearSelection());var T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(o.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,o=Object.create(i),u=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){u.messageBuffer.push(e),r&&setTimeout(a)};var a=function(){var e=u.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&o._emit(e.event,e.data)};o.postMessage=function(e){u.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){r=new e[n](o);while(u.messageBuffer.length)a()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;ef){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=this.getFoldWidget(e,u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;}.ace-tm .ace_cursor {border-left: 2px solid black;}.ace-tm .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); +openerp.website.ace_call = function () { + if (typeof ace === "undefined") + (function(){function o(e){var i=function(e,t){return r("",e,t)},s=t;e&&(t[e]||(t[e]={}),s=t[e]);if(!s.define||!s.define.packaged)n.original=s.define,s.define=n,s.define.packaged=!0;if(!s.require||!s.require.packaged)r.original=s.require,s.require=i,s.require.packaged=!0}var e="ace",t=function(){return this}();if(!e&&typeof requirejs!="undefined")return;var n=function(e,t,r){if(typeof e!="string"){n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=t),n.modules||(n.modules={},n.payloads={}),n.payloads[e]=r,n.modules[e]=null},r=function(e,t,n){if(Object.prototype.toString.call(t)==="[object Array]"){var i=[];for(var o=0,u=t.length;o1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n5||Math.abs(e.clientY-a)>5;if(!f||i)o=0;o+=1,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600)}o==1&&(u=e.clientX,a=e.clientY),r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var u=Object.create(null);t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=!0;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),r(e,"focus",function(e){u=Object.create(null)})}};if(window.postMessage&&!i.isOldIE){var a=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+a;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}};for(var t in e.FUNCTION_KEYS){var n=e.FUNCTION_KEYS[t].toLowerCase();e[n]=parseInt(t,10)}return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",e}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(){var e=function(){};return function(t,n){e.prototype=n.prototype,t.super_=n.prototype,t.prototype=new e,t.prototype.constructor=t}}(),t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!="object")return;var r=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r=="win",t.isMac=r=="mac",t.isLinux=r=="linux",t.isIE=(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.setSession(t||new c("")),g.resetOptions(this),g._emit("editor",this)};(function(){r.implement(this,d),this.setKeyboardHandler=function(e){if(!e)this.keyBinding.setKeyboardHandler(null);else if(typeof e=="string"){this.$keybindingId=e;var t=this;g.loadModule(["keybinding",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else delete this.$keybindingId,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;if(this.session){var t=this.session;this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit("changeSession",{session:e,oldSession:t})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e){this.renderer.setTheme(e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session.findMatchingBracket(e.getCursorPosition());if(t)var n=new p(t.row,t.column,t.row,t.column+1);else if(e.session.$mode.getMatching)var n=e.session.$mode.getMatching(e.session);n&&(e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._emit("change",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;this.$highlightActiveLine&&(this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(t=this.getCursorPosition());if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._emit("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._emit("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var e="";return this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange())),this._emit("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;this._emit("paste",e),this.insert(e)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e){var t=this.session,n=t.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()){var i=n.transformAction(t.getState(r.row),"insertion",this,t,e);i&&(e=i.text)}e=e.replace(" ",this.session.getTabString());if(!this.selection.isEmpty())r=this.session.remove(this.getSelectionRange()),this.clearSelection();else if(this.session.getOverwrite()){var s=new p.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}this.clearSelection();var o=r.column,u=t.getState(r.row),a=t.getLine(r.row),f=n.checkOutdent(u,a,e),l=t.insert(r,e);i&&i.selection&&(i.selection.length==2?this.selection.setSelectionRange(new p(r.row,o+i.selection[0],r.row,o+i.selection[1])):this.selection.setSelectionRange(new p(r.row+i.selection[0],i.selection[1],r.row+i.selection[2],i.selection[3])));if(t.getDocument().isNewLine(e)){var c=n.getNextLineIndent(u,a.slice(0,r.column),t.getTabString());this.moveCursorTo(r.row+1,0);var h=t.getTabSize(),d=Number.MAX_VALUE;for(var v=r.row+1;v<=l.row;++v){var m=0;a=t.getLine(v);for(var g=0;g0;++g)a.charAt(g)==" "?y-=h:a.charAt(g)==" "&&(y-=1);t.remove(new p(v,0,v,g))}t.indentRows(r.row+1,l.row,c)}f&&n.autoOutdent(u,t,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=o)s[u].moveBy(i,0),u--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:e.start.row,last:e.end.row}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t==1?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t==0&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):(this.clearSelection(),this.moveCursorTo(r.row,r.column)))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(-e,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(e,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateFileStart=function(){var e=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(e)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!=0&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit("destroy",this)},this.setAutoScrollEditorIntoView=function(e){if(e===!1)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&n.isFocused()){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e===!0)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(e=="smooth"),t.isBlinking=!this.$readOnly&&e!="wide"}}).call(y.prototype),g.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._emit("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",focusTimout:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session"}),t.Editor=y}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.startDrag=function(){var e=this.editor;this.setState("drag"),this.dragRange=e.getSelectionRange();var t=e.getSelectionStyle();this.dragSelectionMarker=e.session.addMarker(this.dragRange,"ace_selection",t),e.clearSelection(),r.addCssClass(e.container,"ace_dragging"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(e,t,n,r){if(n=="esc")return{command:this.command}},command:{exec:function(e){var t=e.$mouseHandler;t.dragCursor=null,t.dragEnd(),t.startSelect()}}}),e.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=(new Date).getTime();(e>s||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.dragWait=function(e){var t=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),n=(new Date).getTime(),r=this.editor;t>s?this.startSelect(this.mousedownEvent.getDocumentPosition()):n-this.mousedownEvent.time>r.$mouseHandler.$dragDelay&&this.startDrag()},this.dragWaitEnd=function(e){this.mousedownEvent.domEvent=e,this.startSelect()},this.drag=function(){var e=this.editor;this.dragCursor=e.renderer.screenToTextCoordinates(this.x,this.y),e.moveCursorToPosition(this.dragCursor),e.renderer.scrollCursorIntoView()},this.dragEnd=function(e){var t=this.editor,n=this.dragCursor,i=this.dragRange;r.removeCssClass(t.container,"ace_dragging"),t.session.removeMarker(this.dragSelectionMarker),t.keyBinding.removeKeyboardHandler(this.$dragKeybinding);if(!n)return;t.clearSelection();if(e&&(e.ctrlKey||e.altKey)){var s=t.session,o=i;o.end=s.insert(n,s.getTextRange(i)),o.start=n}else{if(i.contains(n.row,n.column))return;var o=t.moveText(i,n)}if(!o)return;t.selection.setSelectionRange(o)},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);if(i){i.isEmpty()&&(i.start.column--,i.end.column++),this.$clickSelection=i,this.setState("select");return}this.$clickSelection=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines"),this.$clickSelection=n.selection.getLineRange(t.row)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("null")},this.onMouseWheel=function(e){if(e.getShiftKey()||e.getAccelKey())return;var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(o.prototype),t.DefaultHandlers=o}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event"],function(e,t,n){function s(e){function f(){u=r.createElement("div"),u.className="ace_gutter-tooltip",u.style.display="none",t.container.appendChild(u)}function l(){u||f();var e=o.getDocumentPosition().row,r=n.$annotations[e];if(!r)return c();var i=t.session.getLength();if(e==i){var s=t.renderer.pixelToScreenCoordinates(0,o.y).row,l=o.$pos;if(s>t.session.documentToScreenRow(l.row,l.column))return c()}if(a==r)return;a=r.text.join("
    "),u.style.display="block",u.innerHTML=a,t.on("mousewheel",c),h(o)}function c(){s&&(s=clearTimeout(s)),a&&(u.style.display="none",a=null,t.removeEventListener("mousewheel",c))}function h(e){var n=t.renderer.$gutter.getBoundingClientRect();u.style.left=e.x+15+"px",e.y+3*t.renderer.lineHeight+151&&(r=n[n.length-2]);var i=a[t+"Path"];return i==null&&(i=a.basePath),i&&i.slice(-1)!="/"&&(i+="/"),i+t+"-"+r+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=function(){a.packaged=e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var r={},i="",s=document.getElementsByTagName("script");for(var o=0;o=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t]}),t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._emit("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._emit("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oo){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=[];for(var n=0;n1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=u.row&&l.shiftRow(-n)}s=i}else{var p;if(t){p=[i,0];for(var d=0;d=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,c=e;t=Math.min(t,n.length-1);while(c<=t){f=this.getFoldLine(c,f);if(!f)a=this.$getDisplayTokens(i.stringTrimRight(n[c])),s[c]=this.$computeWrapSplits(a,o,r),c++;else{a=[],f.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,a.length),s[0]=u;for(var o=1;o=d)a.pop();s[f.start.row]=this.$computeWrapSplits(a,o,r),c=f.end.row+1}}};var t=1,n=2,u=3,l=4,p=9,d=10,v=11,m=12;this.$computeWrapSplits=function(e,t){function o(t){var r=e.slice(i,t),o=r.length;r.join("").replace(/12/g,function(){o-=1}).replace(/2/g,function(){o-=1}),s+=o,n.push(s),i=t}if(e.length==0)return[];var n=[],r=e.length,i=0,s=0;while(r-i>t){var a=i+t;if(e[a]>=d){while(e[a]>=d)a++;o(a);continue}if(e[a]==u||e[a]==l){for(a;a!=i-1;a--)if(e[a]==u)break;if(a>i){o(a);continue}a=i+t;for(a;af&&e[a]f&&e[a]==p)a--;if(a>f){o(++a);continue}a=i+t,o(a)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(p):u>=4352&&g(u)?i.push(t,n):i.push(t)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&g(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.getRowLength=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u-1>=e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];v&&(s=v[e-o],e>o&&v.length&&(i=v[e-o-1]||v[v.length-1],n=n.substring(i)))}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i],m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}return e}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}this.$wrap=e},get:function(){return this.getUseWrapMode()?this.getWrapLimitRange().min||"free":"off"},handlesSet:!0},firstLineNumber:{set:function(){this._emit("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._emit("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._emit("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0}}),t.EditSession=p}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on("change",function(e){t._emit("changeCursor"),t.$isEmpty||t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){t.$isEmpty||t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+e);return}var t=this.getSelectionAnchor(),n=this.getSelectionLead(),r=this.isBackwards();(!r||t.column!==0)&&this.setSelectionAnchor(t.row,t.column+e),(r||n.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column==0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<=1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e}}).call(u.prototype),t.Selection=u}),ace.define("ace/range",["require","exports","module"],function(e,t,n){var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){if(!this.$embeds)return;this.$modes={};for(var t=0;t1?f.onMatch=this.$applyToken:f.onMatch=f.token);c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null),f.__proto__=null}u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var m=e.substring(l,v-d.length);c.type==h?c.value+=m:(c.type&&f.push(c),c={type:h,value:m})}for(var g=0;gr){while(l=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length==0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.$lines[e.start.row].substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this._insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._emit("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;ithis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;t.action==="insertText"?s.row===r&&s.column<=i?s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row):s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=n.doc,i=0,s=r.getLength();while(n.currentLine20){n.fireUpdateEvent(t,n.currentLine-1),n.running=setTimeout(n.$worker,20);return}}n.running=!1,n.fireUpdateEvent(t,s-1)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._emit("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u==f&&l-a<2)throw"The range has to be at least 2 characters width";var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);if(c&&!c.range.isStart(u,a)||h&&!h.range.isEnd(f,l))throw"A fold can't intersect already existing fold"+o.range+c.range;var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRange(n);if(t)this.removeFolds(i);else while(i.length)this.expandFolds(i),i=this.getFoldsInRange(n)},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row,i=0),t==null&&(t=e.end.row,n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){var n=this.getFoldWidget(e),r=this.getLine(e);t=t.domEvent;var i=t.shiftKey,s=t.ctrlKey||t.metaKey,o=t.altKey,u=n==="end"?-1:1,a=this.getFoldAt(e,u===-1?0:r.length,u);if(a){i||s?this.removeFold(a):this.expandFold(a);return}var f=this.getFoldWidgetRange(e);if(f&&!f.isMultiLine()){a=this.getFoldAt(f.start.row,f.start.column,1);if(a&&f.isEqual(a.range)){this.removeFold(a);return}}if(o){var l=this.getParentFoldRangeData(e);if(l.range)var c=l.range.start.row+1,h=l.range.end.row;this.foldAll(c,h,s?1e4:0)}else if(i){var h=f?f.end.row:this.getLength();this.foldAll(e+1,f.end.row,s?1e4:0)}else f&&(s&&(f.collapseChildren=1e4),this.addFold("...",f));f||((t.target||t.srcElement).className+=" ace_invalid")},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw"Can't add a fold to this FoldLine as it has no connection";this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw"Trying to add fold to FoldRow that doesn't have a matching row";this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowi)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column+=u,c.start.row+=o),c.end.row==i&&c.end.column>=n.column&&(c.end.column==n.column&&u>0&&fc.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o)}if(o!=0&&f=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(aw&&o[c].end.row==n.end.row)c--;o=o.slice(m,c+1);for(m=0,c=o.length;m=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){this.platform=e,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(t),this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:n},i=this._emit("exec",r);return this._signal("afterExec",r),i===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commmandKeyBinding={},this.addCommands(e)}var r=e("../lib/keys"),i=e("../lib/useragent");(function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commmandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:t.name||e});return}var n=this.commmandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n}),n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){e.indexOf(" ")!=-1&&(e=e.split(/\s+/).pop());var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=this.commmandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(s.prototype),t.HashHandler=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config"],function(e,t,n){function s(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config");t.commands=[{name:"showSettingsMenu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"selectall",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:s("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},readOnly:!0},{name:"foldall",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll()},readOnly:!0},{name:"unfoldall",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},readOnly:!0},{name:"findnext",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},readOnly:!0},{name:"findprevious",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},readOnly:!0},{name:"find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:s("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotostart",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectup",bindKey:s("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:s("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoend",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectdown",bindKey:s("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",readOnly:!0},{name:"golinedown",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordleft",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordleft",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolinestart",bindKey:s("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolinestart",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectleft",bindKey:s("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoleft",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordright",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordright",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolineend",bindKey:s("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolineend",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectright",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoright",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"togglerecording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:s("Ctrl-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:s("Ctrl-Shift-P",null),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},multiSelectAction:"forEach"},{name:"removeline",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},multiSelectAction:"forEach"},{name:"sortlines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine"},{name:"toggleBlockComment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach"},{name:"modifyNumberUp",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()}},{name:"movelinesup",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()}},{name:"copylinesdown",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()}},{name:"movelinesdown",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()}},{name:"del",bindKey:s("Delete","Delete|Ctrl-D"),exec:function(e){e.remove("right")},multiSelectAction:"forEach"},{name:"backspace",bindKey:s("Command-Backspace|Option-Backspace|Shift-Backspace|Backspace","Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach"},{name:"removetolinestart",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach"},{name:"removetolineend",bindKey:s("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach"},{name:"removewordleft",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach"},{name:"removewordright",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach"},{name:"outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach"},{name:"indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach"},{name:"blockoutdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine"},{name:"blockindent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach"},{name:"splitline",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach"},{name:"transposeletters",bindKey:s("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)}},{name:"touppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach"},{name:"tolowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach"}]}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/useragent","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/renderloop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/useragent"),u=e("./config"),a=e("./layer/gutter").Gutter,f=e("./layer/marker").Marker,l=e("./layer/text").Text,c=e("./layer/cursor").Cursor,h=e("./scrollbar").ScrollBar,p=e("./renderloop").RenderLoop,d=e("./lib/event_emitter").EventEmitter,v=".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;color: black;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;top: 0;bottom: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\"opacity: 0\"]{-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget.ace_closed {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}";i.importCssString(v,"ace_editor");var m=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new f(this.content);var r=this.$textLayer=new l(this.content);this.canvas=r.element,this.$markerFront=new f(this.content),this.$cursorLayer=new c(this.content),this.$horizScroll=!1,this.scrollBar=new h(this.container),this.scrollBar.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data)}),this.scrollTop=0,this.scrollLeft=0,s.addListener(this.scroller,"scroll",function(){var e=n.scroller.scrollLeft;n.scrollLeft=e,n.session.setScrollLeft(e)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener("changeCharacterSize",function(){n.updateCharacterSize(),n.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),u.resetOptions(this),u._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session=e,this.scroller.className="ace_scroller",this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$changedLines.lastRow2)return;this.resizing>1?this.resizing++:this.resizing=e?1:0,r||(r=i.getInnerHeight(this.container));if(r&&(e||o.height!=r)){o.height=r,s=this.CHANGE_SIZE,o.scrollerHeight=this.scroller.clientHeight;if(e||!o.scrollerHeight)o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBar.getWidth());this.scrollBar.setHeight(o.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),s|=this.CHANGE_FULL)}n||(n=i.getInnerWidth(this.container));if(n&&(e||this.resizing>1||o.width!=n)){s=this.CHANGE_SIZE,o.width=n;var t=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,n-t-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}if(!this.$size.scrollerHeight)return;e?this.$renderChanges(s,!0):this.$loop.schedule(s),e&&(this.$gutterLayer.$padding=null),e&&delete this.resizing},this.onGutterResize=function(){var e=this.$size.width,t=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=t+"px",this.$size.scrollerWidth=Math.max(0,e-t-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$loop.schedule(this.CHANGE_MARKER)},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.lineHeight;if(t<0||t>e.height-r)return;var i=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");i*=this.session.$getStringScreenWidth(s)[0]+2,r+=2,t-=1}n-=this.scrollLeft,n>this.$size.scrollerWidth-i&&(n=this.$size.scrollerWidth-i),n-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=i+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-n-i)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(e,t){if(!t&&(!e||!this.session||!this.container.offsetWidth))return;this._signal("beforeRender"),(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL)&&this.$computeLayerConfig();if(e&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var n=this.scroller.scrollLeft;this.scrollLeft=n,this.session.setScrollLeft(n),this.scroller.className=this.scrollLeft==0?"ace_scroller":"ace_scroller ace_scroll-left"}if(e&this.CHANGE_FULL){this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this.$updateScrollBar(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(this.layerConfig):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(this.layerConfig),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),e&this.CHANGE_SIZE&&this.$updateScrollBar(),this._signal("afterRender")},this.$computeLayerConfig=function(){if(!this.$size.scrollerHeight)return this.onResize(!0);var e=this.session,t=this.scrollTop%this.lineHeight,n=this.$size.scrollerHeight+this.lineHeight,r=this.$getLongestLine(),i=this.$hScrollBarAlwaysVisible||this.$size.scrollerWidth-r<0,s=this.$horizScroll!==i;this.$horizScroll=i,s&&(this.scroller.style.overflowX=i?"scroll":"hidden",i||this.session.setScrollLeft(0));var o=this.session.getScreenLength()*this.lineHeight;this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,o-this.$size.scrollerHeight)));var u=Math.ceil(n/this.lineHeight)-1,a=Math.max(0,Math.round((this.scrollTop-t)/this.lineHeight)),f=a+u,l,c,h=this.lineHeight;a=e.screenToDocumentRow(a,0);var p=e.getFoldLine(a);p&&(a=p.start.row),l=e.documentToScreenRow(a,0),c=e.getRowLength(a)*h,f=Math.min(e.screenToDocumentRow(f,0),e.getLength()-1),n=this.$size.scrollerHeight+e.getRowLength(f)*h+c,t=this.scrollTop-l*h,this.layerConfig={width:r,padding:this.$padding,firstRow:a,firstRowScreen:l,lastRow:f,lineHeight:h,characterWidth:this.characterWidth,minHeight:n,maxHeight:o,offset:t,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-t+"px",this.content.style.marginTop=-t+"px",this.content.style.width=r+2*this.$padding+"px",this.content.style.height=n+"px",s&&this.onResize(!0)},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ti?(t&&(i-=t*this.$size.scrollerHeight),this.session.setScrollTop(i)):this.scrollTop+this.$size.scrollerHeightr?(r=1)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e){function r(n){if(t.$themeValue!=e)return;if(!n.cssClass)return;i.importCssString(n.cssText,n.cssClass,t.container.ownerDocument),t.theme&&i.removeCssClass(t.container,t.theme.cssClass),t.$theme=n.cssClass,t.theme=n,i.addCssClass(t.container,n.cssClass),i.setCssClass(t.container,"ace_dark",n.isDark);var r=n.padding||4;t.$padding&&r!=t.$padding&&t.setPadding(r),t.$size&&(t.$size.width=0,t.onResize()),t._dispatchEvent("themeLoaded",{theme:n})}var t=this;this.$themeValue=e,t._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var n=e||"ace/theme/textmate";u.loadModule(["theme",n],r)}else r(e)},this.getTheme=function(){return this.$themeValue},this.setStyle=function(t,n){i.setCssClass(this.container,t,n!=0)},this.unsetStyle=function(t){i.removeCssClass(this.container,t)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),u.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible=e,(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}}}),t.VirtualRenderer=m}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];var t,n;for(var r=0;ru&&(i=o.end.row+1,o=this.session.getNextFoldLine(i,o),u=o?o.start.row:Infinity);if(i>s)break;var p=this.$annotations[i]||t;n.push("
    ",h=i+c);if(a){var d=a[i];d==null&&(d=a[i]=this.session.getFoldWidget(i)),d&&n.push("")}n.push("
    "),i++}this.element=r.setInnerHtml(this.element,n.join("")),this.element.style.height=e.minHeight+"px",this.session.$useWrapMode&&(h=this.session.getLength());var v=(""+h).length*e.characterWidth,m=this.$padding||this.$computePadding();v+=m.left+m.right,v!==this.gutterWidth&&(this.gutterWidth=v,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",v))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1,this.$padding.right=parseInt(e.paddingRight),this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.xn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
    "),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
    ")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
    ")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
    ")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
    ")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){r.implement(this,u),this.EOF_CHAR="¶",this.EOL_CHAR="¬",this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){var e=this;this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=o.isIE||o.isOldGecko?function(){var e=1e3;if(!this.$measureNode){var t=this.$measureNode=i.createElement("div"),n=t.style;n.width=n.height="auto",n.left=n.top=-e*40+"px",n.visibility="hidden",n.position="fixed",n.overflow="visible",n.whiteSpace="nowrap",t.innerHTML=s.stringRepeat("Xy",e);if(this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(t);else{var r=this.element.parentNode;while(!i.hasCssClass(r,"ace_editor"))r=r.parentNode;r.appendChild(t)}}if(!this.element.offsetWidth)return null;var n=this.$measureNode.style,o=i.computedStyle(this.element);for(var u in this.$fontStyles)n[u]=o[u];var a={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(e*2)};return a.width==0||a.height==0?null:a}:function(){if(!this.$measureNode){var e=this.$measureNode=i.createElement("div"),t=e.style;t.width=t.height="auto",t.left=t.top="-100px",t.visibility="hidden",t.position="fixed",t.overflow="visible",t.whiteSpace="nowrap",e.innerHTML="X";var n=this.element.parentNode;while(n&&!i.hasCssClass(n,"ace_editor"))n=n.parentNode;if(!n)return this.$measureNode=null;n.appendChild(e)}var r=this.$measureNode.getBoundingClientRect(),s={height:r.height,width:r.width};return s.width==0||s.height==0?null:s},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+this.TAB_CHAR+s.stringRepeat(" ",n-1)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide";if(this.showInvisibles){r+=" ace_invisible";var i=s.stringRepeat(this.SPACE_CHAR,this.tabSize),o=this.TAB_CHAR+s.stringRepeat(" ",this.tabSize-1)}else var i=s.stringRepeat(" ",this.tabSize),o=i;this.$tabStrings[" "]=""+i+"",this.$tabStrings[" "]=""+o+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;al&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a);else{var l=a.childNodes;while(l.length)r.appendChild(l[0])}s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("
    "),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":s.stringRepeat(" ",e.length);if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e==" "){var f=i.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t){var n=t.search(this.$indentGuideRe);return n<=0?t:t[0]==" "?(n-=n%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("","
    "),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors")};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,e?r.addCssClass(this.element,"ace_smooth-blinking"):r.removeCssClass(this.element,"ace_smooth-blinking"),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking");for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";t()}.bind(this),this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<-e.offset)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar",this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.width=i.scrollbarWidth(e.ownerDocument),this.element.style.width=(this.width||15)+5+"px",s.addListener(this.element,"scroll",this.onScroll.bind(this))};(function(){r.implement(this,o),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}).call(u.prototype),t.ScrollBar=u}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),t.onSessionChange.call(e,e),e.on("changeSession",t.onSessionChange.bind(e)),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function i(){n&&(r.style.cursor="",n=!1)}var t=e.textInput.getElement(),n=!1,r=e.renderer.content;u.addListener(t,"keydown",function(e){e.keyCode==18&&!(e.ctrlKey||e.shiftKey||e.metaKey)?n||(r.style.cursor="crosshair",n=!0):n&&(r.style.cursor="")}),u.addListener(t,"keyup",i),u.addListener(t,"blur",i)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount==0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._emit("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._emit("removeRange",{ranges:e}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=this.session,i=this.selection,o=i.rangeList,u,a=i._eventRegistry;i._eventRegistry={};var f=new s(r);this.inVirtualSelectionMode=!0;for(var l=o.ranges.length;l--;){if(n)while(l>0&&o.ranges[l].start.row==o.ranges[l-1].end.row)l--;f.fromOrientedRange(o.ranges[l]),this.selection=r.selection=f;var c=e.exec(this,t||{});!u==undefined&&(u=c),f.toOrientedRange(o.ranges[l])}f.detach(),this.selection=r.selection=i,this.inVirtualSelectionMode=!1,i._eventRegistry=a,i.mergeOverlappingRanges();var h=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),h&&h.from==h.to&&this.renderer.animateScrolling(h.from),u},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getCopyText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;rn.length||t.length<2||!t[1])return this.commands.exec("insertstring",this,e);for(var r=n.length;r--;){var i=n[r];i.isEmpty()||this.session.remove(i),this.session.insert(i.start,t[r])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();if(i.isEmpty()){var i=n.getWordRange(i.start.row,i.start.column);i.cursor=i.end,this.multiSelect.addRange(i)}var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.multiSelect.addRange(o)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=this.session.doc.removeLines(s,o);u=this.$reAlignText(u),this.session.doc.insertLines(s,u),r.start.column=0,r.end.column=u[u.length-1].length,this.selection.setRange(r)}else{var f=-1,l=n.filter(function(e){if(e.cursor.row==f)return!0;f=e.cursor.row});t.$onRemoveRange(l);var c=0,h=Infinity,p=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>c&&(c=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=c,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e){function o(e){return a.stringRepeat(" ",e)}function u(e){return e[2]?o(r)+e[2]+o(i-e[2].length+s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function f(e){return e[2]?o(r+i-e[2].length)+e[2]+o(s," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?o(r)+e[2]+o(s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var t=!0,n=!0,r,i,s;return e.map(function(e){var o=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return o?r==null?(r=o[1].length,i=o[2].length,s=o[3].length,o):(r+i+s!=o[1].length+o[2].length+o[3].length&&(n=!1),r!=o[1].length&&(t=!1),r>o[1].length&&(r=o[1].length),io[3].length&&(s=o[3].length),o):[e]}).map(t?n?f:u:l)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.removeEventListener("addRange",this.$onAddRange),n.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),n.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),n.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u==0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveCursorToPosition(t),a.selection.clearSelection(),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!s&&!n&&u==0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);a.once("mouseup",function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e))})}else if(n&&u==0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange();var x=[];s?(b=y.documentToScreenPosition(f.lead),g()):(f.moveCursorToPosition(c),f.clearSelection());var T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(o.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,o=Object.create(i),u=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){u.messageBuffer.push(e),r&&setTimeout(a)};var a=function(){var e=u.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&o._emit(e.event,e.data)};o.postMessage=function(e){u.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){r=new e[n](o);while(u.messageBuffer.length)a()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;ef){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=this.getFoldWidget(e,u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;}.ace-tm .ace_cursor {border-left: 2px solid black;}.ace-tm .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_markup.ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { ace.require(["ace/ace"], function(a) { a && a.config.init(); @@ -8,4 +10,7 @@ ace[key] = a[key]; }); })(); + openerp.website.ace_call.mode_xml(); + openerp.website.ace_call.theme_monokai(); +} \ No newline at end of file diff --git a/addons/website/static/lib/ace/mode-xml.js b/addons/website/static/lib/ace/mode-xml.js index b8a56adf0c5..6868a7d3e48 100644 --- a/addons/website/static/lib/ace/mode-xml.js +++ b/addons/website/static/lib/ace/mode-xml.js @@ -1 +1,3 @@ -ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=function(){this.$tokenizer=new s((new o).getRules()),this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.blockComment={start:""}}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/xml_util","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./xml_util"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"text",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:"xml-pe",regex:"<\\?.*?\\?>"},{token:"comment",regex:"<\\!--",next:"comment"},{token:"xml-pe",regex:"<\\!.*?>"},{token:"meta.tag",regex:"<\\/?",next:"tag"},{token:"text",regex:"\\s+"},{token:"constant.character.entity",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],cdata:[{token:"text",regex:"\\]\\]>",next:"start"},{token:"text",regex:"\\s+"},{token:"text",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment",regex:".*?-->",next:"start"},{token:"comment",regex:".+"}]},i.tag(this.$rules,"tag","start")};r.inherits(o,s),t.XmlHighlightRules=o}),ace.define("ace/mode/xml_util",["require","exports","module"],function(e,t,n){function r(e){return[{token:"string",regex:'"',next:e+"_qqstring"},{token:"string",regex:"'",next:e+"_qstring"}]}function i(e,t){return[{token:"string",regex:e,next:t},{token:"constant.language.escape",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"},{defaultToken:"string"}]}t.tag=function(e,t,n,s){e[t]=[{token:"text",regex:"\\s+"},{token:s?function(e){return s[e]?"meta.tag.tag-name."+s[e]:"meta.tag.tag-name"}:"meta.tag.tag-name",regex:"[-_a-zA-Z0-9:]+",next:t+"_embed_attribute_list"},{token:"empty",regex:"",next:t+"_embed_attribute_list"}],e[t+"_qstring"]=i("'",t+"_embed_attribute_list"),e[t+"_qqstring"]=i('"',t+"_embed_attribute_list"),e[t+"_embed_attribute_list"]=[{token:"meta.tag.r",regex:"/?>",next:n},{token:"keyword.operator",regex:"="},{token:"entity.other.attribute-name",regex:"[-_a-zA-Z0-9:]+"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"text",regex:"\\s+"}].concat(r(t))}}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){function u(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,a=function(){this.inherit(s,["string_dquotes"]),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),a=new o(r,s.row,s.column),f=a.getCurrentToken(),l=!1;if(!f||!u(f,"meta.tag")&&(!u(f,"text")||!f.value.match("/"))){do f=a.stepBackward();while(f&&(u(f,"string")||u(f,"keyword.operator")||u(f,"entity.attribute-name")||u(f,"text")))}else l=!0;if(!f||!u(f,"meta.tag-name")||a.stepBackward().value.match("/"))return;var c=f.value;if(l)var c=c.substring(0,s.column-f.start);return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+2);if(u=="-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==""&&f!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+f+"}",selection:!1};if(m.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(m.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){var l=u.substring(s.column,s.column+1);if(l=="}"){var c=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(i=="\n"||i=="\r\n"){var p="";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat("}",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l=="}"||p!==""){var d=r.findMatchingBracket({row:s.row,column:s.column},"}");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:"\n"+v+"\n"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;h--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;vo.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!=="comment"&&(p.type!=="string"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type==="string"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e){o.call(this),this.voidElements=e||{}};r.inherits(a,o),function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r.closing?t=="markbeginend"?"end":"":!r.tagName||this.voidElements[r.tagName.toLowerCase()]?"":r.selfClosing?"":r.value.indexOf("/"+r.tagName)!==-1?"":"start"},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r="";for(var s=0;s?)/,this._parseTag=function(e){var t=e.match(this.tagRe),n=0;return{value:e,match:t?t[2]:"",closing:t?!!t[3]:!1,selfClosing:t?!!t[5]||t[2]=="/>":!1,tagName:t?t[4]:"",column:t[1]?n+t[1].length:n}},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n="",r;do if(t.type.indexOf("meta.tag")===0){if(!r)var r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()};n+=t.value;if(n.indexOf(">")!==-1){var i=this._parseTag(n);return i.start=r,i.end={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length},e.stepForward(),i}}while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n="",r;do if(t.type.indexOf("meta.tag")===0){r||(r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length}),n=t.value+n;if(n.indexOf("<")!==-1){var i=this._parseTag(n);return i.end=r,i.start={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()},e.stepBackward(),i}}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements[t.tagName])return;if(this.voidElements[n.tagName]){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r.match)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.column),l={row:n,column:r.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.column+r.match.length),c={row:n,column:r.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}.call(a.prototype)}) \ No newline at end of file +openerp.website.ace_call.mode_xml = function () { +ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=function(){this.$tokenizer=new s((new o).getRules()),this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.blockComment={start:""}}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/xml_util","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./xml_util"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"text",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:"xml-pe",regex:"<\\?.*?\\?>"},{token:"comment",regex:"<\\!--",next:"comment"},{token:"xml-pe",regex:"<\\!.*?>"},{token:"meta.tag",regex:"<\\/?",next:"tag"},{token:"text",regex:"\\s+"},{token:"constant.character.entity",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],cdata:[{token:"text",regex:"\\]\\]>",next:"start"},{token:"text",regex:"\\s+"},{token:"text",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment",regex:".*?-->",next:"start"},{token:"comment",regex:".+"}]},i.tag(this.$rules,"tag","start")};r.inherits(o,s),t.XmlHighlightRules=o}),ace.define("ace/mode/xml_util",["require","exports","module"],function(e,t,n){function r(e){return[{token:"string",regex:'"',next:e+"_qqstring"},{token:"string",regex:"'",next:e+"_qstring"}]}function i(e,t){return[{token:"string",regex:e,next:t},{token:"constant.language.escape",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"},{defaultToken:"string"}]}t.tag=function(e,t,n,s){e[t]=[{token:"text",regex:"\\s+"},{token:s?function(e){return s[e]?"meta.tag.tag-name."+s[e]:"meta.tag.tag-name"}:"meta.tag.tag-name",regex:"[-_a-zA-Z0-9:]+",next:t+"_embed_attribute_list"},{token:"empty",regex:"",next:t+"_embed_attribute_list"}],e[t+"_qstring"]=i("'",t+"_embed_attribute_list"),e[t+"_qqstring"]=i('"',t+"_embed_attribute_list"),e[t+"_embed_attribute_list"]=[{token:"meta.tag.r",regex:"/?>",next:n},{token:"keyword.operator",regex:"="},{token:"entity.other.attribute-name",regex:"[-_a-zA-Z0-9:]+"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"text",regex:"\\s+"}].concat(r(t))}}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){function u(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,a=function(){this.inherit(s,["string_dquotes"]),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),a=new o(r,s.row,s.column),f=a.getCurrentToken(),l=!1;if(!f||!u(f,"meta.tag")&&(!u(f,"text")||!f.value.match("/"))){do f=a.stepBackward();while(f&&(u(f,"string")||u(f,"keyword.operator")||u(f,"entity.attribute-name")||u(f,"text")))}else l=!0;if(!f||!u(f,"meta.tag-name")||a.stepBackward().value.match("/"))return;var c=f.value;if(l)var c=c.substring(0,s.column-f.start);return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+2);if(u=="-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==""&&f!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+f+"}",selection:!1};if(m.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])?(m.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(m.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){var l=u.substring(s.column,s.column+1);if(l=="}"){var c=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(i=="\n"||i=="\r\n"){var p="";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat("}",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l=="}"||p!==""){var d=r.findMatchingBracket({row:s.row,column:s.column},"}");if(!d)return null;var v=this.getNextLineIndent(e,u.substring(0,s.column),r.getTabString()),g=this.$getIndent(u);return{text:"\n"+v+"\n"+g+p,selection:[1,v.length,1,v.length]}}}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;h--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;vo.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!=="comment"&&(p.type!=="string"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type==="string"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e){o.call(this),this.voidElements=e||{}};r.inherits(a,o),function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r.closing?t=="markbeginend"?"end":"":!r.tagName||this.voidElements[r.tagName.toLowerCase()]?"":r.selfClosing?"":r.value.indexOf("/"+r.tagName)!==-1?"":"start"},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r="";for(var s=0;s?)/,this._parseTag=function(e){var t=e.match(this.tagRe),n=0;return{value:e,match:t?t[2]:"",closing:t?!!t[3]:!1,selfClosing:t?!!t[5]||t[2]=="/>":!1,tagName:t?t[4]:"",column:t[1]?n+t[1].length:n}},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n="",r;do if(t.type.indexOf("meta.tag")===0){if(!r)var r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()};n+=t.value;if(n.indexOf(">")!==-1){var i=this._parseTag(n);return i.start=r,i.end={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length},e.stepForward(),i}}while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n="",r;do if(t.type.indexOf("meta.tag")===0){r||(r={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()+t.value.length}),n=t.value+n;if(n.indexOf("<")!==-1){var i=this._parseTag(n);return i.end=r,i.start={row:e.getCurrentTokenRow(),column:e.getCurrentTokenColumn()},e.stepBackward(),i}}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements[t.tagName])return;if(this.voidElements[n.tagName]){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r.match)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.column),l={row:n,column:r.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.column+r.match.length),c={row:n,column:r.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}.call(a.prototype)}) +}; \ No newline at end of file diff --git a/addons/website/static/lib/ace/theme-monokai.js b/addons/website/static/lib/ace/theme-monokai.js index 4abddc87d9b..afe65c2f235 100644 --- a/addons/website/static/lib/ace/theme-monokai.js +++ b/addons/website/static/lib/ace/theme-monokai.js @@ -1 +1,3 @@ -ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {border-left: 2px solid #F8F8F0}.ace-monokai .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_markup.ace_underline {text-decoration: underline}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) \ No newline at end of file +openerp.website.ace_call.theme_monokai = function () { +ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {border-left: 2px solid #F8F8F0}.ace-monokai .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_markup.ace_underline {text-decoration: underline}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) +}; \ No newline at end of file diff --git a/addons/website/static/src/css/editor.css b/addons/website/static/src/css/editor.css index 6178b1a5885..24eb4e57deb 100644 --- a/addons/website/static/src/css/editor.css +++ b/addons/website/static/src/css/editor.css @@ -1,50 +1,93 @@ -/* ---- CKEditor Minimal Reset ---- {{{ */ -.navbar.navbar-inverse .cke_chrome { - border: none; -} - -.navbar.navbar-inverse .cke_inner { +/* ---- SummerNote Minimal Reset ---- {{{ */ +.note-popover .popover { + position: fixed !important; + top: -9px !important; + right: 0px !important; + left: auto !important; + border: 0; background: transparent; -} - -.navbar.navbar-inverse .cke_toolbar { - position: relative; - top: 1px; -} -.navbar.navbar-inverse .cke_combo_button { - padding-top: 3px; - padding-bottom: 3px; -} -.navbar.navbar-inverse .cke_button { - padding-top: 7px; - padding-bottom: 7px; -} - -.navbar.navbar-inverse .cke_top { - background: transparent; - border: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; box-shadow: none; - -ms-filter: "alpha(opacity=50)"; + -webkit-box-shadow: none; + z-index: 1040; } - -#cke_1_top { +.note-popover .popover-content { + padding: 0 !important; + margin: 0 0 0 6px !important; +} +.note-popover .popover-content > div { + padding-top: 0 !important; + margin-top: 0 !important; +} +.note-popover .popover-content > a { + border-radius: 3px; + background-color: #fff; + border-color: #ccc; + padding: 4px 10px; + font-size: 14px; + line-height: 1.5; +} +.note-popover .popover-content .note-para .dropdown-menu { + min-width: 148px !important; + padding: 5px 0 5px 5px !important; +} +.note-popover .popover-content .note-ul .dropdown-menu { + min-width: 150px !important; + padding: 5px 0 5px 5px !important; +} +.note-popover .popover-content .note-ul .dropdown-menu .note-li { + margin-right: 5px; +} +.note-popover .popover-content > span { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle; + border-radius: 3px; + background-color: white; + border-color: #cccccc; + padding: 4px 10px; + font-size: 14px; + line-height: 1.5; +} +.note-popover .popover-content .colorpicker { + margin: 0; +} +.note-popover .popover-content .colorpicker td > * { + width: 20px; + height: 20px; padding: 0; + margin: 0; + border: 1px solid #fff; +} +.note-popover .popover .popover-content .dropdown-menu a { + display: block; +} +.note-popover .arrow { + display: none; } -#cke_wrapwrap { - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; +.o_editable[data-oe-model][data-oe-type]:hover { + -moz-box-shadow: 0 0 10px 3px rgba(94, 255, 0, 0.8); + -webkit-box-shadow: 0 0 10px 3px rgba(94, 255, 0, 0.8); + box-shadow: 0 0 10px 3px rgba(94, 255, 0, 0.8); } -#cke_wrapwrap .cke_button { - padding-top: 5px; - padding-bottom: 5px; + +/* Prevent the text contents of draggable elements from being selectable. */ +[draggable] { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + user-select: none; } -#cke_wrapwrap .cke_combo_button { - padding-top: 1px; - padding-bottom: 1px; + +/* Prevent firefox handler. */ +.o_editable .btn { + -webkit-user-select: auto; + -moz-user-select: auto; + -ms-user-select: auto; + user-select: auto; } /* ---- OpenERP Style ---- {{{ */ @@ -57,18 +100,18 @@ padding: 2px; margin: 0; z-index: 20000; + background: #414141, url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzY0NjA2MCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzI2MjYyNiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: #414141, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #646060), color-stop(100%, #262626)); - background: #414141, -webkit-linear-gradient(#646060, #262626); background: #414141, -moz-linear-gradient(#646060, #262626); - background: #414141, -o-linear-gradient(#646060, #262626); + background: #414141, -webkit-linear-gradient(#646060, #262626); background: #414141, linear-gradient(#646060, #262626); - -webkit-box-sizing: border-box; -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; box-sizing: border-box; } .oe_website_editorbar li { display: inline; - color: #eeeeee; + color: #eee; } .oe_website_editorbar li:hover { background: rgba(0, 0, 0, 0.2); @@ -92,7 +135,7 @@ padding-right: 3px; } .oe_website_editorbar .oe_rte_toolbar button.oe_button_list:after { - content: "\F0D7"; + content: ""; padding-left: 6px; } @@ -108,11 +151,15 @@ display: none !important; } -.cke_editable .css_editable_mode_hidden { +.o_editable .css_editable_mode_hidden { display: none; } -.cke_editable .css_editable_mode_display { +.o_editable .css_non_editable_mode_hidden { + display: block !important; +} + +.o_editable .media_iframe_video .css_editable_mode_display { display: block !important; } @@ -159,7 +206,7 @@ table.editorbar-panel { width: 100%; } table.editorbar-panel td { - border: 1px solid #aaaaaa; + border: 1px solid #aaa; } table.editorbar-panel td.selected { background-color: #b1c9d9; @@ -230,7 +277,7 @@ ul.oe_menu_editor > li:first-child > div > span > .fa-home { display: block; } ul.oe_menu_editor .oe_menu_placeholder { - outline: 1px dashed #4183c4; + outline: 1px dashed #4183C4; } ul.oe_menu_editor ul { list-style: none; @@ -246,8 +293,9 @@ ul.oe_menu_editor .disclose { /* ---- RTE ---- {{{ */ .oe_editable .btn, .btn.oe_editable { - -webkit-user-select: auto; -moz-user-select: auto; + -ms-user-select: auto; + -webkit-user-select: auto; user-select: auto; cursor: text !important; } @@ -317,7 +365,7 @@ ul.oe_menu_editor .disclose { padding: 0 15px; } .modal #fa-preview .font-icons-selected { - background-color: #dddddd; + background-color: #ddd; } .existing-attachments .pager .disabled { @@ -348,25 +396,6 @@ ul.oe_menu_editor .disclose { border-color: #00f8f8; } -.cke_widget_wrapper { - position: static !important; -} - -.cke_widget_inline { - display: inline !important; -} - -.cke_widget_editable:empty:after { - opacity: 0.3; - white-space: pre-wrap; -} -.cke_widget_editable:not([placeholder]):empty::after { - content: " "; -} -.cke_widget_editable[placeholder]:not(:focus):empty::after { - content: attr(placeholder); -} - .oe_carlos_danger { outline: 1px solid red !important; background-color: #ffd9dd !important; @@ -392,7 +421,7 @@ ul.oe_menu_editor .disclose { display: inline-block; } -.cke_editable .fa { +.note-editable .fa { cursor: pointer; } @@ -400,15 +429,17 @@ ul.oe_menu_editor .disclose { text-align: center; } +.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + min-height: 24px; +} + /* ---- MOBILE PREVIEW ---- {{{ */ .oe_mobile_preview.modal .modal-content { height: 660px; - background-color: black; - border: 2px solid #1c1f1f; - -webkit-border-radius: 10px; + background-color: #000000; + border: 2px solid #1C1F1F; -moz-border-radius: 10px; - -ms-border-radius: 10px; - -o-border-radius: 10px; + -webkit-border-radius: 10px; border-radius: 10px; margin: auto; top: 0; @@ -418,7 +449,7 @@ ul.oe_menu_editor .disclose { max-width: 330px; } .oe_mobile_preview.modal .modal-content .modal-header { - background-color: black; + background-color: #000000; border-bottom: 0; -moz-border-radius-topleft: 10px; -webkit-border-top-left-radius: 10px; @@ -428,20 +459,20 @@ ul.oe_menu_editor .disclose { border-top-right-radius: 10px; } .oe_mobile_preview.modal .modal-content .modal-header .modal-title { - color: #1c1f1f; + color: #1C1F1F; } .oe_mobile_preview.modal .modal-content .modal-header .close { color: lightgrey; - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); opacity: 1; } .oe_mobile_preview.modal .modal-content .modal-header .close:hover { - color: #e00101; - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + color: #E00101; + filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); opacity: 1; } .oe_mobile_preview.modal .modal-content .modal-body { - background-color: black; + background-color: #000000; max-height: 600px; padding: 0; margin: 0; @@ -453,7 +484,7 @@ ul.oe_menu_editor .disclose { border: none; } .oe_mobile_preview.modal .modal-content .modal-footer { - background-color: black; + background-color: #000000; } /* ---- SEO TOOLS ---- {{{ */ @@ -461,17 +492,15 @@ ul.oe_menu_editor .disclose { width: 80%; } .oe_seo_configuration .oe_remove { - color: #e00101; + color: #E00101; } .oe_seo_configuration .oe_seo_suggestion { cursor: pointer; } .oe_seo_configuration .oe_seo_keyword { padding: 0.2em 0.4em 0.2em 0.5em; - -webkit-border-radius: 0.4em; -moz-border-radius: 0.4em; - -ms-border-radius: 0.4em; - -o-border-radius: 0.4em; + -webkit-border-radius: 0.4em; border-radius: 0.4em; } .oe_seo_configuration li.oe_seo_preview_g { @@ -505,7 +534,7 @@ ul.oe_menu_editor .disclose { font-style: normal !important; } .oe_seo_configuration li.oe_seo_preview_g .s { - color: #444444; + color: #444; max-width: 42em; } .oe_seo_configuration li.oe_seo_preview_g .kv, .oe_seo_configuration li.oe_seo_preview_g .slp { @@ -513,7 +542,7 @@ ul.oe_menu_editor .disclose { margin-bottom: 1px; } .oe_seo_configuration li.oe_seo_preview_g .f { - color: #666666; + color: #666; margin-bottom: 1px; } .oe_seo_configuration li.oe_seo_preview_g .f cite { @@ -531,7 +560,7 @@ ul.oe_menu_editor .disclose { right: 0; z-index: 1001; height: 100%; - background: #2f3129; + background: #2F3129; color: white; } .oe_ace_view_editor .oe_ace_view_editor_title { @@ -583,7 +612,7 @@ ul.oe_menu_editor .disclose { /* ---- CUSTOMIZE THEME ---- {{{ */ #theme_error { - background: #ffffcc; + background: #ffc; } #theme_customize_modal { @@ -604,7 +633,7 @@ ul.oe_menu_editor .disclose { letter-spacing: normal; } #theme_customize_modal .modal-h5 { - color: white; + color: #ffffff; font-family: "Lato-Regular"; font-weight: normal; text-transform: uppercase; @@ -623,14 +652,14 @@ ul.oe_menu_editor .disclose { text-align: center; } #theme_customize_modal label > div, #theme_customize_modal label > img { - border: 1px solid white; + border: 1px solid #fff; line-height: 30px; font-size: 0.9em; margin: 2px 4px; } #theme_customize_modal label.checked > div, #theme_customize_modal label.checked > img { - box-shadow: 2px 2px 3px #888888; - border: 1px solid #666666; + box-shadow: 2px 2px 3px #888; + border: 1px solid #666; } #theme_customize_modal label img { width: 60px; @@ -648,7 +677,7 @@ ul.oe_menu_editor .disclose { display: block; width: 100%; height: 100%; - background: black; + background: #000; opacity: 0.3; position: absolute; z-index: 1; diff --git a/addons/website/static/src/css/editor.sass b/addons/website/static/src/css/editor.sass index d2f9c38b4e1..e5276fdf5d1 100644 --- a/addons/website/static/src/css/editor.sass +++ b/addons/website/static/src/css/editor.sass @@ -1,46 +1,88 @@ @import "common" -/* ---- CKEditor Minimal Reset ---- {{{ */ +/* ---- SummerNote Minimal Reset ---- {{{ */ -.navbar.navbar-inverse .cke_chrome - border: none +.note-popover + .popover + position: fixed !important + top: -9px !important + right: 0px !important + left: auto !important + border: 0 + background: transparent + box-shadow: none + -webkit-box-shadow: none + z-index: 1040 + .popover-content + padding: 0 !important + margin: 0 0 0 6px !important + > div + padding-top: 0 !important + margin-top: 0 !important + > a + border-radius: 3px + background-color: #fff + border-color: #ccc + padding: 4px 10px + font-size: 14px + line-height: 1.5 + .note-para .dropdown-menu + min-width: 148px !important + padding: 5px 0 5px 5px !important + .note-ul .dropdown-menu + min-width: 150px !important + padding: 5px 0 5px 5px !important + .note-li + margin-right: 5px + > span + display: inline-block + max-width: 200px + overflow: hidden + text-overflow: ellipsis + white-space: nowrap + vertical-align: middle + border-radius: 3px + background-color: white + border-color: #cccccc + padding: 4px 10px + font-size: 14px + line-height: 1.5 -.navbar.navbar-inverse .cke_inner - background: transparent + .colorpicker + margin: 0 + td > * + width: 20px + height: 20px + padding: 0 + margin: 0 + border: 1px solid #fff -.navbar.navbar-inverse - .cke_toolbar - position: relative - top: 1px - .cke_combo_button - padding-top: 3px - padding-bottom: 3px - .cke_button - padding-top: 7px - padding-bottom: 7px + .popover .popover-content .dropdown-menu a + display: block + .arrow + display: none -.navbar.navbar-inverse .cke_top - background: transparent - border: none - +box-shadow(none) - -ms-filter: "alpha(opacity=50)" - -#cke_1_top - padding: 0 - -#cke_wrapwrap - -moz-box-shadow: none - -webkit-box-shadow: none - box-shadow: none - .cke_button - padding-top: 5px - padding-bottom: 5px - .cke_combo_button - padding-top: 1px - padding-bottom: 1px +.o_editable[data-oe-model][data-oe-type]:hover + -moz-box-shadow: 0 0 10px 3px rgba(94, 255, 0, 0.8) + -webkit-box-shadow: 0 0 10px 3px rgba(94, 255, 0, 0.8) + box-shadow: 0 0 10px 3px rgba(94, 255, 0, 0.8) // }}} - + +/* Prevent the text contents of draggable elements from being selectable. */ +[draggable] + -moz-user-select: none + -khtml-user-select: none + -webkit-user-select: none + user-select: none + +/* Prevent firefox handler. */ +.o_editable .btn + -webkit-user-select: auto + -moz-user-select: auto + -ms-user-select: auto + user-select: auto + /* ---- OpenERP Style ---- {{{ */ .oe_website_editorbar @@ -88,10 +130,13 @@ .css_editable_hidden display: none !important -.cke_editable .css_editable_mode_hidden +.o_editable .css_editable_mode_hidden display: none -.cke_editable .css_editable_mode_display +.o_editable .css_non_editable_mode_hidden + display: block !important + +.o_editable .media_iframe_video .css_editable_mode_display display: block !important .oe_structure.oe_empty:empty, [data-oe-type=html]:empty, .oe_structure.oe_empty > .oe_drop_zone.oe_insert:only-child, [data-oe-type=html] > .oe_drop_zone.oe_insert:only-child @@ -292,28 +337,6 @@ $attachment-border-color: #848490 border-width: 5px border-color: rgb(0, 248, 248) -// wrapper positioned relatively for drag&drop widget which is disabled below. -// Breaks completely horribly crazy products listing page, so take it out. -.cke_widget_wrapper - position: static !important - -.cke_widget_inline - display: inline !important - -// prevent inline widgets from entirely disappearing when their (textual) -// content is removed -.cke_widget_editable - // basic config - &:empty:after - opacity: 0.3 - white-space: pre-wrap - // no @placeholder -> just add some padding - &:not([placeholder]):empty::after - content: " " - // with placeholder and when not (yet) focused -> display placeholder - &[placeholder]:not(:focus):empty::after - content: attr(placeholder) - .oe_carlos_danger outline: 1px solid red !important background-color: #ffd9dd !important @@ -336,12 +359,15 @@ $attachment-border-color: #848490 display: inline-block // fontawesome -.cke_editable .fa +.note-editable .fa cursor: pointer .img-responsive text-align: center +.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 + min-height: 24px + // }}} /* ---- MOBILE PREVIEW ---- {{{ */ @@ -568,5 +594,3 @@ body.theme_customize_css_loading magin-top: -1px // }}} - -// vim:tabstop=4:shiftwidth=4:softtabstop=4:fdm=marker: diff --git a/addons/website/static/src/css/snippets.css b/addons/website/static/src/css/snippets.css index a873e3d6fec..1084e30ed25 100644 --- a/addons/website/static/src/css/snippets.css +++ b/addons/website/static/src/css/snippets.css @@ -6,8 +6,8 @@ right: 0px; padding-top: 6px; background: #282828; - -webkit-box-shadow: 0px 10px 10px -10px black inset; -moz-box-shadow: 0px 10px 10px -10px black inset; + -webkit-box-shadow: 0px 10px 10px -10px black inset; box-shadow: 0px 10px 10px -10px black inset; z-index: 1010; overflow: hidden; @@ -17,7 +17,6 @@ } #oe_snippets .scroll { white-space: nowrap; - overflow-y: none; } #oe_snippets .nav { display: inline-block; @@ -53,22 +52,19 @@ } #oe_snippets .tab-content > div label { width: 44px; - color: white; + color: #fff; padding-left: 10px; } #oe_snippets .tab-content > div label div { width: 100px; text-align: center; - -webkit-transform: translate(-39px, 44px); -moz-transform: translate(-39px, 44px); - -ms-transform: translate(-39px, 44px); - -o-transform: translate(-39px, 44px); + -webkit-transform: translate(-39px, 44px); transform: translate(-39px, 44px); - -webkit-transform-origin: 50% 50% 50%; - -moz-transform-origin: 50% 50% 50%; - -ms-transform-origin: 50% 50% 50%; - -o-transform-origin: 50% 50% 50%; - transform-origin: 50% 50% 50%; + -moz-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; } .oe_snippet { @@ -79,8 +75,9 @@ margin-top: 0px; position: relative; overflow: hidden; + -moz-user-select: -moz-none; + -ms-user-select: none; -webkit-user-select: none; - -moz-user-select: none; user-select: none; cursor: move; } @@ -92,10 +89,9 @@ position: relative; } .oe_snippet .oe_snippet_thumbnail:hover .oe_snippet_thumbnail_img { - -webkit-transform: scale(0.95, 0.95); -moz-transform: scale(0.95, 0.95); -ms-transform: scale(0.95, 0.95); - -o-transform: scale(0.95, 0.95); + -webkit-transform: scale(0.95, 0.95); transform: scale(0.95, 0.95); } .oe_snippet .oe_snippet_thumbnail .oe_snippet_thumbnail_title { @@ -107,10 +103,9 @@ height: 74px; width: 92px; background-size: cover; - -webkit-transform: scale(1, 1); -moz-transform: scale(1, 1); -ms-transform: scale(1, 1); - -o-transform: scale(1, 1); + -webkit-transform: scale(1, 1); transform: scale(1, 1); } .oe_snippet .oe_snippet_thumbnail span, .oe_snippet .oe_snippet_thumbnail div { @@ -127,10 +122,9 @@ } #oe_snippets .oe_snippet_thumbnail { - background: #747474, -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, rgba(0, 0, 0, 0.25)), color-stop(100%, rgba(0, 0, 0, 0.4))); - background: #747474, -webkit-radial-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.4)); + background: #747474, url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjI1Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdG9wLW9wYWNpdHk9IjAuNCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: #747474, -moz-radial-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.4)); - background: #747474, -o-radial-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.4)); + background: #747474, -webkit-radial-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.4)); background: #747474, radial-gradient(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.4)); } @@ -141,9 +135,9 @@ margin: 0px; margin-top: -4px; margin-bottom: -44px; - -webkit-transition: margin 250ms linear; -moz-transition: margin 250ms linear; -o-transition: margin 250ms linear; + -webkit-transition: margin 250ms linear; transition: margin 250ms linear; width: 100%; position: absolute; @@ -165,11 +159,16 @@ position: relative; margin: 0px -24px !important; } +.oe_drop_zone.oe_insert.oe_vertical_text { + width: 48px; + float: none; + display: inline-block; + position: relative; + margin: 0px -24px !important; +} .oe_drop_zone.oe_insert.oe_overlay { - -webkit-border-radius: 3px; -moz-border-radius: 3px; - -ms-border-radius: 3px; - -o-border-radius: 3px; + -webkit-border-radius: 3px; border-radius: 3px; background: rgba(153, 0, 255, 0.5); } @@ -177,10 +176,8 @@ .oe_drop_zone, .oe_drop_zone_style { border: none; background: rgba(153, 0, 255, 0.3); - -webkit-border-radius: 4px; -moz-border-radius: 4px; - -ms-border-radius: 4px; - -o-border-radius: 4px; + -webkit-border-radius: 4px; border-radius: 4px; } .oe_drop_zone.oe_hover, .oe_drop_zone_style.oe_hover { @@ -206,17 +203,15 @@ position: absolute; background: transparent; z-index: 1001; - -webkit-border-radius: 3px; -moz-border-radius: 3px; - -ms-border-radius: 3px; - -o-border-radius: 3px; + -webkit-border-radius: 3px; border-radius: 3px; - -webkit-transition: opacity 100ms linear; -moz-transition: opacity 100ms linear; -o-transition: opacity 100ms linear; + -webkit-transition: opacity 100ms linear; transition: opacity 100ms linear; - -webkit-box-sizing: border-box; -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; box-sizing: border-box; } .oe_overlay.oe_active { @@ -227,8 +222,8 @@ position: absolute; top: 50%; left: 50%; - -webkit-box-sizing: border-box; -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; box-sizing: border-box; width: 16px; height: 16px; @@ -240,8 +235,8 @@ border-style: dashed; border-width: 1px; border-color: #666666; - -webkit-box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.5), 0px 0px 0px 1px rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.5), 0px 0px 0px 1px rgba(255, 255, 255, 0.5) inset; + -webkit-box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.5), 0px 0px 0px 1px rgba(255, 255, 255, 0.5) inset; box-shadow: 0px 0px 0px 1px rgba(255, 255, 255, 0.5), 0px 0px 0px 1px rgba(255, 255, 255, 0.5) inset; } .oe_overlay .oe_handle.e:before, .oe_overlay .oe_handle.w:before, .oe_overlay .oe_handle.s:before, .oe_overlay .oe_handle.n:before, .oe_overlay .oe_handle.size .oe_handle_button { @@ -252,10 +247,8 @@ display: block; background: white; border: solid 1px rgba(0, 0, 0, 0.2); - -webkit-border-radius: 5px; -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; + -webkit-border-radius: 5px; border-radius: 5px; width: 18px; height: 18px; @@ -265,16 +258,16 @@ line-height: 14px; font-family: FontAwesome; color: rgba(0, 0, 0, 0.5); - -webkit-transition: background 100ms linear; -moz-transition: background 100ms linear; -o-transition: background 100ms linear; + -webkit-transition: background 100ms linear; transition: background 100ms linear; } .oe_overlay .oe_handle.e:hover:before, .oe_overlay .oe_handle.w:hover:before, .oe_overlay .oe_handle.s:hover:before, .oe_overlay .oe_handle.n:hover:before { background: rgba(0, 0, 0, 0.5); - color: white; - -webkit-box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); + color: #fff; -moz-box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); + -webkit-box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); } .oe_overlay .oe_handle.e, .oe_overlay .oe_handle.w { @@ -282,7 +275,7 @@ height: 100%; } .oe_overlay .oe_handle.e:before, .oe_overlay .oe_handle.w:before { - content: "\f0d9-\f0da"; + content: ""; line-height: 16px; } .oe_overlay .oe_handle.e > div, .oe_overlay .oe_handle.w > div { @@ -305,7 +298,7 @@ width: 100%; } .oe_overlay .oe_handle.s:before, .oe_overlay .oe_handle.n:before { - content: "\f07d"; + content: ""; text-align: center; padding: 1px; } @@ -342,9 +335,9 @@ } .oe_overlay .oe_handle.size .oe_handle_button:hover { background: rgba(30, 30, 30, 0.8); - color: white; - -webkit-box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); + color: #fff; -moz-box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); + -webkit-box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); box-shadow: 0 0 5px 3px rgba(255, 255, 255, 0.7); } .oe_overlay .oe_handle.size .size { @@ -404,34 +397,34 @@ display: block; } .oe_overlay.block-w-left .w:before { - content: "\F061" !important; + content: "" !important; } .oe_overlay.block-w-right .w:before { - content: "\F060" !important; + content: "" !important; } -.oe_overlay.block-w-left.block-w-right .w { +.oe_overlay.block-w-left.block-w-right .w:before { display: none !important; } .oe_overlay.block-e-left .e:before { - content: "\F061" !important; + content: "" !important; } .oe_overlay.block-e-right .e:before { - content: "\F060" !important; + content: "" !important; } -.oe_overlay.block-e-left.block-e-right .e { +.oe_overlay.block-e-left.block-e-right .e:before { display: none !important; } .oe_overlay.block-s-top .s:before { - content: "\F063" !important; + content: "" !important; } .oe_overlay.block-s-bottom .s:before { - content: "\f062" !important; + content: "" !important; } .oe_overlay.block-n-top .n:before { - content: "\F063" !important; + content: "" !important; } .oe_overlay.block-n-bottom .n:before { - content: "\f062" !important; + content: "" !important; } .s-resize-important, .s-resize-important * { @@ -473,7 +466,7 @@ display: block; } .dropdown-submenu:hover > a:after { - border-left-color: white; + border-left-color: #ffffff; } .dropdown-submenu > a:after { display: block; @@ -675,51 +668,46 @@ display: none; } .colorpicker .automatic-color { - background: white; - border-left: 7px solid #ff3333; - border-top: 7px solid #00ee00; - border-right: 8px solid #3333ff; - border-bottom: 8px solid #ffee00; + background: #fff; + border-left: 7px solid #f33; + border-top: 7px solid #0e0; + border-right: 8px solid #33f; + border-bottom: 8px solid #fe0; margin: 4px 3px 3px 3px; width: 0; height: 0; } -.cke_panel_container table.colorpicker tr:first-child td { - padding-top: 6px; -} -.cke_panel_container table.colorpicker tr:last-child td { - padding-bottom: 6px; +/* ---- Table Snippet ---- {{{ */ +.table_desc { + margin: 0 0 20px 0; + width: 100%; + word-break: break-all; + border: 1px solid #dddddd; } -/* ---- Table Snippet ---- {{{ */ -.table_desc{ - margin: 0 0 20px 0; - width: 100%; - word-break: break-all; - border: 1px solid #dddddd; +.table_heading { + background-color: #f5f5f5; + border: 1px solid #dddddd; + color: #666666; + font-size: 14px; + padding: 4px; } -.table_heading{ - background-color: #f5f5f5; - border: 1px solid #dddddd; - color: #666666; - font-size: 14px; - padding: 4px; + +table.table_desc tr td { + text-align: left; + padding: 5px; + font-size: 13px; } -table.table_desc tr td{ - text-align: left; - padding: 5px; - font-size: 13px; +table.table_desc tr td:first-child { + width: 25%; + font-weight: bold; + border-bottom: 1px solid #c9c9c9; + border-right: 1px solid #c9c9c9; + border-left: none; } -table.table_desc tr td:first-child{ - width: 25%; - font-weight: bold; - border-bottom: 1px solid #c9c9c9; - border-right: 1px solid #c9c9c9; - border-left: none; -} -table.table_desc tr td:last-child{ - border-bottom: 1px solid #c9c9c9; +table.table_desc tr td:last-child { + border-bottom: 1px solid #c9c9c9; } /* ---- thumbnail ---- {{{ */ @@ -759,12 +747,15 @@ table.table_desc tr td:last-child{ .oe_snippet.o_block_panel .oe_snippet_thumbnail_img { background-image: url("/website/static/src/img/blocks/block_panel.png"); } +.oe_snippet.o_block_image_float .oe_snippet_thumbnail_img { + background-image: url("/website/static/src/img/blocks/block_text_image.png"); +} +.oe_snippet.o_block_image_floating .oe_snippet_thumbnail_img { + background-image: url("/website/static/src/img/blocks/block_text_image.png"); +} .oe_snippet.o_block_separator .oe_snippet_thumbnail_img { background-image: url("/website/static/src/img/blocks/block_separator.png"); } -.oe_snippet.o_block_table .oe_snippet_thumbnail_img { - background-image: url("/website/static/src/img/blocks/block_table.png"); -} .oe_snippet.o_block_button .oe_snippet_thumbnail_img { background-image: url("/website/static/src/img/blocks/block_button.png"); } diff --git a/addons/website/static/src/css/snippets.sass b/addons/website/static/src/css/snippets.sass index 2dd267b1bc3..1e876e697eb 100644 --- a/addons/website/static/src/css/snippets.sass +++ b/addons/website/static/src/css/snippets.sass @@ -20,7 +20,6 @@ height: auto .scroll white-space: nowrap - overflow-y: none .nav display: inline-block border-bottom: none !important @@ -55,7 +54,7 @@ width: 100px text-align: center @include transform( translate(-39px, 44px) , rotate(-90deg) ) - @include transform-origin(50% 50%) + @include transform-origin(50%) .oe_snippet float: left @@ -124,6 +123,12 @@ float: left position: relative margin: 0px -24px !important + &.oe_vertical_text + width: 48px + float: none + display: inline-block + position: relative + margin: 0px -24px !important &.oe_overlay +border-radius(3px) //@include background-image( repeating-linear-gradient(45deg, rgba(255,255,255,.1) ,rgba(255,255,255,.1) 35px, rgba(0,0,0,.1) 35px, rgba(0,0,0,.1) 75px)) @@ -208,7 +213,7 @@ top: 4px height: 100% &:before - content: "\f0d9-\f0da" + content: "\f07e" line-height: 16px > div width: 0 @@ -308,13 +313,13 @@ content: "\F061" !important &.block-w-right .w:before content: "\F060" !important - &.block-w-left.block-w-right .w + &.block-w-left.block-w-right .w:before display: none !important &.block-e-left .e:before content: "\F061" !important &.block-e-right .e:before content: "\F060" !important - &.block-e-left.block-e-right .e + &.block-e-left.block-e-right .e:before display: none !important &.block-s-top .s:before @@ -543,11 +548,6 @@ margin: 4px 3px 3px 3px width: 0 height: 0 -.cke_panel_container table.colorpicker - tr:first-child td - padding-top: 6px - tr:last-child td - padding-bottom: 6px // }}} @@ -609,10 +609,12 @@ table.table_desc tr td background-image: url('/website/static/src/img/blocks/block_quote.png') &.o_block_panel .oe_snippet_thumbnail_img background-image: url('/website/static/src/img/blocks/block_panel.png') + &.o_block_image_float .oe_snippet_thumbnail_img + background-image: url('/website/static/src/img/blocks/block_text_image.png') + &.o_block_image_floating .oe_snippet_thumbnail_img + background-image: url('/website/static/src/img/blocks/block_text_image.png') &.o_block_separator .oe_snippet_thumbnail_img background-image: url('/website/static/src/img/blocks/block_separator.png') - &.o_block_table .oe_snippet_thumbnail_img - background-image: url('/website/static/src/img/blocks/block_table.png') &.o_block_button .oe_snippet_thumbnail_img background-image: url('/website/static/src/img/blocks/block_button.png') diff --git a/addons/website/static/src/css/website.css b/addons/website/static/src/css/website.css index fb41e07263c..48dedb87817 100644 --- a/addons/website/static/src/css/website.css +++ b/addons/website/static/src/css/website.css @@ -1,4 +1,4 @@ -@charset "UTF-8"; +@charset "utf-8"; /* THIS CSS FILE IS FOR WEBSITE THEMING CUSTOMIZATION ONLY * * css for editor buttons, openerp widget included in the website and other @@ -79,6 +79,131 @@ margin-bottom: 0px !important; } +img.img-responsive, .img.img-responsive, span.fa.img-responsive, iframe.img-responsive, div.media_iframe_video.img-responsive { + max-width: 100%; +} +img.img-responsive-50, .img.img-responsive-50, span.fa.img-responsive-50, iframe.img-responsive-50, div.media_iframe_video.img-responsive-50 { + max-width: 50%; +} +img.img-responsive-25, .img.img-responsive-25, span.fa.img-responsive-25, iframe.img-responsive-25, div.media_iframe_video.img-responsive-25 { + max-width: 25%; +} + +img.padding-small, .img.padding-small, span.fa.padding-small, iframe.padding-small { + padding: 4px; +} +img.padding-medium, .img.padding-medium, span.fa.padding-medium, iframe.padding-medium { + padding: 8px; +} +img.padding-large, .img.padding-large, span.fa.padding-large, iframe.padding-large { + padding: 16px; +} +img.padding-xl, .img.padding-xl, span.fa.padding-xl, iframe.padding-xl { + padding: 32px; +} + +div.media_iframe_video.padding-small iframe { + padding: 4px; +} +div.media_iframe_video.padding-medium iframe { + padding: 8px; +} +div.media_iframe_video.padding-large iframe { + padding: 16px; +} +div.media_iframe_video.padding-xl iframe { + padding: 32px; +} + +ul { + list-style-type: disc; +} + +li > ul { + list-style-type: circle; +} + +li > * > li > ul { + list-style-type: square; +} + +li > * > li > * > li > ul { + list-style-type: disc; +} + +li > * > li > * > li > * > li > ul { + list-style-type: circle; +} + +li > * > li > * > li > * > li > * > li > ul { + list-style-type: square; +} + +li > * > li > * > li > * > li > * > li > * > li > ul { + list-style-type: disc; +} + +ol { + list-style-type: decimal; +} + +li > ol { + list-style-type: lower-alpha; +} + +li > * > li > ol { + list-style-type: lower-greek; +} + +li > * > li > * > li > ol { + list-style-type: decimal; +} + +li > * > li > * > li > * > li > ol { + list-style-type: lower-alpha; +} + +li > * > li > * > li > * > li > * > li > ol { + list-style-type: lower-greek; +} + +li > * > li > * > li > * > li > * > li > * > li > ol { + list-style-type: decimal; +} + +li > p { + margin: 0; +} + +.o_ul_toggle_self, .o_ul_toggle_next { + display: none; +} + +.o_ul_folded .o_close { + display: none !important; +} +.o_ul_folded .o_ul_toggle_self, .o_ul_folded .o_ul_toggle_next { + display: inline-block; + line-height: inherit; + float: left; + position: relative; + margin-left: -1em; + z-index: 1; + top: -0.15em; + left: 0.2em; + font-size: 1.4em; + text-decoration: none; +} +.o_ul_folded .o_ul_toggle_self:before, .o_ul_folded .o_ul_toggle_next:before { + content: ""; +} +.o_ul_folded .o_ul_toggle_self .o_open, .o_ul_folded .o_ul_toggle_next .o_open { + left: 0em; +} +.o_ul_folded .o_ul_toggle_self .o_open:before, .o_ul_folded .o_ul_toggle_next .o_open:before { + content: ""; +} + /* Extra Styles */ img.shadow { -moz-border-radius: 3px; @@ -101,10 +226,20 @@ header a.navbar-brand img { max-height: 50px; } +hr { + margin-bottom: 10px; + padding-bottom: 10px; +} + #wrapwrap p:empty:after { content: "⁠"; } +/* ----- Editor (for public user, like forum) ----- */ +.note-toolbar { + margin-left: 0 !important; +} + /* ----- Snippets Styles ----- */ .para_large { font-size: 120%; @@ -118,23 +253,6 @@ header a.navbar-brand img { } /* ----- EDITOR ----- */ -#oe_main_menu_navbar { - min-height: 34px; - z-index: 1001; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; - margin-bottom: 0px; -} -#oe_main_menu_navbar li a, #oe_main_menu_navbar li button { - padding: 4px 8px 4px 8px; - margin-top: 2px; - font-size: 13px; -} -#oe_main_menu_navbar .navbar-nav.navbar-right:last-child { - margin-right: 0 !important; -} - .css_non_editable_mode_hidden { display: none !important; } @@ -166,22 +284,29 @@ html, body, #wrapwrap { #wrapwrap { display: table; + table-layout: fixed; width: 100%; } - -header, main, footer { +#wrapwrap > * { display: table-row; } - -footer { +#wrapwrap > main { + height: 100%; +} +#wrapwrap > footer { height: 100%; background: #eff8f8; background: rgba(200, 200, 200, 0.1); } -#footer_container, #footer { - padding-top: 24px; - padding-bottom: 12px; +body > nav.navbar { + width: 100%; + position: absolute; + z-index: 10000; +} + +nav.navbar + #wrapwrap { + padding-top: 34px; } /* ----- BOOTSTRAP FIX ----- */ @@ -415,33 +540,57 @@ ul.nav-stacked > li > a { } /* gallery */ -.o_gallery.o_grid.o_spc-none div.row, .o_gallery.o_masonry.o_spc-none div.row { - margin: 0; -} -.o_gallery.o_grid.o_spc-none div.row > *, .o_gallery.o_masonry.o_spc-none div.row > * { - padding: 0; -} -.o_gallery.o_grid.o_spc-small div.row, .o_gallery.o_masonry.o_spc-small div.row { - margin: 5px 0; -} -.o_gallery.o_grid.o_spc-small div.row > *, .o_gallery.o_masonry.o_spc-small div.row > * { - padding: 0 5px; -} -.o_gallery.o_grid.o_spc-medium div.row, .o_gallery.o_masonry.o_spc-medium div.row { - margin: 10px 0; -} -.o_gallery.o_grid.o_spc-medium div.row > *, .o_gallery.o_masonry.o_spc-medium div.row > * { - padding: 0 10px; -} -.o_gallery.o_grid.o_spc-big div.row, .o_gallery.o_masonry.o_spc-big div.row { - margin: 15px 0; -} -.o_gallery.o_grid.o_spc-big div.row > *, .o_gallery.o_masonry.o_spc-big div.row > * { - padding: 0 15px; -} .o_gallery.o_grid .img, .o_gallery.o_masonry .img { width: 100%; } +.o_gallery.o_grid.o_spc-none div.row { + margin: 0; +} +.o_gallery.o_grid.o_spc-none div.row > * { + padding: 0; +} +.o_gallery.o_grid.o_spc-small div.row { + margin: 5px 0; +} +.o_gallery.o_grid.o_spc-small div.row > * { + padding: 0 5px; +} +.o_gallery.o_grid.o_spc-medium div.row { + margin: 10px 0; +} +.o_gallery.o_grid.o_spc-medium div.row > * { + padding: 0 10px; +} +.o_gallery.o_grid.o_spc-big div.row { + margin: 15px 0; +} +.o_gallery.o_grid.o_spc-big div.row > * { + padding: 0 15px; +} +.o_gallery.o_masonry.o_spc-none div.col { + padding: 0; +} +.o_gallery.o_masonry.o_spc-none div.col > img { + margin: 0 !important; +} +.o_gallery.o_masonry.o_spc-small div.col { + padding: 0 5px; +} +.o_gallery.o_masonry.o_spc-small div.col > img { + margin: 5px 0 !important; +} +.o_gallery.o_masonry.o_spc-medium div.col { + padding: 0 10px; +} +.o_gallery.o_masonry.o_spc-medium div.col > img { + margin: 10px 0 !important; +} +.o_gallery.o_masonry.o_spc-big div.col { + padding: 0 15px; +} +.o_gallery.o_masonry.o_spc-big div.col > img { + margin: 15px 0 !important; +} .o_gallery.o_grid.size-auto .row { height: auto; } @@ -483,6 +632,9 @@ ul.nav-stacked > li > a { .o_gallery.o_slideshow .carousel, .modal-body.o_slideshow .carousel { height: 100%; } +.o_gallery.o_slideshow .carousel .item, .modal-body.o_slideshow .carousel .item { + padding-bottom: 64px; +} .o_gallery.o_slideshow .carousel img, .modal-body.o_slideshow .carousel img { max-height: 100%; max-width: 100%; @@ -501,21 +653,25 @@ ul.nav-stacked > li > a { position: absolute; bottom: 0; } -.o_gallery.o_slideshow .carousel ul.carousel-indicators li, .modal-body.o_slideshow .carousel ul.carousel-indicators li { +.o_gallery.o_slideshow .carousel ul.carousel-indicators > *, .modal-body.o_slideshow .carousel ul.carousel-indicators > * { list-style-image: none; display: inline-block; - width: 35px; - height: 35px; + width: 40px; + height: 40px; margin: 0 0px 5px 5px; padding: 0; border: 1px solid #aaa; text-indent: initial; background-size: cover; - opacity: 0.5; - background-color: #000; + background-color: #fff; + border-radius: 0; } -.o_gallery.o_slideshow .carousel ul.carousel-indicators li.active, .modal-body.o_slideshow .carousel ul.carousel-indicators li.active { - opacity: 1; +.o_gallery.o_slideshow .carousel ul.carousel-indicators > *:not(.active), .modal-body.o_slideshow .carousel ul.carousel-indicators > *:not(.active) { + opacity: 0.8; + -webkit-filter: grayscale(100%); + filter: grayscale(100%); + filter: gray; + filter: url("data:image/svg+xml;utf8,#greyscale"); } .o_gallery.o_slideshow .carousel .carousel-control.left, .o_gallery.o_slideshow .carousel .carousel-control.right, .modal-body.o_slideshow .carousel .carousel-control.left, .modal-body.o_slideshow .carousel .carousel-control.right { background-image: none; @@ -537,7 +693,6 @@ div.carousel div.carousel-content { background-color: black; color: white; background: rgba(0, 0, 0, 0.3); - margin-top: 75px; } .parallax { @@ -679,19 +834,25 @@ span[data-oe-type="monetary"] { } div.media_iframe_video { - height: 0; margin: 0 auto; text-align: center; position: relative; overflow: hidden; - padding-bottom: 66.5%; } div.media_iframe_video iframe { width: 100%; height: 100%; + top: 0; position: absolute; + margin: 0 auto; margin-left: -50%; } +div.media_iframe_video .media_iframe_video_size { + padding-bottom: 66.5%; + position: relative; + width: 100%; + height: 0; +} div.media_iframe_video .css_editable_mode_display { position: absolute; width: 100%; @@ -770,3 +931,21 @@ div.carousel .item.text_only .container > .carousel-caption > div { div.carousel .item.text_only .container > .carousel-image { display: none !important; } + +/* ---- Menu nav bar ---- {{{ */ +#oe_main_menu_navbar { + min-height: 34px; + z-index: 1001; + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; + margin-bottom: 0px; +} +#oe_main_menu_navbar li a, #oe_main_menu_navbar li button { + padding: 4px 8px 4px 8px; + margin-top: 2px; + font-size: 13px; +} +#oe_main_menu_navbar .navbar-nav.navbar-right:last-child { + margin-right: 0 !important; +} diff --git a/addons/website/static/src/css/website.sass b/addons/website/static/src/css/website.sass index 5ab63f831ff..5d46906e094 100644 --- a/addons/website/static/src/css/website.sass +++ b/addons/website/static/src/css/website.sass @@ -51,6 +51,88 @@ .mb0 margin-bottom: 0px !important +img, .img, span.fa, iframe, div.media_iframe_video + &.img-responsive + max-width: 100% + &.img-responsive-50 + max-width: 50% + &.img-responsive-25 + max-width: 25% +img, .img, span.fa, iframe + &.padding-small + padding: 4px + &.padding-medium + padding: 8px + &.padding-large + padding: 16px + &.padding-xl + padding: 32px +div.media_iframe_video + &.padding-small iframe + padding: 4px + &.padding-medium iframe + padding: 8px + &.padding-large iframe + padding: 16px + &.padding-xl iframe + padding: 32px + +ul + list-style-type: disc +li > ul + list-style-type: circle +li > * > li > ul + list-style-type: square +li > * > li > * > li > ul + list-style-type: disc +li > * > li > * > li > * > li > ul + list-style-type: circle +li > * > li > * > li > * > li > * > li > ul + list-style-type: square +li > * > li > * > li > * > li > * > li > * > li > ul + list-style-type: disc + +ol + list-style-type: decimal +li > ol + list-style-type: lower-alpha +li > * > li > ol + list-style-type: lower-greek +li > * > li > * > li > ol + list-style-type: decimal +li > * > li > * > li > * > li > ol + list-style-type: lower-alpha +li > * > li > * > li > * > li > * > li > ol + list-style-type: lower-greek +li > * > li > * > li > * > li > * > li > * > li > ol + list-style-type: decimal + +li > p + margin: 0 + +.o_ul_toggle_self, .o_ul_toggle_next + display: none +.o_ul_folded + .o_close + display: none !important + .o_ul_toggle_self, .o_ul_toggle_next + display: inline-block + line-height: inherit + float: left + position: relative + margin-left: -1em + z-index: 1 + top: -0.15em + left: 0.2em + font-size: 1.4em + text-decoration: none + &:before + content: "\f0da" + .o_open + left: 0em + &:before + content: "\f0d7" + /* Extra Styles */ img.shadow @@ -68,12 +150,21 @@ header img max-height: 50px +hr + margin-bottom: 10px + padding-bottom: 10px + // add {WORD JOINER} (equivalent to deprecated ZERO WIDTH NO-BREAK SPACE) at // the beginning of paragraphs so they don't "disappear" after saving when // used solely for spacing. #wrapwrap p:empty:after content: '\2060' +/* ----- Editor (for public user, like forum) ----- */ + +.note-toolbar + margin-left: 0 !important + /* ----- Snippets Styles ----- */ .para_large @@ -86,17 +177,6 @@ header margin-right: auto /* ----- EDITOR ----- */ -#oe_main_menu_navbar - min-height: 34px - z-index: 1001 - +border-radius(0px) - margin-bottom: 0px - li a, li button - padding: 4px 8px 4px 8px - margin-top: 2px - font-size: 13px - .navbar-nav.navbar-right:last-child - margin-right: 0 !important .css_non_editable_mode_hidden display: none !important @@ -127,19 +207,21 @@ html,body, #wrapwrap #wrapwrap display: table + table-layout: fixed width: 100% - -header, main, footer - display: table-row - -footer - height: 100% - background: rgb(239, 248, 248) - background: rgba(200, 200, 200, 0.1) - -#footer_container, #footer - padding-top: 24px - padding-bottom: 12px + > * + display: table-row + > main + height: 100% + > footer + height: 100% + background: rgba(200, 200, 200, 0.1) +body > nav.navbar + width: 100% + position: absolute + z-index: 10000 +nav.navbar + #wrapwrap + padding-top: 34px /* ----- BOOTSTRAP FIX ----- */ @@ -335,28 +417,50 @@ ul.nav-stacked > li > a .o_gallery &.o_grid, &.o_masonry + .img + width: 100% + &.o_grid &.o_spc-none div.row margin: 0 - div.row > * - padding: 0 + > * + padding: 0 &.o_spc-small div.row margin: 5px 0 - div.row > * - padding: 0 5px + > * + padding: 0 5px &.o_spc-medium div.row margin: 10px 0 - div.row > * - padding: 0 10px + > * + padding: 0 10px &.o_spc-big div.row margin: 15px 0 - div.row > * + > * + padding: 0 15px + &.o_masonry + &.o_spc-none + div.col + padding: 0 + > img + margin: 0 !important + &.o_spc-small + div.col + padding: 0 5px + > img + margin: 5px 0 !important + &.o_spc-medium + div.col + padding: 0 10px + > img + margin: 10px 0 !important + &.o_spc-big + div.col padding: 0 15px - .img - width: 100% + > img + margin: 15px 0 !important &.o_grid &.size-auto .row height: auto @@ -393,6 +497,8 @@ ul.nav-stacked > li > a .o_gallery.o_slideshow .carousel, .modal-body.o_slideshow .carousel height: 100% + .item + padding-bottom: 64px img max-height: 100% max-width: 100% @@ -409,20 +515,24 @@ ul.nav-stacked > li > a border-width: 0 position: absolute bottom: 0 - li + > * list-style-image: none display: inline-block - width: 35px - height: 35px + width: 40px + height: 40px margin: 0 0px 5px 5px padding: 0 border: 1px solid #aaa text-indent: initial background-size: cover - opacity: 0.5 - background-color: #000 - li.active - opacity: 1 + background-color: #fff + border-radius: 0 + > *:not(.active) + opacity: 0.8 + -webkit-filter: grayscale(100%) + filter: grayscale(100%) + filter: gray + filter: url("data:image/svg+xml;utf8,#greyscale") .carousel-control.left, .carousel-control.right background-image: none background-color: transparent @@ -442,7 +552,6 @@ div.carousel background-color: black color: white background: rgba(0, 0, 0, 0.3) - margin-top: 75px .parallax background-size: cover @@ -559,17 +668,22 @@ span[data-oe-type="monetary"] text-align: center div.media_iframe_video - height: 0 margin: 0 auto text-align: center position: relative overflow: hidden - padding-bottom: 66.5% iframe width: 100% height: 100% + top: 0 position: absolute + margin: 0 auto margin-left: -50% + .media_iframe_video_size + padding-bottom: 66.5% + position: relative + width: 100% + height: 0 .css_editable_mode_display position: absolute width: 100% @@ -645,3 +759,17 @@ div.carousel width: 100% > .carousel-image display: none !important + +/* ---- Menu nav bar ---- {{{ */ + +#oe_main_menu_navbar + min-height: 34px + z-index: 1001 + +border-radius(0px) + margin-bottom: 0px + li a, li button + padding: 4px 8px 4px 8px + margin-top: 2px + font-size: 13px + .navbar-nav.navbar-right:last-child + margin-right: 0 !important diff --git a/addons/website/static/src/img/desert.jpg b/addons/website/static/src/img/desert.jpg index bb70944499f316a2ef2afda20df35661e1d98ea8..0cf07246670210a3b4efde16d1f2fb57a8cf48ca 100644 GIT binary patch literal 211554 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 z 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

    ga8U%n9XpI{XRbPL-h=q{9ABTUjd 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⁡GHpO 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 R~k`5!a{`rm)bkr3xl}BwbZMTq4=cb_>wHE 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

    Pj__?iPuXNX()N=a1K-cT_gy>e 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�+k2119DKE`urW*P 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%0DSsyjnTqL zwat9MJ1c2X_CZg>nH2ejMHH3NqRA>F6BwRA31Ud`9sKsV+nyY-93aqax!JypYVhV& zm`B1nYGpIUM?jQuIT!KEBc=Rp=1FS-bI$!Sl(>f-%cMLl0hv|2!?&F8vWXh5s)lK+ z-Gz-knlw>h%O=(#t;*Z^?}Tx&O18+*L--|YjxF}!3%Yx%KAM zLw1E%d|IaHe}1>^HN{&+DmDt1Hbj=;~*RW{yy?HEd)Tv_XIjA433Ckzhe! zz=6)x=q8vrGEhAzl0D||x_T{MnhmA!mmAJSA8;Xc&tzWF-p>7&aP*b=S7#NuMO0|* zG<1|yZBsI!7T>%qz>?O|K{{`3z&?6kW_v{Bnudu$ zb1VZyf4`dRN$tjv>D*vDUIr{5&mWrM&e=Og&v>*qA1@2=8&c-=Ki~5~n@crDV>^v( zp6>My@Wma89nc7h#OdDH`iE!e;nJV6vvviG7ykhEpbGh3zgI4z^-@tDgmeD@=E+rl z9ql&0n9CkpM9rB;8%9MeF_(Z^&e4Dp=)z4$kt3e?+bag$t0Z!`I1*Frm$e-Gvc4tB z^R5ZvS@K>X$;Z4)L{v~TGO@Bekf8!Z@f2h$c@gzq;~f1)m6HDeZgz(^r&YQgM2&9f zPS+1rs5@i(K>eWj+Pgl=__MUmCzmbGp_(e(vZ8HyO?)h*G)oX(=*C9CDA_nfGuryw^2CTET@hN=K4<2YN(oBbnz`We$NUjXb#o=7IPd-fkx+#oFW{ow8 z6_heJO^x;^9PLX$!$wxmk%LbS|)^syjYL4P?7@ zJq9Rih{DmpOpj;ik``FhGw$V5+KsFU^V-7arr2Wiq`4|y1rhUK7fePSt_IqDHgbl1YZHZ~Q2tlCHZE;pgS$g)Y8R2T`Q8$w|2a*8^e( z4X6)9mC8^8)^!J9w<6!5#I*(%e`J`+QW$dm-L~oT7zT$aXr(4nZU9h7K6f8W;jIzE z&+L%k_;l&;+-!f21?G_jWM!r|vne4)*V#|yh#UqK0)R;wQ3k|aPW-HI^T6Dc-KBoZ zAd;W}roaQX8qn&La`jfQ+>vp;&HlI;<05TdW208vZEy}3su)NxtEm=UJ0CmYf%Q$dqDhZP zAzM=4djYlrUA{}fJH{3_JcWh7jtQjzC^}d!$8MUpzW!KHLQ)OoB(N&MZg0}o{Ey2G z!Jvz2ASrYsV`H-0`C?f>1UIyH7h(Y3<-37?~!5Bnz}RVr3t>(Cj?Cuv|#NK!J9I@?DPVZLucAei(p?poY*oAxS2cCrKAK z*={X>h)9w~QUGEB{61JE*OHTNXduYthyXSB2h4w8OfVrz93V?6TlBvBo_?V9z$Z2o zszZ6tt^E3r*K84Il*9liCh{`#Dh{K6Fnop~1t?%>Kxs8IG1-VDZ+rakZ*CH^9H4iK z0}`vhI}Z)NuPiuyoTP6#2oJnx#7Wg)N08@;3WcVVX%TeaQr%DFceWnM6oqAUPqB2L z{;xBghyHkOLjM5tT5Nhg&93JjYr*?U(e}T9{Z}}4ky?w|R}u*T+c>YZahsAo?rvwM zI6B%BxO%T;*s&#My zjseR@`$<17u+)&}gnD_(0sjD_jGlM96Y>~Q&7j;OmssMyvm9rvoY?JePve8Q@Sz}Z z5#XxQbfj~>u0_U>Po@`yUCpNnB$BBtV@Savf*xNoI^r8RDpyogs8t}wnvU0No3~ro zbNq1El)}i$TFSD58uAO?(SxV-zs%uWLYqu@)Y;8{z_uVv^RYM4koj z1+Cy3iQB0sYyx(rbv$w(V` zS%#sBEEO4m7i9*+{{V>p04xyPS_B@5&m%BWY|Kr@l@bMPWv5GyVCrwn3*HJ&81E}w znf9Z7qz&wUl~eGq4g`~mxPp(o6>BQS*<#5jbsdGgGC9=B&3!7mg0Z!|Z?ipz9>93r-Ylr!uQGRFuqRMvgRDBwz}vTEGuGk(@M|U`EGbZb$RRH){MmE#pK1rxjY_t~i>ut{lRqI8k9_ z1~~4aikt1_`0OxZCP!@vb&|3OyVr5`D`fU(?dzEE&lXizSG3hal54b#gW(Fm zf{X`;SBm49$4Yh?8<9kLEQH1>_j^S(1Vr50;Aom5DXIur;3?4|iN zw**^zj%N7hxso-uLh0#sT4`Ugjte&TDs94*UI@aJVavmsv6XA!WkjC2( zMaDCk26mBaM|S3xm$dEvermzNp2U1z+D`=WCm3+F`DI54WZIH~^CJxU~1s{)++ZSR>EDqE`TSp_P{{U*S!Re84b#fVM zDroze1aa0!SkcK)qzx$KTW^REq>l}oZSmHXpm4dc1`c{8cGFjvc2Sm7=5%mTRb^7j zXzI;6$5T}rGLvT|h*fiSVr|R-4&+eb;o7cq*vIcYEoH}iP&-25_@;}$nrW27X^#I z#@RP#wcH(;(Bw5aT~%~>gf$gZXWuAhQKh@8gtUmRo)$*c9l&iNhO7f0i+D#xsn|QW z`Kx6Hdqu`jv@~@vm45)HtCeFXNbvx~okRn%w&Uf6?v2=8ajj&HBgrtxxF)SL0VN!C zla&SIj-p=zf&0YlHWue$=Yie2%FzqK7Tyy0rL)ZEEHyPW)OD2<@S-!*!WwAfPzIvQ zVBCf8e?y9ci%PRl*SK#Y$C7K3W%PN@K=K)7`?U!BgvNZZe3x&syG7bL3x@}l_OG#i z(CE8v?2m^yx{8`wdR`%*jPDgw zAnFufZe6_am$R=9(`I~In6(8hbnOK=ik;?pT~N6JRBQr`*z5^go$&fC9J;snaD+9Q zsPygKDZy4JFpnb<0MiGjTq!~lMpy$2D)YA8aG~ug1B8~!QIu?KZE`tahad@A8E{>+^XG7I9Pc#5dMpgN z8rHhl@3s!$hD!5f+DQZrN8}IV^1%-jjij{_gJQE^W47bh3%ZfARt*{ly{-+wzStYV z!j2}=4qc)31Ri>qs6Q+g`2v9DE8S7KE9&&+^~BwpMad6Ninmq@4>DHP`r>XCWlKtG zFt$2w2_Fk|zz;m21?41DM_|Xp_0ngwiuDoE>d17*Z@ir4#ThKiuV!9ZJ~GtQEP=3+#QGGxWRLj09q14hkFYX zat9!Om;vVUpsQI5tO)^GNf**@Zuvu(Y{#V2f!hi}xm}q6ztgL*+)Z!NlLug2z zJuEeXmL3vLr9Y1N0m-(CLYKhyWfnUE1;PA(TuZZQ19QSm!@EEnDF^q5B0j&a4)7Be z6cS8-5d;xn!+U>UJRW#JH#AV)iUE5%{_mb4I8$m&tX4(;0BFDtj4lV|%K#F9tEC;5 zW);#>yVlYzEQroD#Zm7n$_dgz3ZxP&N|A7Ox#x#zXuv8K5y~N`w=1r-zJ}WO>28P2 zbihz?m5mRu?%hiA3^gtV(Ll6bP$iPa#alqy#^I9KU~L_?a)mU4JA5QJUPO9&;euB; zC=(SxM#pP{qx$@@6x)oHCk0%Rbt(Pe*RcGLMY)!fK`eGhbpmLkMpLRTui8a% zr|n0HkwK>|p5_`+2{Sk~a`|on=e53g;cLI|ee-MD_E@bPe&C~Mb3}%vgex3wH;_gI z(rNQzJSuse%N%FnbVwyhQfBcx>x2nSj=4z|C(Bvd{{SoX+XHqJ2BNlSD{9ux&9^Ir zU;Z9{U5BnCh&fPLe19(^$!+9|ohJuYfwm5+F&AQxDMlu_!(pZVbcCh0$_aZO(ol^=9F!cEBpmA9EY z5^rB1Phf@r*F*v z01uV{Hf=B!%J34Jpmei|ZLJ1myvLC76@WWED060W5 zYZj30ebq=H`P`fDQi*QSVXMBxwCjz z<_GJ6Wi<*}l64Xwl2BY5SPS3C?R#{=subd;ODAb{Xrp1kcKc)avH)VMgvK7}TunmRffajvF$3d0mJ zjoI1QfT{(_Cu}HbCu>GZCB=;|JOI8LduDd~OUB)>@mCyIy(bpu8J%0hNi8r991x>4 zRM5jJrG707b*pQa`ZXGO)(9au7-9B zG#iefTcv>mp!34br(<#nwVpk6f!)~_q%z8y+_Q;SFGJlebxq?g!D74Y9Fxl8*T2^o zWs*ilOAiaFqjMcFiS5IWqL9z{GPf$Ks1*?iCd=e2Q>tTm4Zr{|&&wR)+CAo99Z+wcW9E{OI=fu78@O}ZMk7bh|$0aof%;BP&rQwe`xB2mC?v4;{}!- zdQG|94rlq|$#q5+)Mq|wjW1-gTK@M`4$;8qm}lHElu=5{O)X0?UBfMwGrj#!rZj1_ zdWR1f75T1Sx3POZHxU^>p#4;gxwc1=&jVA^$u&Q4ioqL1tolG^1%c~-OlJ{lBm_Ls zzk=wuSK0bjhd|pD206OVKB(EB6w}4-wA9pxFR4{$NzFq%gf`<*01aHZZTa9urg$bt zI>(hGH)=N92yW8u3H@uT*!_rhg_u!szExROn1=}d>O{;CRT4Zm>8KI0C-~q;D}=j1 zvH2}cYkQDOsQznz@$YE#;)^!CZ)}) z#8J-AuGKPJ%t_fo^3-pzW4Y(P*t!}d*i^|0b3=i%d0RKyTRWzcvg)OvrLKt6ph%`< z5hOZD20sb8LIsHBe=JcWb7fxUQ!3XnN5^@00toY3l!G#=tR%$&QtDH!>_xeOx!nA* zaCQR1_Lkax!~L*loJTc#Nh1ElsZrlil>3;}4+`q|!dm*QKs`BP&CaVG6&&8|-pKQZw-ebxoVp)Lh3j`K2nNCS!Lpk40$hABwm?wrrCy%QH?fNEi#6iU=M_X|H=C+fbANa$`5^$np%F2>~3c z<%4`>r}^?++m?16*`Ht>U)*P1rDu;xQBDkMygboBfZPX=KX@62#A#ivx#^A3>IrR{ z0db$94ShMtou>Od@b@3^b#-qEcB8`C%t!)JW%-GQkKUT$RTzdIGht#zn}Kk5ngDKA-Q;DG_XKn12*fjot7~j`^BnPGY>cfeX?8*V)CG5D zIl<4GktnB0&F-$H2q5^rD|Nz3;TW>3eu`JgwShWb8mZwRWRQp|q9NnDtcqN8AdY@m z4I$#f(jqZnV5DVzqDLJExn>d7v@$s}G!h0ZI$2v`&}?~h!gpn_u#|R_LrWwd5Q#Tw zbu`gaCSO}oPaQc0B4*VXw=0fEt-%)M&kW`<*M)PtM23dM4{77BMtH zn}>`Wzd|kIx59SB??G+S=tKZ*%ag^erP|LQ_J5o3C^XaM*}ZJ^?FLyrJQ51bzJ6f1 zVgOO$8X0auCd>w*Yj1CbQz&Cbev6l3_L1TY=9O}(t7=-6WJX@{rHQ0;kTSF<_XrnT z3o8S-*kH7a7P*2@>^IGJciE5jhVjQ`{A-?19}o)cnbInp$1coN$pu3peUde|bu^68 z#ok6avbzThr0{!Vv!m4taLC~GUaPTtN=Qwy`0^{VeXD(~X?>|UODD@J_;q-4JhLzr z&{Ro3z0{cmESeCig;XmeYPq@6w;N)f$M$gO+-2QlkB8;T*V`Su-B=Np)eyPnqFx{2 z3X>L7G*rV`W?9}yiUKdpcv*UGM?-viPUsvxdFc&1bY*pyV4rD>l(|Y}oKFoW5XDHT z3{|vMQKe&9ehGse4C2FmO2*>%JLAUopRwXc8MNnZ^gMkRt?b`xc2rX~{Z~)+VcX9L z_Q6dPWcjT)t(aZ1`kO&p853|$~N&r|_XxmN7s+-=|AA!MXRtAf(u=X%BM5TZ;p339 zoycxi`SipMHE0oK2v4PSAR15ZxAG(BiF9cI07$8qyHcgJ>K_b(#2fS@Y%^S;s-Tgy z&@d{ok;_;=#}GKxq}!Ap^vc9K20Qqa-2Hs^!WU&Qyo5Gus8+MaeR+JbU`J@%Xj4Y0 zp@sB~{eKaOeQiPkqEKZH${9;Gorom){{URZ8+H-6%$-h+Z1fI`JirPa2QZmd3I^u#8)OhDx~osByd1O;nZS*#o6!)yZX zi2y;ES*#qb{u}JX{P`c292GX&1fkRwQL5Wm4ejc`%z5B~fZQzz$V%!!PLbE2_0#dg z2Ot}Kp*v|R%4`?n2V?8}u`emMrtcz^(zYRm_8a>1*x-YkB>*oWHj#(;fw3SF*51F+ zz_GwU*ceRbRwKj+CAT-&e=IR18dbOwGP*<9q>Cc+^ z@3g}8V*daL{Z}G(lQ^pFYl`8}Ru|6m9Z{mP7b3226M##)o|h^-t_a5~Uc>f>`P%lq zkWbkoAN@jzYNCY_GzYreAw|-H+{%v%?Z~+&(;0}Yu943v+%+=1h1sN$MUJ#>2)E$Qxg5AOz(aPL)M%H+bV+Fl{L$%wmq? z$p-EJ0L8u~r>tQ-qk<`s4A*-Q1Il}~2IpmrZhCt9;Q3lW+|{Sh5|RyUq+ek#g;xCZ z#5eh0et3qHWE>|J@6{q;Cm?PK(Qlfs#6EWU;Yj}g5TGKH+B9~ysR`b|Fwzu{-2iR) zl5oyy4RPf=hT(%~3@u}*g$L68dVV+rbSiGLNlqYNy&*=0b+wRb)xVd-a56Yjkt0(I zn6?%d3Vavyup6Jp3(r(fgzZM7lraL#M%M7@2kFo1a7e;CuL#aq*f|A9BxB3}0E8X> zWSl7VLdfA30JK0$zak}%NmHiWkAz#-*XxF+ju5P(3YCc%CA8YsjB*~W$PbXhljxia z7D_Byi13c=ANX}Q;&4VXfzAS3PGC22U_r5V0j<9vE=l=eLA2yh;Sfl=E`Y|5;RGE4 zkI$L@w!>LfmftCGFh{&`#+Om5LN>Sh`TiI~&Nxod;-Z%v#zxSsB*5I-`cwhx2jm6@ z?<8mgNnm@uw@8&X0T;wimHz-t1O`zWV=EZ}WxauUH)HthKMX=G8g1bknf>9^gleKb z68B)fcIbaBMK3Ab5)k)kQ(E5s9YAlf0BwoYSy;-~e%ah>N5Wpp+;1g*YZgrTo>5bm zQBP3^eqN?%onwh&0ETC?3m!vJ+SuuKEKirTA`KTt{sD2lpnD_GNx1SW;=UYb`Mp|B-jeh>!z2Kf6En8$D_e2tU2uXJE?s$5~i@#XMDiBV1a zP6?J+sQ_An10UW55Z5GbekU&@TeJ~}kmoo! z-%r(T4i)VZue7|} zW~W@jX(}B|nvgMLVb7nJ{{Yj9wO$qnmQV{%X3Ea-&)Fu70%zFp4bDTK)< zsK{rmHb_K)5v1F{VYyX4gLBiDTu@vZ;1@x#x$JYlhP;)>hP|k3=`wYo&N8}e>XHaV zaQDvf&#+ubTOPwQp7sGrM(Du2bxxVFB;J(&n$hg^aI^As>w~Qi&&@Zr6K3xUJ z&kX%IBHPN#r|p8*p8JBj8`+18rtNdK8R;OWrJskg%${nh#gR-pIVw9do_dHT#@4@~ z!ZbOe%IxXqZ1WbgfIPlSaCW7i%arBSv@>S;byizbOljecM(>S6NSm(KJL)P4CfhdW z3UV!KJFKz5d{+x z2CxJE%t}zm0XMd-KzSQud!l<=;Bv$Z9O{r^PU<``#EXrsjzrK%!;@>fr0qCf;>xNC5b>=IM|$v0OuJf0Y9UrE+X8$*mDml2 z*vjx)au)a`j!(Mar@J=xke{=jBQj-lz0=ywEK_N@^9%6XuA5tan4RDP#uGOVEo$3O z?UDZgD)bOGec852#3CmMBsFaskUkUAsR|I1k)^cncDoYTx*<=_RMnW<8yL}(%BgV&X}P~^ z^*Mn#JvK{OLl&wkU_ZLa5t7dyjap-C0j5E*A+KOTUX*e<&Cd&sFszPN((KPL;(pva zI4@U~aOV)^sT!JUOwNs(U=V0%)R)NSYt*|4{Y$L%9G`8s_bZ-UR6)|0&K36)mB+_?! zi6B0;HsnXk85#)`S7K@QI5~#GvGB)h{^wk3D`{T6nH2=VtkKx*Aznq7_fFkMBZiN_ za*Opl#^wuEt~k%*qvOizjHkGYj+FK(E z$KyPMgEL+*%($kymX=ET7$KusSSm6H*B}Z8{{RGhwxZ~^H?5{x&LXCT<%(Gl zSV>EHH7wBy4}t6$22vCoTmUhPv>m!K)|{2ALfw*Y951Ook$YHnf7_c4Uf?4f0+}UhRnhja-H8h+RP`V6|86 zFSpJI>{%20UB&!2!-iPQ(Z`r(F+ntl2?f$Jb+EqIRU-Ry#;q=gQ>Z`MVLt_uZqU=f zYFB`KuRkSCrS|yjQnICCr|mC>q%SCmNtRCOobnpVX|dkM_BJ*<9B+5CouV>hSljIn zXOp*o(N%k6`$KX*8OmZ_2B92ZSuryz^`&$Z`y@flh#8~FAQY$SxNx1r3GxQQ7d)s*@lHT zw$3>MSd3+p*qC-<=KSmZ{Z@v1X(r*iG4uZbO3TDwYJUjurBfvQImF%BK>q+0J@o8J z3arM!8~IosR=zom_A-6BkbJ+|>c86ve+Sq7B4s~m?+r;?9GR~S=d@W>R;Gh6qMjVZ z8as_7#+qEQQ>cUv2SV5q`x!e&_TC)o>MQC>Nd2yeo0)_+p}YE0+|z?iU|jDwj>)Jjy&GCvb9=M{pKHkBj&v>kF_+~p;0_vmtT^$ z)Y3?(8ZoR9$%d=r0kCpb>L-NSEeuFyXqcPnv9=g^kS!yGIjK!KB@KnI&fRe~*HpGj z9CDZ}PCbp!j5c^o?8C?SvyJf-MT7@e90fpzo=9pG%H-un#o6 zB(!n}z>T}bZfoVX0d8=Zpv5Ri%MDRD+TRJkpUdZgWML2~4rL)4>SR-5z>Oq&`rwS^ zD}g~-%EVMRdZYIpbg&**>-5COR2td|4;{&PomIIMV`KRL03(9oTq#~?Gcr4!cZtE< zdxL^n5g16CZt6kaCZIVw@6(|jFaRi$kvQ&@HJB?7cH8m8ZN?Ien<>1mBpQ*KU41%w z5r~+(DFC%l1&EA|#qI(6j6juulY};%;*eZ}w@vOpjsvoRG*BjU8;dy7+Wh})EqE%AO!^8TSoc{s`(=l zLYwqGFvOHAq7=ln!Pc@UO{{USf*CTm=NwEA$^umH#j_bfuG*kv63HXR& zWWS7q(@`5=&;f-+xbTk!BhyT*7fExwSnFZ`0C?Q~2LzBsse{Usp{ENAs|8D&9Vd1^ zN0soWi%dx1B1H;Dpa%gXCilIM(0-VOxxql1!ak_!-HDP?$M-`8+;YE|^uQ>Jv~ePx zCfX$yC63qM%+-XC-$RSqTx$`)ij|q+v(q>RgFhi%3keB-NJ7OGA zL70ULTLg{^5C1DI|Jx_eq`VR zRfW~US~y{Nqedz|G6?hLe7lGJej=9?;z@?2cPHU4<*)w$z&5we*cXJ%1Qhn12v+SN z(s%F+kD%#_i?6D&t<4pn{?d-y`#s=aX59CMc-{T>UMiz#DDs#pBZ|1a^(9DW3?WG5 zRXyV=xjIxEn|d#1v|72f0%%1wyt}8n-sQgV?ei%rN|?h1?C0By*TagU_x3*fBAwLn+_~fmnTVEoLH_`FG8SQemOEP%w?ZR!=x{ujM0-WwL?YET&*JOy;Yj7# zWb||oSxWHF48yvWR9)gyN5lx){$S#RD09S4uzGnPa_F~6_DA-JNG&)%W8dVgG+a3y zeN9XE^2;0~EHJnrKr9a4TXh4bG&mj=EsCsz@bXc4p9M;h%`Mh6L-9V>Cl-O43p9`$ zB&bRFPDpBW%&yWp>PXQ^J8nh3SZBDjEN#&=l3kPJ5TmXXw9>lEQB1*Y_d?=L$Ayjd z8+EwYVRn*eBI(+}zRPRNs(nYskyD|OdzYGBwakRbhx|&w{{TEy+&ghvzw)s-0@Ggg zYv7(4qtEKhrfp2uk=^W~LCu=yYjfWnI7lLvIU>#Zt--^+nn{$!3n$!$wL&vSB?iP5 zVwc={^WSV+BesfGMAnBZK54`m1q1>-?<1^Ailzogz0v9;p8o*g7x6Es3(m)UROc58 zS8Zn9z-2<`-qAUqXZc*&Mq9wu5z);|$wp(QF;5PY;gp~k0F7HUn%msl1T~_FS)_Sj zE!*;1&WD2PyJpF_kBeC(q06ai;DA%JAeMTG%N8mPh>1Wa!U?%i)R9xQ5xQ2wTX$#V zj+;*RwbO$^qz_YSoy636TzQRJ<&_B>umGl;QIS=-Fb~vUt;pXT{aia_@Q(>yJuarh znjKCbR2-9v=HdD&fD`vl0V^Dq3UADR3}!4P)C%0qXLjAhU%5_jXB*N%P-d%&RkHoj zDy0GD3FrCY!(7y3lt@8vpshR^+Laq-RGMRiOAIdy87@`zo3IuqbGGMm%LT4CMOxP} zS# zt|Q@|ABsG=Qz=EVv4TR8Fec|=apLAl7X%Jl;+@6Ztuf2pi~z4(E!!S*nB>bvRg$)U zOz9v3xz*IkYC0N{Xs< znkbV=5{_C+Z?UrgPb=7qrIUS9$Tr3f{wZo+%RQ3k?aw4Rg#@r=Eme6V?;Q6qs5S?E z&Z`}-wYKGrao*gO!T$iqcfK}a)q^wpJ}dHS6cw54%UHGsI$AQypqm5E{#`KQFmr0B z=p=3lRea0Xr-~@5d%6nzx~*7Q5@7H-CgRpAM^1OadHaau!THl~E$Gzr=3hyTi{{UzE8_MO%d#YU5EILGDo4qxc zJ>qz`@hG??^k6ZXb~%sp1$Q7U8g_6J5I+PpkD!t~UY zF}%61V13dUM8;Wa3ys^&fZF`I3*6(FK{r`j%#lVK=MV|#x^F7&dTu(SkV!Rn3036~ ztwa@T1T|FgXdyvXlSE@t7hMb(5wS*64_>!2t9Cq>4o${Q?7{O^EQ7QjHOsrK#PRNR z6>}_9X%=o5tvD{VtRzGNaUrnxwlE&J2=a0{o z&OMs;t--yW)mCNsR%xD2Ybk^f8j9H5(ntX+nwb%h5_H+GW275n*Y|GR2t0a~=Hr=! z5ledeE%v1k8Sp(eX(P#3+{xTX_U{qEHfLKQB~MRKMl;L@d0;CcaC2~0<<2-S{!wy2 zeK4rY>6BE(GBd7}u-GCpGe1xm*jp7?E;(8Y189MjSL0sJt7|gqTKtlxN?M9V(D7!u zZm6mU#8|Sinj#N}_qmG$%MRIqG=A^ulxc&%{a?{nqmH|cxY4qz+_N;Nr)W}ICz6IX zTAT0i*(8mS-EM4o8yn)j@ub^QJ}Ns%$_`n`u+$E6wQd&S7 zHX{0fX5RjwM?3;IC2Vdy9u+r__?7bP@+z8KzIwc}lxvc{f~sY%%MH9G#B8%HWNof9 za7FCHlFG(PHoRC?HN}tJ8;eTnp29xYNcdZY(uYKI4 zY4zaymfQfPqmf(%HYDy;`s08};dgcemY`Ho2A5isa4w(@eqS+yFi|c9rp^JdF|Eq& zerN0au;IxniW8X1i#~}0^KL`S<%x?&B_gA|?#R;-QZ5Rceg~Esl04-NCXTH{asa%* zJrwy|^1^MrqS9%5Oq5Bm4j$&j^B$Ne*rk%mBpu@GTMH0Q#{{$zpf-ghBBTaKDO%uhRI0V!}a$-e~2g zVq;|>oj`O4%L;81%@mPQ6s}8xnvL(O`}Gz-!wg0#5(>;_N+47<)SK=}ACK#Xtl9)v zqzbjU@P2a!7w<}ZS4s)UikZsWQEqm`59ZUFV@a6q9& zHhQ6o!77EB7Uy8gxWBFgTew1lnqsWFg5Tp*+v> zIAW`Fw-m}(4m?LxWZVKZDBG8spUVv78k@YG-^55_Hr30OzAOI#5r=35AbDLO>_sR} z&NH!jKl96MK->GJF5I!{`ztU5>b`yLN&f(tEAWria_?xlY-6$sVyE9H zHyr^R@)tMU=wH>1+DnI35aMNWytfI4)d)6X~!cay3M+ zMzTo66MK+!f%R|H;cZR3QE4kX_{ojz4S~`LEx$6%EHDo?Q@6w{lvrQ7b0d-!b|&{H z(&XUXsbFLTw5W-gzVa)0i(dEZxjepu3T$wQ1CpE=$Ab1Le~9mXf4q60mLpMc0O2lK zRGmH`pdC!NcOS$Lt_UeheGyfJVM`{P07kN1?Y`C+TTNUgF%n3mtc_v6c-D`XI}hQ8 zq%4Apk}NQ*nNTY9iFW+CkH;0=1#Z_65@*aJiIAc*KlpU&B>CL#F&ghQHjr#A_wu@l z80jTRRVl2f^W57Db`^jN!dq2^fuvFWsL%6I>p@PWvc#&ldWYn?6cw-}YGxe3Y<0T_vCg`Eudu<-ucG62 z_iM+YhS+WAf#vGHPWH9h)n67@*KuBRnpEc5%*CmihPFp9PWQ2?*2IUnYg~h2up_6} zpshPZLA24uFO6$k_LsX<=UMey>y0w{`qlS%tD~NpofVTrsxGH(R$h0#{V^qpt{cI% zL~oU+yP~zmVM^4sa`%ku-8GiuY$*I8VAMuK%ic{66pm9(nI=^@h_n>!z2nJZNCVV# z-x;Ja83$A3x>{yy8K!j|t>*fpQPkzsltOIC%UvZ^{87wA(Ek9$ZY{r-A#ARG*zgCZ zDH|r5D7R`Y#oQ2bKSc#Y!?jtOmx`WdgaYOC8w3W$ugbvf^TyZA){L$OpF;VaO$*hW zH8nD80ZI$?-wPh8rwaW~V$BfUf)sp|%?s&k4_s&uz85XVi|I} zwC*co3K+Ca%z^$TATZyWjANT@%-Y-$!tKEvx;b~hEF;7}UxzB+oyR{5MDlx^Ege`% zg=}NJfz;eAfT_QXj!j}W1YZS{wanVydV;nX-3#tP;XDz+9SUmPM;3cS5SgLZ5q7#T zJ?*{`ZhZG7`db@x4`WM<%E8*cDB2?Gsu5MJDhkacQpK;t9?r@}_CJm_&9UN_A%L*o zP^*hCRO#do0w?gU8Aes! zwLK`kKxYCl7VIy!o>x2c^TsG=8?rLJQ}lZp8V&g^*TMab=Uf{&uHsG^&8ry0YFxge zpu}{5Zu26Z@E|q{30?1TVU4@o1;#feWK9mKjd?Av*(Vy&@!n;dM-K{6a5NcwORl;~ zpz=uW+eI4{=b2eiF=LmZ!ZEOIfH-Pb{Cj zSc~d#EC>eNuWV}$+kh7^!slCp)xDzjeZ)1HWVv+tl{Ap*jm)0oA9(|y(hPF2G9rL% zQCmssy>OCgV{zUvQvITE&6h)(T1z+Vg0m#=T-5;gI-W?%>^X~r>G@zCGj?FCAiOxf z@_MSSXtjbyD#hYFnRZqKuc*c$8wnrh(Ltj2Yv zf;nXoM5OtXumB5^ZcV!EF}?`M@fE<=>W-#Sr;FmggZ6LPME#NWV+K`MCP$h{m(ze6 znpUNnS5a`PBpPHRp#@3nY-@?F@}<1*V*ni$!-ratve5-xanese-ZGF2l-S+0k`b4v zze`~*-HsKMc3ZhBx!Z+j4KY79!Who5?g5cZ$kK z3-%>Zm}F0uoUBhlRUwvX>SrX?ZKOI_meqb___n?Lh#{pYZtNbaH`?ETs5>_7T4_@^ zt;%ZVRm-G~7fB+_X{>c5$lvV>fpEZvBI-?!*$as$=(Rniqi8Eqc4eC+SxQpWH|?=N z=n|pgXqHF_2pha%-L!y!robI4NhI^x+&k{9(P{=-dL}$)*_KDdGy*9o3RTvmqB)9d zNu>pe<$n;pwGFSgOk;dxbr!C3nCc;DvFyn^Ws{nEsc5roxn1W;0RdT9f_CINSm3(= zIOHr%?Ee4>4Ys&-RnE;azBl8n!}fMj6qNwVAbOWl(Z<)<7xU*~*UJQ&ZdOe^ny1JZ z-kn!ba1XI4!&Vs!}9c^^VmM5T|7qwT{-#94 z27@&ATJ4WC$a37`yD_heF@~Ooo-%uy!zuY*!qcyd+w_Xm*0& zX(KA(elV)wr>`US%vppH%`((wQP$K`$SmSc@+OX81ClI{vfFE7^CM0Qsj)aWc;QoX zF4ZRN{x8`X-vsd#m9WNKO-&(<@lzyzIz&Mb4=SA4AIARDn+`wZhr z_?LvDN8zfv47P@Q#&dWYX(!Zm0Wl#$yo|(#2E(bj*-VtHYe^e;3X{itDZ(62K5{cY z%Y)Ro_k|QRlOj<^6T2~*p_x!xK5UO;wfC^a{pJ9#im&YL&f%2*0J28NcrS&xGCaSu zx%hfq%9Wa)f}WG!rK6VNT`HL*kGZkZ7rMvC^H*!Fct*C`v^#;9wHyEUX+y$h#NCD^*?DN^4JkpOgt>IoEsmk+A z!&I82s*vUo+|p3!(qHsQgU)GKH3O&JhXM+}mhc=v4* zAh`ueVi=(oJ22d0_YqX7j9nC-5$%75xYLa2vL>3dHQ}tnDTH+psgSIJ1*4jqPO~Cu z@SXezQkz{?wu&dw2^qBGg0_Bh_K0@P?CVDrKMQ9$Um5U~3$-APWEGXvD5Md*;GMS` zT=Ljko;jMH!tCusi{Bo6{{V)UULM}pX=4nH=DrwP%k1R)LpwnBw)TpjB;u-?45K82 zB$lS0nX>w5r_85Dj>TFgZtay^yDp*`K(N`4JfE~Zjiu7*cj?-9UnihmpRoILSF6=A zlDeB;JQduvP_(Q-D#|bEef+*y@fSyf;7PhS;mpfpatf&A=ilt<>{nL?q z5nxB2CnQpY7NAvA5D$jO;wlZl0y!KSAfsW+5!C2GtoOQ2yko>VeSa)A=AcD#kuoHJ z6>}L~fgGFA;VYn12ZT7P8FVi1q?;Sw!}*U~7NO2c^yspqJ&}ku*jW8=TyF{uyadq+ zr*;Wrs91xwzg$2m0O~YRB$K>L5v!PMAJ5kfNk=(NXE(52OmDHi&42+;NJ>dW@i1Zo zTKw#7>xr=t;Z&PQBUb^E%-&~j#{;GcPyz&xEeW{PQot2$!T!APcTyyjHM;VES_fj zeR_;8)K4^kB#voWQSAK@yt(t_aK*Nv6=0-CB(bK)yDA7Hqk4M&SX#<94=4Z=rQ@*m-YPc)CNLlSr$`b!ej&C5-larq}iOrNRbM#=IQYQJun*DP+b{{ZqoRm**&R)6}`;BGytQdWq87h&$MBe;+&w2PwAa z3DU^WBNx!c)LP4O2d|bXcQ{s29HXp-3hK9ZqjFE5F1Gvz8n2ZvZwR#Y!RI9bWdg;5 zvli>j`e98~A{~7aJE`6EBsKv-yKZcK2Tz_R>O>pKM@u6rPdV=i1R`9K>0xVqZH2Hh zi!p@q1zFfKQ>oH4nIs{YkB~MWQ;C%1BFL9d6R0d~T0?z4n{9{zwOgnJxXPg|c_svW zP5@t}x$WtIAEG2t`|`!mcZC@>%JHaCM~aWD|c}*XCa@+_=x;@55o#5 zsgs8Ah_zD19?NUm%AgPj@cuXk>XR{^X-_P%sqnO8n0B&*^SBo{8Rk@NHz^^upIs_1d~}iX&RG2nII+n@|=20#{1%RqOUmKAH%aAc3?8 zAHA=L>ouB(%5^iH*U$6I$!lIB<4PVo&7zYsmYM^kv#LTCMYii0zaj`1w)-DESKc{< zwoz$>aZ65VrAOjkDUBwncqvf4gr>4|kOt+h4aqmPxd1VIP_gXX0_RVud@kDFs;yC( zXpI%4S6O)y+Pq%4q{b}Ltn08E;dkbp@V^wcLz@P0vcJebFwg_q0e z^T?)?Er`cVP}wS`49vK|ZM=xZM40~o>^byXgM{q<$flfUKP6VK%Kg$NMrS%2 z+pV_7_Di_fUVeQTWP4n0iXA>g@-h=(r+=8kJ5U9x;p~?HE5fciv!IZ`kKP z%pmQDD>RvXZectuStO>2Nc3EXyc>cPC?~{iruPQmV-%WjUJWl#*xjPy-Hy$5UqP!W z^5|&Yvq~dgX%;x%M}(BS79cQP*bVmUd-`KbTHq)eU0GydJIic^Mx_!yaC5UjC@8au z98xk+N!}vC;BSSONE?uBK@DvzNXE8Ez&0LNDp2y`^MF)G25`*1nZ;B4KOnBGqpXr@ zyNx~C0>G25H*JX@0n+-sOaR*n9PDs$Xd=A9A1mclVSIGcRD6i~sJsqwzoT|2YcdysC1qXF~Sn*+CK30Qh)Le)iF2sTDTb+^1R4hWw{zi zHnNS)>`A^Z?ikUNg;{aD1kSVB-D#OBB%<#Yp^Q;PP%}FNy_4d7f#r*dU~MX$1B-)* zRh;{=T(>V8B#H=IUXiLM49&T)1Phy7+tUHjjhneh#x%Z*R24U2w0YH4N4iM_jHK#K z7T6uM?f@p%=hvP2;*b{AtK!i__Zn5q`?IQg4D2JqB1(d98Y_Ll>IKf=eD}5;`gsFE zX;pVn7wsWd_`4yWgflm#3?2pmtEsv@_t@g5Fp+QNX4Kpc+aKL3f3S*7*CFGY4j_Xo z&FZMK*=;=3VWTkXMg#9GLbmq;}z5u zk<+}dL#=#T+T?=Eq!5d^TX~Y~W#;m|1LbeQZycYnxn8oXGHj|TTB&1h@`a^EP@{hq z!{j|rTnO@QH0^L9svnAHrr~-RQ#*oLA*kLF0+LBBV1n#I?o~nDlHPc#LvNt1+SbQJ zWm9`v<4nJ@X(2(xbaWMwK(!6Sd4+6|J31piig#O-XXHe{qc8^G5-=S$+#I0Tuf@eJ zN!nMmo_Xz2l+*BTOOnBvX0kx@$(SVZ#T0Z+Yq1(ehc^pyP083_6#!gpDX5rGXvsOH zJ;U9b=dkd71wCDMTbS_k(<)U(LwY*;0KOZRT}e724XI-aALbLli z_7%k4muDG{Syz-9&3x}vl4XEfN$E%iRQ1pT?6kX{GildgjBX!blEKi=-c8r=md_yKT3dQqhpk2)m zWwTw`(-T5aY+Vdc>Qfw_KI4q{g}7F3DW%Qj;jDqx=V)zJQCd@Y+155J@TdwH?oQt^ z-fR3s*DHkG+Zx*N_3F1D1bcJ#XF*>USX(%xtywe|mX26qN78&|#FM9ch8G}$2RtFu zx&9!p8t9nHACjN#`?mfY&ATD2nx8d~Hle6`SXQcxtkmbM5v^~LSkbd*J@&wqMT?s8F z@~&@o;M&19s-3muTxp$CoYB9syk(VS*L>TC=;G1{d1_8DwVIiHa z`^1lmO-7PdkVae8GUATRGVa#+Dh%H)Y`-S2gZtiH1km@W?naOrQZ5XdtbQfAQ+=<3 z=}TWlIn%Msww$ND4NaH!f!S_B!0(pHo73epJk>HeyqSCMj~na)GP@Kvxi%w}jwuZO z>5y^JT4cRDVd^jasfw-_&U-h?BTTxYD#|Bv5}{BN6I;U^iM4^)0(Q9Pb8Km3ts;*r zGoW*5fUX=p#zri;TQruMrGzFaGXjc>u;#~Bk{ai2!2Ro5_@KKvS`L_y3vjiqcOS#q zD$LndV@;a&eq7ST==z3HQ00`-mJM}{n1+eSE4wA`6yk|PT|_HbT*I~8c`Xsz2N~x_ zj^1ppzGj}EL8YCV>IUWWvErRR0C6Ej0xfkCI9D0?R)no?bty@1BW_h+vM^!u?>pVmV-URL@ zRvs&>r--<>#%_FHF^v8B?{=Q5;Q-sag#Q2~_K2(DI^?V#@k^RfhqhqFr!{8Q2~iA$ zEPz~%R@H7~?Pp~4er%i1$UVSI8BK?eF)m(^LIY^{4{0E~*S*?s8Do;NN?A)-44B%$>e z$Hv84`$KFu#my++eGt|N;V$6pNl%N;-haau)-acGM4#_tRtq8m*C2dJ^gk>?bxARJ zL7m+lq>ezKkY8=~8xQm6g%(9C00Whn>m!j$$O1j>byHwZrxCH+ISN@I{+=GsCoBP93s|R6L3J-G*D_J zj&KIC6P=e;w6O!1^}ZuUDFe7*pcR&xi)rr@m6w?LdVYIiSqP9RH!-B`bd(49lrXmc z06*o1qyPaosi|cKIm0X8mXqS&o%&&tn(CWK(o=$CCRB5K{8*LdfvTXJNk6=TP_Qex zj2(dU9+-xblIyh5Dx)$HW)8;3VQyGqkcQ#OT`TM|p?fsW?3;etV{k=}_exxPe#-;6 z=c@Vlw8#Ef{{ZqoRm>fwNXNAPDbnXx?aai1rptePo3AVM$1_`EcUPMAy_tVxkK7X# zsWF15LY5?HL3STI+kSssWOXiq@<)oZys-V}-9sJQ)NOlu+iWN}Rt{0A>csM{%1H2z zy*iG6(AyQgqOR3~k;P($OF1UM5*tGL*z+gl=Y<5JlwW(KGlim4 z19?S>31Yw^+xMUET>OFC^26{c07=4iPb87D0p3d2ur5un{{VCxR(VVf9HK;3ofYOS z$duSA`VId890c3Cqrp;u5ltV+f>WKX32~@dHC?QSax8=D z-0$_lJS5GmLslXOx|2}7tqNUE{{Z4V&({mM14+Xjb`y$9oggbKss-D|E_eR`hn54J zZ5t<|RB_JAL@>oqs^?vSBwwDR&+s^ao{GTMan&pn6+5(*lW89t2hywRPQVU+SWr#b zC{-F&{KvGszJ;DT7)^Ad-ZUq>8})DAvFI<$o)zu{1#@ijtC^n=R`DF_DykxCmIL;>7W zPk4A7qP2lL*z?7kK^Cy@dmLB_k%K;~tA;9Pnn$IHfe{w6um=12{c%BwjU~Wm&2$;6 zmRf7gv~*i*gt$JJIjfShC6C?mw<_rzk{4)A#=G1Nw%g^79I`l?laRfhpHCY_!}m^9 zUuaxC2(GJ{B1qvvk;bWQ&9}H44X=p|#1PO`lRzKHRs4bqc{6Aul?x$YqyxRZ4lSL| z*jy2YCTvhZcJYKZXHaj?a0wUR7@?ibjJeBa*;?n&#VHK)E=r1N z6=iPfcRChP;#-}M&chW)I1a*jVB9Dwo7WDXHgt)aCMcs?)$0CsAOrlE9t8Z6se!)YKiu;sJO9imnM0JdfdIg8&6LA*r{&QH>6_5N%T(hMX*C{hmRRz`-1T%8n++Urx#`-fn@<%?3u$L&&k~g?Q{YusG{;>YgyHpsh5SBrOdEE{Lk&tE($u5#%eMIrV!Ihz{gU+ssp-qSl0p{36FPNO)d$tNVw1Uf3HV3C5B zGDTt#5pG~yj-6laA@~N0qD?IDw*tqSi{QU+4k4$_DXKH-O3I4bW8GCtMG!+*9f&Fh zrBx$h0a5{8RydMOT0kS@mN}Y6N~8AG?T4NAi3{b_89G5omC;uBk`ihiQMD>Hj+F7+ z;0t>L&wONj!uN0$##cCoG+E_R_~*3O;|bbD;rhI?F$rG;&ofHoc#AvS*bRX4weChJ z2F=>CM;CvI74=u&WDY*cyCKh{%yWA2O4Yl~m#k7SkShRy6$Z|L78_i}$F(%qWp5@&e>W!Xl54OU;3RlTbsiD9XeS?`y;w}eY)A?$1lk+35c#>2Ls z%C=ccA5r9fi&F58MUwDuwIa}Ebh(9POhllKG_(-+q_HXqAp)(GZEH5fV86OxqAgbk zcueX1$x zGkGed$!CUK!h!{;VMm&3)2&!s>L}zAmNp6+#1+M{Z6LUT>5HT07BbQ$+h^9lFV$^q z$FgjXC(5g{4jG8#64c6#s){)gs*i*c(cA-YNF?*PJjM_kJ|%PFAZ`YN=kI8~&8T>{ zH->{Yhr8mM>5sa;T{66{8pstH!x66Klv{Ebk+sGxiNhosrIS$|v;dz#V7~{C5#pAy z>^HFN$B4L*;G;8VbHghssHl=!c&H>r)MJrUl2~#s!%p@F`(sFZS!MNo7B)obX{{%3 zTu{F+RnmMv!(2`5^}_s(ZZbMR z;^Xha>qDe`TU>McEtO5jt=QBLo2?#g7EM4$zEMDtN|6Ho8IXoj6uT&8-o?WU4Oqb; z1)dR=(1JiDCHxMGufVl6dADcgmyCp2SPdwsq$+96D3(WvrH;h7(w8Bs%y>?hFr}zGIsu`rmO&hK21h;GI}v?*5X5TNVnx9N2`kMDR_Nmv zS@BzSX=`(Qo<@SU7;~zCWACY+{^@8h`X^6ILd9O1047kaGrrjACViN?YtDo1%M5_}=91@g;!2GF0JLr);v9->y`u^#QjWfos_UXy*cl>t z>=+bq4UWfaHO#7yM3S7dTlF%hFm=V0B#oZ zsHhaICW1jCa&ERAZZXXU*J$N8tL~~Q5cMNffw8gk>w+wBt2s^Osg^ekmMVtldzK%_ zZR=}c+V3@9%-C3Z)Re@ihf{*UpactBndR2jJn%uT5q+h@15Z?_8B#{&Wh3Sao>< z0qTpH()+YaBLuPJ(Vk~+oYemSo**@Xh6%MD4q&S+lZITE>xtqB z)-s!SiAwA$H8Si~tS|Kk5{W7SNmA4IvFnW88FngfW8_ElaBa$RP|Ws(2UD*5^8;>P zxAnxYG~E*lz)bAX5Lgk`_CBM?;DcN$=-yJ}%=B71l?4sJJjbZPw%vs&+8mLi8=(vU z<_NgopRZfs*~*qKkm1a3#wkf+hTbE%_4F7Q;XrbOSs%O3%!HwB&igmd5D{5X_q!-P z`G^whr%<@xmCxn=c#b557&@TVI_SC<8nzBLJh%Dc0c8WblADQ}z1^-4HWvhaM={IK z4ZG1cEC7}yCr}JG7q!Lhhzfy&rB+ipB#xo<$!$R2P}q+z<%SeS zP~@(c_7~JUG|vDlB8=&*ZDK#U((G~SdoT{?9&6{`)PM5@ei8bvR_!jX{i*R#-H+|u z#cytZ-)9?o{ye#Fj&8JneaqMOQ2zjj89qTrBllO4fOQ)kTWx z%dYn_4GYilZ_k%3R&j(t-NJRGh*3&QCV_3wc7S|`TXg>bEFd>_oY?!x(jMd=5?T42D3LnRQ-89GD8c4iW#{BRV*ueB z=n)ezb~}s3V7h_Or2c36>xfN+8V2hr$aaudmY+aNr^%&f>8RUSU%p(*h!v-s~;&>HPU&jf7eo(K%=uL=7lXP>X^` zgnk7701Q+Kr5#*^x6Gm_8D&)qU`nre$IxHGKaL3nGfmkj^yX<%93zPKyD=I^&ys%} zC?=DdQG7?nbU7Os<$3F>$o~Lg9J?v=b~aTWfD`F~?@ZR4!l!2(OI5`)4*W$N3f>4J z1gal0P0JshfEvtal47T^h~+RzMfxBbew2 z-pBCegmZ}$osG^DZ1ad9$#UtdYinq!Xz5VA)6~qdBuQ_K%ESa0{{R-O;8S0fz?}Dsvo{(4a^l%z=LoOJ)dFw z9Qo>PS=!$&r}U%qUK6){vyVDvx<#o2uv+(pG7+L+yp5Vcfq zPKpi4DFv1_*q(*<7dEiR(fcp6bh=W0%?`oyzo}m}?S9nN>PR|?yTkIYpjy9*yM5wL z&iFX+jXOt8!uh>QR98b46cNjuygGZKETFT?3~W3JtGl@-%uX)WOycWe!=&z-DpA4Z zQS11on~3u%s;la%s#d@ECEV?~^!{A2 zsoKe0b~A;JT^v!3?=+w$&Kj(U{o0w8BPg=CAhr1uzT|YpZD!n)%FQh1QdriCtP-KC zgt0`S)ae6F*Klo(EFhZ;jX05v0mC1fXsRWVNajx?iwU4sAkgOuQ5LAXfLEl8v)JvT>&z{~lSMse4Z|K$1ax$eoh-QQPoC;*5e* zIc%E>%T90X@kcL3oC#tmM(np+UIeb*lRMlvt zJIgA!yh;?6@<$vz`*KMi*|ii*^YNt zn^Q@gNyFsF6xCH#LDsfN=2Ig|ihNM7h%h|tdD|4rqcx6;Zj)9amflHeu70a+WV~aL zNmray=DE#B5lc$aJrt8lORlXUh%0+^vERZu3*$2_v~N9EMn^Hgo!;f19G4=^qs%zo zwGk;#dq+S_5;1}(iv8fV!t0Pd&B?F|EvVw#X=x`b7zDp}MN-N;d*S}jxX!0I&0~U- zCCKA=GTLOLA}Jk*igKh8y{xJ?7c5QgaXc+(4+^6{c>T@CMPlK+lZ1OhO03 zG*3FC{o+U@YcO|NU&M7AExKSffZSZFCFGdL0XXB@7VO)AYACZj!nNw^=}HB6Q4%Q( zqBTL`1eH61s@Ej)#X=zBT;7XJ+NXwXa;)~^GEUD|hBJ7~yir;nmI>->DpE;m7q}xx zQLsU_10qKLnl>;T-e+Oa^C9T}o-HsAa9GG0imRESX)ARzy)@CY}0_8+!wa z;(q5pb4yEbIHP{$rOk6YoL6=Hsa+zu>PGg#-FfhF> zEGjR3M(eItjR6~2w@g4)X1S~CUzGZ$U2Rd z&Gf z?UJ1(`UONzEd)Yw)ce(fli9Y8OrC7lFOn+kzF9kpARJ8nRj$?^C2&Re+mJZc#tHxo zEV8f<5i3;ojqLfIWx36DRV*t_OF>4toqb5siwrF!aTO|TUHi#VKv8?O?`z?;1}5!| zn0w7Md5{VGy~!YKuiW=#k&Aa01%N)Jd8Nz8{9V~k2EoJGo>K%FL18?3g)x!cjer4K zGD4pSy~i*{*vlC%B%Yp2pk@#AG0`S52$sS)37y$ZFz7UiZ6ID%wvld4c(xV=p|e zu^tdEly4XCM-1^8XB8#X4(aahrZR4BEJlU_xvh^Z4*rcEiGIp5TrF#kGwjDR;y5W} zr>d4YXjn-cQ^y&U_<+?M$U{eP2E%>#7`MD91z~(Y=E1^&%cvmYuW8JVk2UY*q{uQV ziop!PvZKu`XwF-I-i-LRB!O<2z1|r21w#WRm^H^Mcji1>23BcGppZ=9cPb0THsCJm ztTkVIT|qua6w_9>hhBJ9jxOT<5#!2-$usIGA4&;QNvR^0gKvESuVw^X-pWAq!a4WC zFO8fKxx=(R$TIwwkM!{G6U)Q-yd3w8)x z`JsCsQIyv^?c=lz(>18zoXU$N&T{{G>-9Yrf8W@Fi9RUV{JIA zx-K@)ioP9lSZZPM{nXcJor+}npKBa4)mgOg@b+&jD#1rk?*&*$wJJv|xnw}PQBXC) z-BhkBjG8UJ6|#Y2$o!SIe$Dc^xOPmQmV%NW*wd<3Wz=znO2}TrTO#ivX!iu&tWNjF zgMn!yX>b9f3twjb(OI9ef@b+meRNr!JpoVIq*SDm)<)hWR^~xN;X7&tZ^+*nC376i zEwDC5yKD30xO*~<^C{=6sg)V(-K5hSZds0|JDs;Ze6fs4XJ{OCTE>~ho1A&*6?ZU% zQ`9Ix!O-0p8`+1b_43B(oOva1wa_pg>$=m{wq=sOq9j)VM(a00f zbKIK~ik-Rk*5oJJ-8*+oKpv~;PuQvK)!0Y16%K7##XK=zneo>K)g;daZeY^o8H5hZ zBdG2W1v+H#6fDbdjcv%sl=hQVtkN~T*#WM__4j<2qxNnMCcW-tpxbyI2>36pGSkCE zkwqL3)1s56BvnX(+u>EP7xWnL19OeJeHcX?ei+37gF~8kw8a^agceb4zYJOpAV*Zf zTIh?kk=c-EDE)hHHi3IdT3EXyX~M9sgM zvHUi|mvvTbIbMdXqgPi+JGB1*X>(>%^5=+LmuH#)mPpZ^!b=*c2fO%yJ#GB`FdZip zppAMyBUD2a%;0iabo^t_mLYg|I7Q4fu{Cg>@`#0OicZk7MZX6r=U-jDx9psd>Bn=skpy;LJ4;VbgrexA6Mg$sqy&eAmh5!KMl_-?fsuqzu%6SCELAu_|2g{(tH=LoyLJWDZ0HoTYU~hA{ z8*{z`Mrj+Qippk*jEDel-E`l7PoI`1ZAOl#gw$ptJu%KBU=5Y8x8ipP(Bf{&08u8; za|AJsXb$_E8wT{lf>OH)w0VJ7?&PqH@(jGa59^6oQLgBl)zg}GGep`HZW(&|i(%bV zg=Er?nnkSGp5jqrNF4rPZEsPw2%_91vV&AhDjB?Q`?4=0H|v1Y;iU_gO#2GDp3Jko zF08+{n@PAA9_dSuQP~Ed$C+LO+E)Xs2mb)5{Z}UTqJmD!g&nrWF|=@+-mRuFX%e`e6dynF3HMuPd2G^#~G4AxNb^5qkEh- z-~|N1zG%v-C1#b>Cs1sQe;@|r{y$7s^6I3))Nz#VJw4+jQ66m zIzU)h$soDdLpOXnhYVjjyE$ zk;VQ(!>?cCf)Vs6hRQBcgRvGexo2;X7ySJ3FF8;G;Xyb_<}{jDyMYD4cK`u|aO%|V z8+;>_rmJR*7O0+~K-@;6G{2E!Z_5F$##9wljSr3z@<|kMf(Z=dg*$U6`QT7ID?_Lx zoWc;mz)X#6j_o_gJAaA1EA+u>=%8siD!arySk)n+f}$ww#ad4A)JPBg?}dJs`Qa|k zQwGw6hMdS4eba^)Bqok_zTHpG{cwaG*U?N3ht1JjVYi%j4U zi(zs%YYsx-Ma}2vNs#oF&GHRKENt&%0ktLk|;>yGe5TxubZMB9whgTSQ zV_je`G{|2hWV{h)n!&$Rel5(heh}fP24NgIMJuq1ln~WbZqbq6usq1rEW|KfK#fMk z4N>Y^?1h(E2!VsWD_Zei6VY*88HQy^Nb4H1MGMq8?`4wq+sG=B;a*#Bz8Y!TL3J*3 zKrQ~?RVkKsS(s;;I~r=7ss>1mvq2!eL^^rgd{^6-JCS~P;Li4Un_AoWuT>6~ZsxOGxC&U=scx(py;qm`C)soaufZrz;|!UP-)OfL${IFFdKn+>`CQqvBsVv;Xto#rITShn@WAMDm>O`%r!mnm7i3i z_HanjmMiPNt&csiLw7eGOIbU(_^Ir(vI9zu-mFqG9{E_x6x?3HZQ-@IAo*-@noUvQ zCu0kZsQmARq+0rjRcA)-;*?E1U4O8@=~^4rHl>YhWzRSPJ#N&vkF%_$=|a-a1uQ7$ zqBK3?t$^5 z=mx}_ZcA=#ZHgmvYMd6S^pyK%6$>`(hb!T}CE>muuW0G0vn<5R-TVBIQ#3K%*fd&z zSCq0Qn*dnsNjRy&tr$%lZ*zkm`O@2YreBoso=$T7-y_S@EXv?{7{?kdJW(af6i`D# zR^*mlN;dN&4#x*((bPe;+*N%QOD^ogfH>2GXtAOL!~!qoB-Bi zw!@hQ_@pv6l0%KAYhGKl3g_w-N3_ppoVSFywetMSKjJB66p14-sD`oW;gU0Gw2%VJ zsUO5FEL8P4Z8J$F)+@@gvugtzOgDW^;=SH$N90|d=iRaKy*CYTr7PD>PcRB2V6oFi zzYEJD0aSs{axM;=>@j}I@h)AyU9d-!YpeKA*uO69vxTabbX?;;sDjhxG5|#yd|D~h zf$rJBH<7$$K>#Qu8a!@zEi1g;Gz^TH1-Sh^$**IaF0*FbO_Svn`Hc->%n_lBM|zb= zu_)NiB@>nDMV?ZP}i1nVmjIBJloGNY9;Rv^6p` zbuv2(R8#6=44Oy|ZV9tm_885$xbANslCS|A_Pc@4y+-ya#{36go#r{c9&bKLQC_Q; zQ&Q%sB~i0jA&zvisW{PXaYU~SL*z`hBA)BDsvhLa(QX!3=_Pf zp-hVHAXb6&+e2y8wgjIY!L}Yp_`{DyrY5nl2>r_vdsnv)@hnp18BIQ2LkvCLT^&pe z(auim;tp9fr~oosP$V8g)QR2=)g!6X$HPs8(<$vWJ*m5CqT$h920=j%Um?w0W(xqW zj5KW&VH}N4B~@^{l~8(saiHp`2a#kPdMY&9Ata_2x`7@qQRVYeynos4H4aL0?5>?e z)QoB>DpWnGW1nkS`!cG{cy?4tqNc4P zo~#Y2qc`!DH!b3^*n$Z=8=PX+7Q1O2o>u_ zUvL!xupcizdyFC4)?sNop8W8nc-Mq@PAVUNuFk69ud~!>qCwv<2E?c>eYQVNd*Xm^ z4GUAF*e%6M<#4@zP_;RALS`@swL@H*d&NV_Hq~%^Ci{YR-qan~r>LC4-z!LJr&h=)bHxa0=@TquFg{>@Mr%o^Xe5^bJW@!`yGf)8%zhL)}zRR}S_Hk*3ANHG?6r(!*{3AaO*N4~1@p z(aDGPRi4oMF3T(UE)2(mv#i37mm;YBrAtqkRu`wsP&M5_JE&3n#FEHYdy5o>?Q4&C zIwLGnJ7|R990g77liSLoOt?eB`K>-xG<34lR#rFre9fNf8a1)*w1P-&SGgWQW1js) zk~?b{NcS$VWDxkJkOya|T$99Eq_s?BNopQexp|&a#r-$m8sK0beQ^6zRPrhUefE`; z8YSC1gW_HrZ$+C`o@6QW7?PI8l3eL~$*=L7)B;4+xkM@ftJQ+Pa#z_IFxbZiK zO}YW+gbsA1P{PpYVbV44k=`#{SHV{*nX_7w#y}xc@gL+d(~tXNt0j2NW6rKZ?cNd8 zt=;S!+gBBKVcVqv;Y{|sBCVb^q=eGdG$L?kjhP)mw4i`VjNCQ3UfAdMo|+fwp6Q#r z2jPX*>@8%&SjeDu+Mp{JoUhSG61`MJ%LBv|lBQHku(7qT%vj^%Ao(xQ<*uQ-lnkpq zT*^rznPW<_HhX+l=zQ?xs+^YB+^y_R*z!7Oj2{MQb3{gCYbpm&CH5EVMZ$pO|$V+63DRh+! zR~uQH7f@G4?u356hWHm~iWozYgGd!sl62>!Szq+$%hwW!;SQ;BR2bLZQBk9@1Zue- zq5UvV3C*0QHFZ%*JwnHKSrn;Vi2S$waHFA6k}!o&PZUH65GjpFu|6d~F}4)ZDhmNO zo`GhC9ytVMFRN1gcjbP#J!wKHT5$wVm&6`20!X(DsE`k*J+OMH0IOM=vQPs$1yvX4 zYaYMX@xuom6=Vg5VOUO`##&;{O0VF&1qL046C>QAs;Q7s95*9mmi4VMx9a z9%)qaccxL^cTM}q#{2yL09+R^s`p+KdbN_4ppvc&4Va(iJ`?NId14F-DpytGH|-QC z%vpxSk)(_N032ChWT-&2*i6)OktU`=``;Fyow|NlHZ2y8gN5Z(k~^a)ZfvZ4KQKol z{BaF=q`FKc%-)8m$0TnW+i3v5^=v(3ly?Afl~9YAQwae^U;zv^2m1aP1I(#Fgvm2G z>3l3Z_>$MSyC}aqe>_5Rg?TI#hcqSWnYGvvW53Yhu9BNgWUD3gRzzh01FPY1I^sC> zC{|LUbnbwPPVrcLCuYCQZF~oV)i~mlI?CiXN#iVzZLPjAe2<<9W#v{yp?kTC5AM?| zMg_vLzK>isR3golA6H)uQjYx^o$Neo$P>%vFzqE)=Nj=Q(@8#FLk3x*E3|-V2Hg#| zz7({ly2@!%MPxnXE})a}o?!g_KA2|nRH`-6HF=E0qgffbT#>)^x6=UNQisWO=dgs* zw`Mu!u!=@@!(*}j=Sz=Q*#Lc?o~3;M0NP_(!T$i{eyfwaP+|W7D?C^(E&G2l@P*i) zeV?trkv_QO>+`61^!Y*hAS9d zAoq>pw_S&X8}hyRVRO+&kMb$U-3cQkYHM1<#NU;M0XfQX;`C0~N~K+z8d&ZH$ppCa zxgW!p7Qs+~(Ha=y)P^{unA{N3vEKey-}rOHb_#OiK@oL#fIGR>d&dF=Hud!Rp1iOL z@=IKhol&z$08}wXIcNZr<-bGyUkjA%+rnH$&^LCCd)ra7x6Z`ae9jaSp6t>~RZU32 zsu>aai`nGo%~XFo;qRi2$Ex&sgta6X;bQuSj;OOR^a#9<^=ww+0*00=DpDB{>V%b( z4bg34pm_seqt@S!0R$A+MyWKduB@tw(akM9Ol}b_Tjb5nw!XsHCp;$rl+6H=5)AN_ zPY6{)0P@?*6x}OD5Sr#Wv{a;|UN$3`7qPcr>-b@aBq#{sG5wt+#p)(_;-!aqY9x?H z68zbSRVV3%Yg|YT$tuF;uy1z(a$mK-x86yYQRbX4!PU{t-45!zK7y~g2-nilQV^uD zwZlvWfFz~Ojy?Ba`y}zVSF07|)B66|1$^t;FKgIKw7N6sUH<_2^Y`F^!sXr<>_xXBRDSWe(lI1#LAhYRPd|Ms;%vr1TJu%c zkC&g4t@hX1ZwB!4&{ri?)pS)!YEFGe+}W1C58>gT3xlb-jmNbY$)wid>i?n{n7W zBV~P}XZ!(JDZBYzAjO_J2w@wL%cvV0I0u+Gs!a?p@v{YVV(m$xA}KP`t(2Ty!`yEb z9$!%gXGYYQ6IL|p)iRwnJCy>!ovwCUF8uM!ev?%TPVD+F>>AAmrNFk^SpH=`%sV;C z>nJmi*<4iFiqq4X{l=gpNldzYPQEKj;0p^_i`??ZI%(%&XL%h9J*`;RE8E4Nm z?pMn7kA|pVju`3crL6El8J5M^{`I-r9&#}0++6zsyqaG^lT_U_Vkkf_cL1JA>uQgf z=k>Ienrkl**2>YK7hg3#UtD+M(!^W3Ec&kvs_m^yCGPbmsPXRTqZ=@%uhvZ}#^af} zCmIBAXAWGWtkchA#Yf(wE7(ONDvt@|PT18Lysjp#+evFi6MF{di&i?mQt7K@rC?)r zTN~Q@U>Mr&Rgmgrh}#V=hU_od;-|GwWzNvMNRv8zrFapLEG$Z5 z^Tyfqj{@73mq*%=KM%J0^jlA}dfG#uEljPM`;{$Jbj9YAyg=Gc=27Lo!AU($jybYL zxPn(?OF)M5Frqt0&2uV@!Ltf_$Qpv8=_X#YI@7=q+fQ~v>0U$|0>s>P#nFb3?UBb- zmF|;v;8V`bxVdsjp{S~*f=8>KC}XBcJW36LYcVB!C$8Ir>5KG^jvZ5E838__lWH`s zj)<_GcK#_U>*uDRr+R6<$jc&VLL_D(bX`e6rsUsZc>qbruYRGjiWy!qeFL=Rz^d+f zN1bq1ZB3cw)pF3)_aOHX601)icjIGYwb+rQ^fx^4CDYq!RUWPJ$+&Q@kb8ahj~-tb zrk5&Kw|E|=k|{*GYybha09aWRTHJ;?Qp(2oYL|Jhdz-zbQYY=Zi+fAsJn~%cF|5r0 z0BYr;nyx(}IKqckP>7%e3QnPx@sB3AV7|bi}g#n{&mH^;@0~ZMrPSFQcs|f~HBm@~#w$Smm6$GRLGw zg5$&%$8S@<8X0WR3kJ45fzr8jFR^?XXJ@<>L>8v1pE1m-{{U!Jz|)wMFsN|aRDw4O zr9caN^XhTXb4@DyH)Kt|yq{IKGT&(|tBEt3nhe61GRq_b?tSi@fl(kV3k!G(+QeP2 zw=5;SnOfa5BqU$WRy!t(B+T=^F3b*LPXc%Od6J?@-Z@ee6yz#Ki{o<02v%SMka>#~ zo^a;@(JqfqhrFDEJvp@@+U8@!+(n|9Go`AduBTUtWUEJ&$ZLb48pIXm2^O&@&kok@ zYDwB$YQAeh@RU3$+BX*F2Q$e1`#y^@dU)w_^%;FMaYq`BVtvaoH*L4t``-jX8S!;l zce%i~%L`y;e#l%uM+)Y7rf)t|L}XaeAj~D3yAm4`>_*(kV{iq=_@u_tXsxYlz~+{l z?Nfz#YCh1oZ-aP!@}459shQS#x<{y(NEv)3nnuzJ0NxZNF65GN3=MeN(@O*O202>S zHqWkAkBdE+cvFGnqFT-){ixZEN<&YUQCB>n2CXdY;Y(;ksjd@XExG4hu@?=jlAJow zTj306jz-%_;F3N{Z#wJ?CChTksd##$ifd{6uo{ML_A!Pi2+Ih)p_-ouE&!kw49pzON{{XZpR4u+SW2Hz0 zYq+}Y*7!A3w@7Y9($WcamlRF9`TUl);VuZzyCLIMs?5%1l$oM;cF;pgr;~weGKaPK z+Q-uxw9^escSb?|7dA~3^fM7Hf_(Ts<-hwj_Pxw|KH+cKS$wpaw2-q$6tX}hf}IZL z%m{GWwgj!MZ!8zY;%MTRMjd2rWenfZU2?x@teY^VX!DG_Hq0yPm%fmZ3}FtN6bx7m z4PY(P%a$vm1%R}^M!mM;qIj3v1mrn9xo;0s!<9<$>1vB=mYqL%1pujI%TejbVz&eS zN_U}*rt-9dcDDF73;7L*LY^L zHPDrjNbM4#l|k8Z+mmYG>Wvt#NaJeJ)^s8{{Z!+mcx{+&~V0IR$4mA zR`$*8r;B?T$a4xjvog+eeh|$2p!GAx5=sHDQd3S) zSd-x)je~gtF_t0>fVnqm$18N^IGuI|c&x5jS_x!{_1v)PTb4H&8V(nh8aZ6TAJ4r_ zWLX_tv;w9y4uI+Ba0u!AF^f?%8tQWH_HLSIMY*|0tyIdXDP@XhT8fDX(3+IR>&nC% z`QLAr6`(%DvI4qUPM>R<;tP*Njv?ULABg5!YQK8|C7MYm@Lh`Bj%Uvg2BZjpaIY_N z!>;VRkFudG;G?0;IoSh6VDz2xN7=atddg^Q1ls| zq+n9|TWgyiL(j_uSyVZ;QzNjf(7~V>+{6vYF2Fps|^)r!KgmW6dM!N{)!qb!7KETn)` zj)Zx6dS46$s>U+CM^yTIy=p+*D*!G%F*12T07esfm-l*+tQ8=VtfS%`2hY(w64a6_?!s?%89LVr;*6Ao*?j;GA%$LKm96h|#5p%Nes77QvMIA1pxN zc}Hji39VH$O(~k4*b+csEx%ja4Z=|7-J}ZEpHkE)xHebhZ|nGNfJg%ZB#8@1QGG zm$12TZ*MK{xWU|1FT4cSNLeFSf@E~vl>YLc)0aFBmZ1rR*_2gkBCJ3OHr6~M{&-*y zM23L~MhU2OG%l|b5p+8S->*zLzNvsrb6*0<3i9xob%jNxb7&~!ly6S;Eq0>v4 z0(vf-_7O)tnCF^XT8!<0F1By?N?dww$JjLV?=rr9?I8aEm!Bc} zu2Jno-?fe^H!2f7%tv+zyMKJ1_dPlC100=eiPXNl*R$-Z`y77YqT>L=99mR@FWrK4 zgMLH}$-kKc8Fto6=^g-TcC4{oCXv?W{mfu*dm9^U2cb9)tWrCZm}V5q-H<8oYeyR0 z&(C4M;6EGZ0h!gQ4^g+Pu-75)_`#(&S3AbxnQqbd`$S>YKbmMC`7Oc>hbhPL^0 zKU-ma$~VlX5XO-cDM_RYVADf!4NXFTqR15NEw$%>Me^R-?4HvwokqFjmf%?z^r7=w7lQNoQVN6_0FI8S^+8)w8I2^0ZVE`^(lY|8 zZW`aYq}=1v>Kt3O~w|^z{#Eiw5+=9$`Hu%E}#_jGkYppa@2X`BDO05rT`3DZ<6`4;FW@%3iG@bnx zR|$FP;c}ofsHj4Th`N$MuogGQsikRt_t<{hhSF`&ITd!w*ri_N1 z0%(0X`Y28#>|(dsu9m6zlD3kft2dwB;m>5Hc_`>m0`jT`@pq0#J&OThYn*26{@NPC zT^nk;D|P*Y_7)aTASCta^~%@O{i4+I9%oZDLOj}zANJD9W2L7KNhrGC!Vm$n?Q`eM z_Kvak7}nVjxbEy} zLyKJO{{TFYX{qZeIHr;sN<$S(6_ON|9~HpZS@tW}dyhOGM)8JE7Eo)1Q~a zD#4j>y!rNjTUndtd_9*<_(YNeT1O;uFSB(h9z&CSj)YZwJIQuFgoE8n^1{pi_M z9M#nT+{T`Q_@-$Z!CbC}hf6-8`g+e$LMJhDtmquk$M9!h9_zPNo@J zI*M=~x=ERfM$9ylwjd3ye?7dh$)B{ZEg4>t4#NzlmlDzDq@v-N(G@$PBxm6q$=msV zA&z<0J;uq(>P4f8gJ=uW<;N?gN|XquCQ__!G+Wn@I}2Z*FD!2C=*Ff)7#|~ zlcSBY?6#9f(HD$sDRN4wv+5^V>&9mp5Jy)N4(*xAZy34L&esJ&W5{iX(@!jWhbbr1vPi*mC@poE z(N%EHe@=5us+~htt4NCXTW@_jcd*=>ZQ&RmH@k5eR5ZsKXz6QZaSvyFJMSqbVKf<3 zbgQN_s!0}f<{Ib=0zA5d>4%D7M~qNb>NG=s=%1fetT@Yua>mWQ-h!;pPRpv$DOmRZ z0Ed`9mg|bUn9GaV%Bn*kcXuZWdb_dNGTfdDD%H%g>XWn0PF8rQVgo2Es_NVH^4wpN z$ESYH%_BV(vpZ=lcp#3UL~##f+(neNOp{F2D<6hppfU6&{e1rbTr2c$BI_!#t1Opg z(BVVMCS>DRZ zgbiKXDW>{Zn+EXPewzz{icF;B6|tIjhj12{$vacwEU57mk4=|6GG?`GW6>vg$r&&} zkvLL;1Z#0|e;Xg(u&CWwDIj}VU5=*xXwX!=&Ta{yic0CE%I7sim??{dknQldRkimd zZf$H_8yOUNR7hS6tl?_@$U9_@f~L+g^FpliREg=UVvwPsU~DW%J6KzOn7&Cy3s);e zEy(u2=B~N#Y!!8RGB#(Q=Tp z#Fg^a=eZVloyv&DSROa1rHe=^BXMmJ+hezg;4@Abz~Hy{uXB$4khfKJEV&IGOLs83 zN+fw6bP%e?7~B>+n+xy!v3PdW#8}+!Q>t8onu93OOYapAG+o<8-4)rDej5t|Zd~>U zo+>(!@>)W$X$&Ab){X4njcW2P)%cqug1dqb+F$&MNU&*4D1meA?YL%OHD$g$l?78|hTEUmW{6 zNx=D}wNuGaNt#nIX&xy=auh79Yc2HKRe(DiZ;phIYu&hYTv4QZ0XIY_ZXxXNjktR_ zi!BvxPgzjQ5btT=*CQ6PkoLBdZhW@-;<@A6$33~LD90q-<6%6LU$O>A*#{6;8ELbM z%SC_q zN_u1uPZcg^9vTo<`h;(Lo^51*5~$oxxg{Qo=xA=3v9wT+DqC=JOD*}Zz#MM z*;i(Ba3mR}T`4itLmZLHRFfmE^&8)0Cd7ft#~nxL&5W*ReH(=wE9G})93R?;Wi?qv zLsL=HGO_MjAsn>k<3yyey14^w?A-ST_>#gJ0RcN?5`S$(`zKRH#gnZZ`HI7zWOB6) zLnTutri7F-GVCM_0Ds(M)(@}m&eJw`gsaBvb17lo0fkNY`xbAI(_ z;L19zk0F}1niCX~sw{fJk!{V$ug}vx;Z2a9FD8A*>KONgv#TC)2g)PU64te zym_;UDkz|(6-gLUp}=h_q@9<<2tOg`d}Vg9#=_64=pM~%)3#oNqGy@rzp=79-BG~P z<}H5>tbGqO5!D6XH6Tv^;BO?Y`QH9lm3xcE&K?cNFi{s0=u8qa76j!H>?T`mB*z`cGZ*!}O z(by4Urr@7j-<|MxBOo@tn!3j?e-SaA*r>gSuKxhgzy~N6ft2oL6Vs%Ktfos`3l#)^ zp7^j4bda{fdbI*dIPBMD9enMzu&#b-HVy)9JxX7>l3N=Pt`hn@%K_8)e6ZnG=Ja05 z>j08KZNCS+y)4K}TJ{5R^7O+Ii$iV@DyC|82o9){KN_N?_AD5mi4#v`f$h25XoE|gDiq; zyfS^@H)Gf5w>%m|rj@T8>K08Uz_B*4YkGA506Y+KmC3TyJvuR`kXga9k*He#0M`Ei z#{}||aZKi}f~6f~Ugkrw19f4`pY(BM*9vXEsf@B1Ucf0q;l9MLsq^~phT2HAQ8}g5 z-oX+u?7Kbj7XJXB8<^ky&XXRSvX~4X72rLj#;kjX>bXa?I7)V{#g=y$&vOz{089S> zeV^;s&m66JKWKRMUc<77{7B1uf@KMA@B{^o&EtTZu($8N-k+v0msnjfT~TP0Mx}@d z)ou)Q!&B@(dB?-osKS~V3Beqc`kD}cq6RvS>kj0f_@4G0zb?3}o`|#2IZ2k1RShH% z-ELz>CD?V;K-K&P2p7sO@bjXgYH@JNgb-a0gT~$~09_P)I@0B>)>2 zEKgT`XfJL3j z=qLGZX-$@1O$bVEbpQz-qt65|kfD>vCVWT6k5NoQF>->@#)99&3;+lRIOHxd`%!q_ z9JjKpuPJ`_zRt5Wo~OEuX=->7wwv=&sneF`*!G^qL%UY#5BQI*{>#Jrc|Oe?aS!r# zegpShVZ&9iaaMZ-)wv<7$|Iefsj4QLnmFUQVu>jXbv2j~eaIWw9DNE{L1Al6A55>D z#WTCWWMM5C@;>aR9jVpjd8Te@cz1^>_#cPZqg9Gb!f7OuEkp-8q}5Qw^{^ZGPz~|R zh7%B}99(?*f2FfgsWQ9!L%U(GWxV5*)cGc6+XmuK5>GZLOyUEPmUc9cfo9!Eig*ZR< zZBGmtv-(PX6%xP=1rtfAD2@oEQqou+x^5JZIShH0dpiX4lLWvr_~iUZKce<>ds8eL zcD7h|Ka6-s%D+|1{?t5Y#C@wp`$LErthF;Qy3$0&qo#>hPjHbEL1$|nh1l+S+aAxe z;L~WC-9_{B_n+l20o!wGwdcIl;B+2U^gq%xwt-SnDMC$?y%rGd4A{01NI-t%&F$kclL5ap~l#ib>elv4dznzp7`GrfXF;6Q z=~FE%>Zv0Ec2;eU!*O$AbMwZRc6Oc7lQTnykruHHZlXCWPa$i(!LOQ+uZKLWo~&j< ze8pr{_qTaF_waIUT8V8py@9sp=Z=#hf(V0j?G5t9E?n~JCXl~UOOF;!rWG6)6+T}j zQf3e-otQ*|Kn;T%>j0e_0bot<^0_XYwX~3F1FYJDudIwUXbw%we$sZyv2=cM#_+t>BH;)musA(sK=LW(;8v3cN-A^Mixdji1 z`rtlj>n`CeQ0pA}3?%!CeV6c5vXW{+R%7su?Tiv@fWsGeMeNJnXH$#lrsy&cbVUhr z7t0tV)bBZ7r%BnYg`uoGC-BE*<#IXt<1>ouMr$2HX`SWX`kpJ41L5U-U#FL8!sYgs zoN60RIPz4y@`v3g1O*Cu1CH*U`-1tmYiT=|iWn;4*{=x4ndL81&sG?#d^PHyDgGw`_fzq^1|79PG1>{Bm&B-uqMO{ett(DT33=u>b>k#)`pG( zoutWZmKGM+1>D=n`eQEhyDL)#aE@}2LT-8PZMgKsLP{#(8%9cD#Q92AWN%Cn);DDm zXuZPU;`1OI6Xk4ny_}jMtPY#u=vN!sXr+FDjX22X+^L!022GS^c3j<{qga|oRFKG^ zfO#mso1LyYlaHdwrWLq53+1hIiKpV$%l3Dli0ACur!L9!N;>Isqu(@jZ6FaNi>Qcf zN|SXba0$0t&qJX^8H?w(dD4#}G<+kwbe9M890gEg-AZ4;XE=?g7n5YojIV%JrU z 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

    w-McG&o6#%O?6*oya?V1|ZHtJrX7n*GLqA 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 Y5ye)=Gg${c?wn*EwYFw^jh~nQ2ks(ILjV8( diff --git a/addons/website/static/src/js/summernote.js b/addons/website/static/src/js/summernote.js new file mode 100644 index 00000000000..2260da97e09 --- /dev/null +++ b/addons/website/static/src/js/summernote.js @@ -0,0 +1,2160 @@ +(function () { + 'use strict'; + + var website = openerp.website; + var _t = openerp._t; + +define(['summernote/editing/Editor', 'summernote/summernote'], function (Editor) { + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* Summernote Lib (neek hack to make accessible: method and object) */ + + var agent = $.summernote.core.agent; + var dom = $.summernote.core.dom; + var range = $.summernote.core.range; + var list = $.summernote.core.list; + var key = $.summernote.core.key; + var eventHandler = $.summernote.eventHandler; + var editor = eventHandler.editor; + var renderer = $.summernote.renderer; + var options = $.summernote.options; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* Add method to Summernote*/ + + dom.hasContentAfter = function (node) { + var next; + while (node.nextSibling) { + next = node.nextSibling; + if (next.tagName || next.textContent.match(/\S|\u00A0/) || dom.isBR(next)) return next; + node = next; + } + }; + dom.hasContentBefore = function (node) { + var prev; + while (node.previousSibling) { + prev = node.previousSibling; + if (prev.tagName || prev.textContent.match(/\S|\u00A0/) || dom.isBR(prev)) return prev; + node = prev; + } + }; + dom.ancestorHaveNextSibling = function (node, pred) { + pred = pred || dom.hasContentAfter; + while (!node.nextSibling || !pred(node)) { node = node.parentNode; } + return node; + }; + dom.ancestorHavePreviousSibling = function (node, pred) { + pred = pred || dom.hasContentBefore; + while (!node.previousSibling || !pred(node)) { node = node.parentNode; } + return node; + }; + dom.nextElementSibling = function (node) { + while (node && node.nextSibling) { + node = node.nextSibling; + if (node.tagName) { + break; + } + } + return node; + }; + dom.previousElementSibling = function (node) { + while (node && node.previousSibling) { + node = node.previousSibling; + if (node.tagName) { + break; + } + } + return node; + }; + dom.lastChild = function (node) { + while (node.lastChild) { node = node.lastChild; } + return node; + }; + dom.firstChild = function (node) { + while (node.firstChild) { node = node.firstChild; } + return node; + }; + dom.lastElementChild = function (node, deep) { + node = deep ? dom.lastChild(node) : node.lastChild; + return !node || node.tagName ? node : dom.previousElementSibling(node); + }; + dom.firstElementChild = function (node, deep) { + node = deep ? dom.firstChild(node) : node.firstChild; + return !node || node.tagName ? node : dom.nextElementSibling(node); + }; + dom.isEqual = function (prev, cur) { + if (prev.tagName !== cur.tagName) { + return false; + } + if ((prev.attributes ? prev.attributes.length : 0) !== (cur.attributes ? cur.attributes.length : 0)) { + return false; + } + + function strip(text) { + return text && text.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' '); + } + var att, att2; + loop_prev: + for(var a in prev.attributes) { + att = prev.attributes[a]; + for(var b in cur.attributes) { + att2 = cur.attributes[b]; + if (att.name === att2.name) { + if (strip(att.value) != strip(att2.value)) return false; + continue loop_prev; + } + } + return false; + } + return true; + }; + /** + * Checks that the node only has a @style, not e.g. @class or whatever + */ + dom.hasOnlyStyle = function (node) { + for (var i = 0; i < node.attributes.length; i++) { + var attr = node.attributes[i]; + if (attr.attributeName !== 'style') { + return false; + } + } + return true; + }; + dom.hasProgrammaticStyle = function (node) { + var styles = ["float", "display", "position", "top", "left", "right", "bottom"]; + for (var i = 0; i < node.style.length; i++) { + var style = node.style[i]; + if (styles.indexOf(style) !== -1) { + return true; + } + } + return false; + }; + dom.mergeFilter = function (prev, cur, parent) { + // merge text nodes + if (prev && (dom.isText(prev) || (dom.pasteTextApply.indexOf(prev.tagName) !== -1 && prev !== cur.parentNode)) && dom.isText(cur)) { + return true; + } + if (prev && prev.tagName === "P" && dom.isText(cur)) { + return true; + } + if (prev && dom.isText(cur) && !cur.textContent.match(/\S|\u00A0/) && (dom.isText(prev) || prev.textContent.match(/\S|\u00A0/))) { + return true; + } + if (prev && !dom.isBR(prev) && dom.isEqual(prev, cur) && + ((prev.tagName && window.getComputedStyle(prev).display === "inline" && + cur.tagName && window.getComputedStyle(cur).display === "inline"))) { + return true; + } + if (dom.isEqual(parent, cur) && + ((parent.tagName && window.getComputedStyle(parent).display === "inline" && + cur.tagName && window.getComputedStyle(cur).display === "inline"))) { + return true; + } + if (parent && cur.tagName === "FONT" && (!cur.firstChild || (!cur.attributes.getNamedItem('style') && !cur.className.length))) { + return true; + } + // On backspace, webkit browsers create a with a bunch of + // inline styles "remembering" where they come from. + // chances are we had e.g. + //

    foo

    + //

    bar

    + // merged the lines getting this in webkit + //

    foobar

    + if (parent && cur.tagName === "SPAN" && dom.hasOnlyStyle(cur) && !dom.hasProgrammaticStyle(cur)) { + return true; + } + }; + dom.doMerge = function (prev, cur) { + if (prev.tagName) { + if (prev.childNodes.length && !prev.textContent.match(/\S/) && dom.firstElementChild(prev) && dom.isBR(dom.firstElementChild(prev))) { + prev.removeChild(dom.firstElementChild(prev)); + } + if (cur.tagName) { + while (cur.firstChild) { + prev.appendChild(cur.firstChild); + } + cur.parentNode.removeChild(cur); + } else { + prev.appendChild(cur); + } + } else { + if (cur.tagName) { + var deep = cur; + while (deep.tagName && deep.firstChild) {deep = deep.firstChild;} + prev.appendData(deep.textContent); + cur.parentNode.removeChild(cur); + } else { + prev.appendData(cur.textContent); + cur.parentNode.removeChild(cur); + } + } + }; + dom.merge = function (node, begin, so, end, eo, mergeFilter, all) { + mergeFilter = mergeFilter || dom.mergeFilter; + var _merged = false; + var add = all || false; + + if (!begin) { + begin = node; + while(begin.firstChild) {begin = begin.firstChild;} + so = 0; + } else if (begin.tagName && begin.childNodes[so]) { + begin = begin.childNodes[so]; + so = 0; + } + if (!end) { + end = node; + while(end.lastChild) {end = end.lastChild;} + eo = end.textContent.length-1; + } else if (end.tagName) { + + } else if (end.tagName && end.childNodes[so]) { + end = end.childNodes[so]; + so = 0; + } + + begin = dom.firstChild(begin); + if (dom.isText(begin) && so > begin.textContent.length) { + so = 0; + } + end = dom.firstChild(end); + if (dom.isText(end) && eo > end.textContent.length) { + eo = 0; + } + + function __merge (node) { + var merged = false; + var prev; + for (var k=0; k 1 && dom.isText(cur) && !cur.textContent.match(/\S|\u00A0/)) { + removed = true; + if (cur === begin) { + so = 0; + begin = dom.lastChild(dom.hasContentBefore(dom.ancestorHavePreviousSibling(cur))); + } + if (cur === end) { + eo = 1; + end = dom.firstChild(dom.hasContentAfter(dom.ancestorHaveNextSibling(cur))); + if (dom.isText(end)) { + eo = end.textContent.length; + } + } + cur.parentNode.removeChild(cur); + begin = dom.lastChild(begin); + end = dom.lastChild(end); + k--; + continue; + } + + // convert HTML space + if (dom.isText(cur)) { + var text; + var exp1 = /[\t\n\r ]+/g; + var exp2 = /(?!([ ]|\u00A0)|^)\u00A0(?!([ ]|\u00A0)|$)/g; + if (cur === begin) { + var temp = cur.textContent.substr(0, so); + var _temp = temp.replace(exp1, ' ').replace(exp2, ' '); + so -= temp.length - _temp.length; + } + if (cur === end) { + var temp = cur.textContent.substr(0, eo); + var _temp = temp.replace(exp1, ' ').replace(exp2, ' '); + eo -= temp.length - _temp.length; + } + var text = cur.textContent.replace(exp1, ' ').replace(exp2, ' '); + removed = removed || cur.textContent.length !== text.length; + cur.textContent = text; + } + } + })(node); + + return { + removed: removed, + sc: begin, + ec: end, + so: !dom.isBR(begin) && so > 0 ? so : 0, + eo: eo + }; + }; + dom.node = function (node) { + return node.tagName ? node : node.parentNode; + }; + dom.pasteTextApply = "h1 h2 h3 h4 h5 h6 li p".split(" "); + dom.pasteTextClose = "h1 h2 h3 h4 h5 h6 p b bold i u code sup strong small li pre".split(" "); + dom.pasteText = function (textNode, offset, text, isOnlyText) { + // clean the node + var node = dom.node(textNode); + var data = dom.merge(node.parentNode, textNode, offset, textNode, offset, null, true); + data = dom.removeSpace(node.parentNode, data.sc, data.so, data.ec, data.eo); + // Break the text node up + if (data.sc.tagName) { + if (node === data.sc.parentNode) { + data.sc = node.insertBefore(document.createTextNode(" "), data.sc); + } else if (node.firstChild && !dom.isBR(dom.firstChild(node))) { + data.sc = node.insertBefore(document.createTextNode(" "), dom.firstChild(node)); + } else { + data.sc = node.appendChild(document.createTextNode(" ")); + } + data.so = 0; + } + data.sc.splitText(data.so); + var first = data.sc; + var last = data.sc.nextSibling; + + isOnlyText = isOnlyText || !text.match('\n'); + + if (!isOnlyText) { + // tag to close and open + var tag = node.tagName.toLowerCase(); + if(dom.pasteTextApply.indexOf(tag) === -1) { + text = text.split('\n').join("
    "); + } else { + text = "<"+tag+">"+text.split('\n').join("<"+tag+">")+""; + } + + var $text = $(text); + + // split parent node and insert text + if(dom.pasteTextClose.indexOf(tag) !== -1) { + var $next = $(node).clone().empty(); + $next.append( last ); + $(node).after( $next ); + $(node).after( $text ); + } else { + $(data.sc).after( $text ); + } + } else { + first.appendData( text ); + } + + // clean the dom content + data = dom.merge(node.parentNode.parentNode, last, 0, last, 0, null, true); + data = dom.removeSpace(node.parentNode.parentNode, data.sc, data.so, data.ec, data.eo); + + // move caret + range.create(data.sc, data.so, data.ec, data.eo).select(); + }; + dom.removeBetween = function (sc, so, ec, eo, towrite) { + if (ec.tagName && ec.childNodes[eo]) { + ec = ec.childNodes[eo]; + eo = 0; + } + if (sc.tagName && sc.childNodes[so]) { + sc = sc.childNodes[so]; + so = 0; + if (!dom.hasContentBefore(sc)) { + sc.parentNode.insertBefore(document.createTextNode('\u00A0'), sc); + if (sc === ec) { + eo++; + } + } + } + if (!eo && sc !== ec) { + ec = dom.lastChild(dom.hasContentBefore(dom.ancestorHavePreviousSibling(ec))); + eo = ec.textContent.length; + } + + var ancestor = dom.commonAncestor(sc.tagName ? sc.parentNode : sc, ec.tagName ? ec.parentNode : ec); + + if (!dom.isContentEditable(ancestor)) { + return { + sc: sc, + so: so, + ec: sc, + eo: eo + }; + } + + if (ancestor.tagName) { + var ancestor_sc = sc; + var ancestor_ec = ec; + while (ancestor !== ancestor_sc && ancestor !== ancestor_sc.parentNode) { ancestor_sc = ancestor_sc.parentNode; } + while (ancestor !== ancestor_ec && ancestor !== ancestor_ec.parentNode) { ancestor_ec = ancestor_ec.parentNode; } + + + var node = dom.node(sc); + var before = sc; + if (so) { + dom.splitTree(ancestor_sc, {'node': sc, 'offset': so}); + } else { + before = dom.hasContentBefore(dom.ancestorHavePreviousSibling(sc)); + } + + var after; + if (ec.textContent.slice(eo, Infinity).match(/\S|\u00A0/)) { + after = dom.splitTree(ancestor_ec, {'node': ec, 'offset': eo}); + } else { + after = dom.hasContentAfter(dom.ancestorHaveNextSibling(ec)); + } + + var nodes = dom.listBetween(sc, ec); + + var ancestor_first_last = function (node) { + return node === before || node === after; + }; + + for (var i=0; i")[0]; + node.appendChild(br); + sc = br; + so = 0; + } + dom.autoMerge(sc, false); + + } else { + + var text = ancestor.textContent; + ancestor.textContent = text.slice(0, so) + text.slice(eo, Infinity).replace(/^[ \t\n\r]+/, '\u00A0'); + + } + + eo = so; + if(!dom.isBR(sc) && !sc.textContent.match(/\S|\u00A0/)) { + ancestor = dom.node(sc); + sc = document.createTextNode('\u00A0'); + $(ancestor).prepend(sc); + so = 0; + eo = 1; + } + return { + sc: sc, + so: so, + ec: sc, + eo: eo + }; + }; + dom.indent = function (node) { + var margin = parseFloat(node.style.marginLeft || 0)+1.5; + node.style.marginLeft = margin + "em"; + return margin; + }; + dom.outdent = function (node) { + var margin = parseFloat(node.style.marginLeft || 0)-1.5; + node.style.marginLeft = margin > 0 ? margin + "em" : ""; + return margin; + }; + dom.scrollIntoViewIfNeeded = function (node) { + var node = dom.node(node); + + var $span; + if (dom.isBR(node)) { + $span = $('').text('\u00A0'); + $(node).after($span); + node = $span[0]; + } + + if (node.scrollIntoViewIfNeeded) { + node.scrollIntoViewIfNeeded(false); + } else { + var offsetParent = node.offsetParent; + while (offsetParent) { + var elY = 0; + var elH = node.offsetHeight; + var parent = node; + + while (offsetParent && parent) { + elY += node.offsetTop; + + // get if a parent have a scrollbar + parent = node.parentNode; + while (parent != offsetParent && + (parent.tagName === "BODY" || ["auto", "scroll"].indexOf(window.getComputedStyle(parent).overflowY) === -1)) { + parent = parent.parentNode; + } + node = parent; + + if (parent !== offsetParent) { + elY -= parent.offsetTop; + parent = null; + } + + offsetParent = node.offsetParent; + } + + if ((node.tagName === "BODY" || ["auto", "scroll"].indexOf(window.getComputedStyle(node).overflowY) !== -1) && + (node.scrollTop + node.clientHeight) < (elY + elH)) { + node.scrollTop = (elY + elH) - node.clientHeight; + } + } + } + + if ($span) { + $span.remove(); + } + + return; + }; + dom.moveTo = function (node, target, before) { + var nodes = []; + while (node.firstChild) { + nodes.push(node.firstChild); + if (before) { + target.insertBefore(node.firstChild, before); + } else { + target.appendChild(node.firstChild); + } + } + node.parentNode.removeChild(node); + return nodes; + }; + dom.isMergable = function (node) { + return node.tagName && "h1 h2 h3 h4 h5 h6 p b bold i u code sup strong small li a ul ol font".indexOf(node.tagName.toLowerCase()) !== -1; + }; + dom.isSplitable = function (node) { + return node.tagName && "h1 h2 h3 h4 h5 h6 p b bold i u code sup strong small li a font".indexOf(node.tagName.toLowerCase()) !== -1; + }; + dom.isRemovableEmptyNode = function (node) { + return "h1 h2 h3 h4 h5 h6 p b bold i u code sup strong small li a ul ol font span br".indexOf(node.tagName.toLowerCase()) !== -1; + }; + dom.isForbiddenNode = function (node) { + return node.tagName === "BR" || $(node).is(".fa, img"); + }; + dom.listBetween = function (sc, ec) { + var nodes = []; + var ancestor = dom.commonAncestor(sc, ec); + dom.walkPoint({'node': sc, 'offset': 0}, {'node': ec, 'offset': 0}, function (point) { + if (ancestor !== point.node || ancestor === sc || ancestor === ec) { + nodes.push(point.node); + } + }); + return list.unique(nodes); + }; + dom.isNotBreakable = function (node, sc, so, ec, eo) { + // avoid triple click => crappy dom + return false; node === ec && !dom.isText(ec) && !dom.isBR(dom.firstChild(ec)); + }; + + dom.isContentEditable = function (node) { + return $(node).closest('[contenteditable]').is('[contenteditable="true"]'); + }; + + + dom.isFont = function (node) { + var nodeName = node && node.nodeName.toUpperCase(); + return node && (nodeName === "FONT" || + (nodeName === "SPAN" && + (node.className.match(/(^|\s)(text|bg)-/i) || + (node.attributes.style && node.attributes.style.value.match(/(^|\s)(color|background-color):/i)))) ); + }; + dom.isVisibleText = function (textNode) { + return !!textNode.textContent.match(/\S|\u00A0/); + }; + /** + * order the style of the node to compare 2 nodes and remove attribute if empty + * + * @param {Node} node + * @return {String} className + */ + dom.orderStyle = function (node) { + var style = node.getAttribute('style'); + if (!style) return null; + style = style.replace(/[\s\n\r]+/, ' ').replace(/^ ?;? ?| ?;? ?$/g, '').replace(/ ?; ?/g, ';'); + if (!style.length) { + node.removeAttribute("style"); + return null; + } + style = style.split(";"); + style.sort(); + style = style.join("; ")+";"; + node.setAttribute('style', style); + return style; + }; + /** + * order the class of the node to compare 2 nodes and remove attribute if empty + * + * @param {Node} node + * @return {String} className + */ + dom.orderClass = function (node) { + var className = node.getAttribute('class'); + if (!className) return null; + className = className.replace(/[\s\n\r]+/, ' ').replace(/^ | $/g, '').replace(/ +/g, ' '); + if (!className.length) { + node.removeAttribute("class"); + return null; + } + className = className.split(" "); + className.sort(); + className = className.join(" "); + node.setAttribute('class', className); + return className; + }; + /** + * return the current node (if text node, return parentNode) + * + * @param {Node} node + * @return {Node} node + */ + dom.node = function (node) { + return dom.isText(node) ? node.parentNode : node; + }; + /** + * move all childNode to an other node + * + * @param {Node} from + * @param {Node} to + */ + dom.moveContent = function (from, to) { + if (from === to) { + return; + } + if (from.parentNode === to) { + while (from.lastChild) { + insertAfter(from.lastChild, from); + } + } else { + while (from.firstChild && from.firstChild != to) { + to.appendChild(from.firstChild); + } + } + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + + range.WrappedRange.prototype.reRange = function (keep_end, isNotBreakable) { + var sc = this.sc; + var so = this.so; + var ec = this.ec; + var eo = this.eo; + isNotBreakable = isNotBreakable || dom.isNotBreakable; + + // search the first snippet editable node + var start = keep_end ? ec : sc; + while (start) { + if (isNotBreakable(start, sc, so, ec, eo)) { + break; + } + start = start.parentNode; + } + + // check if the end caret have the same node + var lastFilterEnd; + var end = keep_end ? sc : ec; + while (end) { + if (start === end) { + break; + } + if (isNotBreakable(end, sc, so, ec, eo)) { + lastFilterEnd = end; + } + end = end.parentNode; + } + if (lastFilterEnd) { + end = lastFilterEnd; + } + if (!end) { + end = document.getElementsByTagName('body')[0]; + } + + // if same node, keep range + if (start === end || !start) { + return range.create(sc, so, ec, eo); + } + + // reduce or extend the range to don't break a isNotBreakable area + if ($.contains(start, end)) { + + if (keep_end) { + sc = dom.lastChild(dom.hasContentBefore(dom.ancestorHavePreviousSibling(end))); + so = sc.textContent.length; + } else if (!eo) { + ec = dom.lastChild(dom.hasContentBefore(dom.ancestorHavePreviousSibling(end))); + eo = ec.textContent.length; + } else { + ec = dom.firstChild(dom.hasContentAfter(dom.ancestorHaveNextSibling(end))); + eo = 0; + } + } else { + + if (keep_end) { + sc = dom.firstChild(start); + so = 0; + } else { + ec = dom.lastChild(start); + eo = ec.textContent.length; + } + } + + return new range.WrappedRange(sc, so, ec, eo); + }; + range.WrappedRange.prototype.deleteContents = function (towrite) { + var prevBP = dom.removeBetween(this.sc, this.so, this.ec, this.eo, towrite); + + return new range.WrappedRange( + prevBP.sc, + prevBP.so, + prevBP.ec, + prevBP.eo + ); + }; + range.WrappedRange.prototype.clean = function (mergeFilter, all) { + var node = dom.node(this.sc === this.ec ? this.sc : this.commonAncestor()); + if (node.childNodes.length <=1) { + return this; + } + + var merge = dom.merge(node, this.sc, this.so, this.ec, this.eo, mergeFilter, all); + var rem = dom.removeSpace(node.parentNode, merge.sc, merge.so, merge.ec, merge.eo); + + if (merge.merged || rem.removed) { + return range.create(rem.sc, rem.so, rem.ec, rem.eo); + } + return this; + }; + range.WrappedRange.prototype.remove = function (mergeFilter) { + }; + range.WrappedRange.prototype.isOnCellFirst = function () { + var node = dom.ancestor(this.sc, function (node) {return ["LI", "DIV", "TD","TH"].indexOf(node.tagName) !== -1;}); + return node && ["TD","TH"].indexOf(node.tagName) !== -1; + }; + range.WrappedRange.prototype.isContentEditable = function () { + return dom.isContentEditable(this.sc) && (this.sc === this.ec || dom.isContentEditable(this.ec)); + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + + renderer.tplButtonInfo.fontsize = function (lang, options) { + var items = options.fontSizes.reduce(function (memo, v) { + return memo + '
    '; + }, ''); + + var sLabel = '11'; + return renderer.getTemplate().button(sLabel, { + title: lang.font.size, + dropdown: '' + }); + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* add some text commands */ + + key.nameFromCode[46] = 'DELETE'; + key.nameFromCode[27] = 'ESCAPE'; + + options.keyMap.pc['BACKSPACE'] = 'backspace'; + options.keyMap.pc['DELETE'] = 'delete'; + options.keyMap.pc['ENTER'] = 'enter'; + options.keyMap.pc['ESCAPE'] = 'cancel'; + options.keyMap.mac['SHIFT+TAB'] = 'untab'; + + options.keyMap.mac['BACKSPACE'] = 'backspace'; + options.keyMap.mac['CMD+BACKSPACE'] = 'delete'; + options.keyMap.mac['SHIFT+BACKSPACE'] = 'delete'; + options.keyMap.mac['ENTER'] = 'enter'; + options.keyMap.mac['ESCAPE'] = 'cancel'; + + $.summernote.pluginEvents.insertTable = function (event, editor, layoutInfo, sDim) { + var $editable = layoutInfo.editable(); + var dimension = sDim.split('x'); + var rng = range.create(); + rng = rng.deleteContents(); + + var isBodyContainer = dom.isBodyContainer; + dom.isBodyContainer = dom.isNotBreakable; + rng.insertNode(editor.table.createTable(dimension[0], dimension[1])); + dom.isBodyContainer = isBodyContainer; + + editor.afterCommand($editable); + }; + $.summernote.pluginEvents.tab = function (event, editor, layoutInfo, outdent) { + var $editable = layoutInfo.editable(); + var r = range.create(); + var outdent = outdent || false; + + if (r.isCollapsed()) { + if (r.isOnCell() && r.isOnCellFirst()) { + var td = dom.ancestor(r.sc, dom.isCell); + if (!outdent && !dom.nextElementSibling(td) && !dom.nextElementSibling(td.parentNode)) { + range.create(td.lastChild, td.lastChild.textContent.length, td.lastChild, td.lastChild.textContent.length).select(); + $.summernote.pluginEvents.enter(event, editor, layoutInfo); + } else if (outdent && !dom.previousElementSibling(td) && !$(td.parentNode).text().match(/\S/)) { + $.summernote.pluginEvents.backspace(event, editor, layoutInfo); + } else { + $editable.data('NoteHistory').splitNext(); + editor.table.tab(r, outdent); + } + event.preventDefault(); + return false; + } + + if (!r.sc.textContent.slice(0,r.so).match(/\S/) && r.isOnList()) { + if (outdent) { + $.summernote.pluginEvents.outdent(event, editor, layoutInfo); + } else { + $.summernote.pluginEvents.indent(event, editor, layoutInfo); + } + } else { + if (!outdent){ + var next = r.sc.splitText(r.so); + editor.typing.insertTab($editable, r, options.tabsize); + r = range.create(next, 0, next, 0); + r = dom.merge(r.sc.parentNode, r.sc, r.so, r.ec, r.eo, null, true); + range.create(r.sc, r.so, r.ec, r.eo).select(); + } else { + r = dom.merge(r.sc.parentNode, r.sc, r.so, r.ec, r.eo, null, true); + r = range.create(r.sc, r.so, r.ec, r.eo); + var next = r.sc.splitText(r.so); + r.sc.textContent = r.sc.textContent.replace(/(\u00A0)+$/g, ''); + next.textContent = next.textContent.replace(/^(\u00A0)+/g, ''); + range.create(r.sc, r.sc.textContent.length, r.sc, r.sc.textContent.length).select(); + } + event.preventDefault(); + return false; + } + } + event.preventDefault(); + return false; + }; + $.summernote.pluginEvents.untab = function (event, editor, layoutInfo) { + return $.summernote.pluginEvents.tab(event, editor, layoutInfo, true); + }; + $.summernote.pluginEvents.enter = function (event, editor, layoutInfo) { + var $editable = layoutInfo.editable(); + $editable.data('NoteHistory').recordUndo($editable, 'enter'); + + var r = range.create(); + if (!r.isContentEditable()) { + event.preventDefault(); + return false; + } + if (!r.isCollapsed()) { + r = r.deleteContents(); + r.select(); + } + + var br = $("
    ")[0]; + + // table: add a tr + var td = dom.ancestor(r.sc, dom.isCell); + if (td && (r.sc === td || r.sc === td.lastChild || (dom.isBR(td.lastChild) && r.sc === td.lastChild.previousSibling)) && r.so === r.sc.textContent.length && r.isOnCell() && !dom.nextElementSibling(td)) { + var $node = $(td.parentNode); + var $clone = $node.clone(); + $clone.children().html(dom.blank); + $node.after($clone); + var node = dom.firstElementChild($clone[0]) || $clone[0]; + range.create(node, 0, node, 0).select(); + dom.scrollIntoViewIfNeeded(br); + event.preventDefault(); + return false; + } + + var contentBefore = r.sc.textContent.slice(0,r.so).match(/\S|\u00A0/); + if (!contentBefore && dom.isText(r.sc)) { + var node = r.sc.previousSibling; + while (!contentBefore && node && dom.isText(node)) { + contentBefore = dom.isVisibleText(node); + node = node.previousSibling; + } + } + + var node = dom.node(r.sc); + var last = node; + while (node && dom.isSplitable(node)) { + last = node; + node = node.parentNode; + } + + if (last === node && !dom.isBR(node)) { + node = r.insertNode(br); + do { + node = dom.hasContentAfter(node); + } while (node && dom.isBR(node)); + + // create an other br because the user can't see the new line with only br in a block + if (!node) { + $(br).before($("
    ")[0]); + } + node = br.nextSibling || br; + } else if (last === node && dom.isBR(node)) { + $(node).after(br); + node = br; + } else if (!r.so && r.isOnList() && !r.sc.textContent.length && !dom.ancestor(r.sc, dom.isLi).nextElementSibling) { + // double enter on the end of a list = new line out of the list + node = $('

    ').append(br).insertAfter(dom.ancestor(r.sc, dom.isList))[0]; + node = br; + } else if (last === r.sc) { + if (dom.isBR(last)) { + last = last.parentNode; + } + var $node = $(last); + var $clone = $node.clone().text(""); + $node.after($clone); + node = dom.node(dom.firstElementChild($clone[0]) || $clone[0]); + $(node).html(br); + node = br; + } else { + node = dom.splitTree(last, {'node': r.sc, 'offset': r.so}); + if (!contentBefore) { + var cur = dom.node(dom.lastChild(node.previousSibling)); + if (!dom.isBR(cur)) { + $(cur).html(br); + } + } + if (!node.textContent.match(/\S|\u00A0/)) { + node = dom.firstChild(node); + $(dom.node( dom.isBR(node) ? node.parentNode : node )).html(br); + node = br; + } + } + + if (node) { + node = dom.firstChild(node); + if (dom.isBR(node)) { + range.createFromNode(node).select(); + } else { + range.create(node,0).select(); + } + dom.scrollIntoViewIfNeeded(node); + } + event.preventDefault(); + return false; + }; + $.summernote.pluginEvents.visible = function (event, editor, layoutInfo) { + var $editable = layoutInfo.editable(); + $editable.data('NoteHistory').recordUndo($editable, "visible"); + + var r = range.create(); + if (r && !r.isCollapsed()) { + r = r.deleteContents(true); + r.select(); + } + + // don't write in forbidden tag (like span for font awsome) + var node = dom.firstChild(r.sc.tagName && r.so ? r.sc.childNodes[r.so] : r.sc); + while (node.parentNode) { + if (dom.isForbiddenNode(node)) { + var text = node.previousSibling; + if (text && dom.isText(text) && text.textContent.match(/\S|\u00A0/)) { + range.create(text, text.textContent.length, text, text.textContent.length).select(); + } else { + text = node.parentNode.insertBefore(document.createTextNode( "." ), node); + range.create(text, 1, text, 1).select(); + setTimeout(function () { + var text = range.create().sc; + text.textContent = text.textContent.replace(/^./, ''); + range.create(text, text.textContent.length, text, text.textContent.length).select(); + },0); + } + break; + } + node = node.parentNode; + } + + return true; + }; + + function summernote_keydown_clean (field) { + setTimeout(function () { + var r = range.create(); + if (!r) return; + var node = r[field]; + while (dom.isText(node)) {node = node.parentNode;} + node = node.parentNode; + var data = dom.merge(node, r.sc, r.so, r.ec, r.eo, null, true); + data = dom.removeSpace(node.parentNode, data.sc, data.so, data.sc, data.so); + + range.create(data.sc, data.so, data.sc, data.so).select(); + },0); + } + + function remove_table_content(sc, ec) { + var nodes = dom.listBetween(sc, ec); + nodes.push(dom.node(sc), dom.node(ec)); + for (var i in nodes) { + if (dom.isCell(nodes[i])) { + $(nodes[i]).html("
    "); + } + } + event.preventDefault(); + return false; + } + + $.summernote.pluginEvents.delete = function (event, editor, layoutInfo) { + var $editable = layoutInfo.editable(); + $editable.data('NoteHistory').recordUndo($editable, "delete"); + + var r = range.create(); + if (!r.isContentEditable()) { + return false; + } + if (!r.isCollapsed()) { + if (dom.isCell(dom.node(r.sc)) || dom.isCell(dom.node(r.ec))) { + return remove_table_content(r.sc, r.ec); + } + r = r.deleteContents(); + r.select(); + event.preventDefault(); + return false; + } + + var target = r.ec; + var offset = r.eo; + if (target.tagName && target.childNodes[offset]) { + target = target.childNodes[offset]; + offset = 0; + } + + var node = dom.node(target); + var data = dom.merge(node, target, offset, target, offset, null, true); + data = dom.removeSpace(node.parentNode, data.sc, data.so, data.ec, data.eo); + r = range.create(data.sc, data.so); + r.select(); + target = r.sc; + offset = r.so; + + while (!dom.hasContentAfter(node) && !dom.hasContentBefore(node) && !dom.isImg(node)) {node = node.parentNode;} + + var contentAfter = target.textContent.slice(offset,Infinity).match(/\S|\u00A0/); + var content = target.textContent.replace(/[ \t\r\n]+$/, ''); + var temp; + var temp2; + + // media + if (dom.isImg(node) || (!contentAfter && dom.isImg(dom.hasContentAfter(node)))) { + var parent; + var index; + if (!dom.isImg(node)) { + node = dom.hasContentAfter(node); + } + while (dom.isImg(node)) { + parent = node.parentNode; + index = dom.makeOffsetPath(parent, node)[0]; + if (index>0) { + var next = node.previousSibling; + range.create(next,next.textContent.length).select(); + } + if (!dom.hasContentAfter(node) && !dom.hasContentBefore(node)) { + parent.appendChild($('
    ')[0]); + } + parent.removeChild(node); + node = parent; + } + } + // empty tag + else if (!content.length && target.tagName && dom.isRemovableEmptyNode(dom.isBR(target) ? target.parentNode : target)) { + if (node === $editable[0] || $.contains(node, $editable[0])) { + event.preventDefault(); + return false; + } + var before = true; + var next = dom.hasContentAfter(dom.ancestorHaveNextSibling(node)); + if (!dom.isContentEditable(next)) { + before = false; + next = dom.hasContentBefore(dom.ancestorHavePreviousSibling(node)); + } + dom.removeSpace(next.parentNode, next, 0, next, 0); // clean before jump for not select invisible space between 2 tag + next = dom.firstChild(next); + node.parentNode.removeChild(node); + range.create(next, before ? next.textContent.length : 0).select(); + } + // normal feature if same tag and not the end + else if (contentAfter) { + return true; + } + // merge with the next text node + else if (dom.isText(target) && (temp = dom.hasContentAfter(target)) && (dom.isText(temp) || dom.isBR(temp))) { + return true; + } + //merge with the next block + else if ((temp = dom.ancestorHaveNextSibling(target)) && + dom.isMergable(temp) && + dom.isMergable(temp2 = dom.hasContentAfter(temp)) && + temp.tagName === temp2.tagName && + (temp.tagName !== "LI" || !$('ul,ol', temp).length) && (temp2.tagName !== "LI" || !$('ul,ol', temp2).length) && // protect li + !dom.isNotBreakable(temp) && + !dom.isNotBreakable(temp2)) { + dom.autoMerge(target, false); + var next = dom.firstChild(dom.hasContentAfter(dom.ancestorHaveNextSibling(target))); + if (dom.isBR(next)) { + range.create(next.previousSibling, next.previousSibling.textContent.length).select(); + next.parentNode.removeChild(next); + } else { + range.create(next, 0).select(); + } + } + // jump to next node for delete + else if ((temp = dom.ancestorHaveNextSibling(target)) && (temp2 = dom.hasContentAfter(temp)) && dom.isContentEditable(temp2)) { + + dom.removeSpace(temp2.parentNode, temp2, 0, temp, 0); // clean before jump for not select invisible space between 2 tag + temp2 = dom.firstChild(temp2); + + r = range.create(temp2, 0); + r.select(); + + if ((dom.isText(temp) || window.getComputedStyle(temp).display === "inline") && (dom.isText(temp2) || window.getComputedStyle(temp2).display === "inline")) { + if (dom.isText(temp2)) { + temp2.textContent = temp2.textContent.replace(/^\s*\S/, ''); + } else { + $.summernote.pluginEvents.delete(event, editor, layoutInfo); + } + } + event.preventDefault(); + return false; + } + event.preventDefault(); + return false; + }; + $.summernote.pluginEvents.backspace = function (event, editor, layoutInfo) { + var $editable = layoutInfo.editable(); + $editable.data('NoteHistory').recordUndo($editable, "backspace"); + + var r = range.create(); + if (!r.isContentEditable()) { + event.preventDefault(); + return false; + } + if (!r.isCollapsed()) { + if (dom.isCell(dom.node(r.sc)) || dom.isCell(dom.node(r.ec))) { + return remove_table_content(r.sc, r.ec); + } + r = r.deleteContents(); + r.select(); + event.preventDefault(); + return false; + } + + var target = r.sc; + var offset = r.so; + if (target.tagName && target.childNodes[offset]) { + target = target.childNodes[offset]; + offset = 0; + } + + var node = dom.node(target); + var data = dom.merge(node, target, offset, target, offset, null, true); + data = dom.removeSpace(node.parentNode, data.sc, data.so, data.ec, data.eo); + r = range.create(data.sc, data.so); + r.select(); + target = r.sc; + offset = r.so; + + while (node.parentNode && !dom.hasContentAfter(node) && !dom.hasContentBefore(node) && !dom.isImg(node)) {node = node.parentNode;} + + var contentBefore = target.textContent.slice(0,offset).match(/\S|\u00A0/); + var content = target.textContent.replace(/[ \t\r\n]+$/, ''); + var temp; + var temp2; + + // delete media + if (dom.isImg(node) || (!contentBefore && dom.isImg(dom.hasContentBefore(node)))) { + if (!dom.isImg(node)) { + node = dom.hasContentBefore(node); + } + range.createFromNode(node).select(); + $.summernote.pluginEvents.delete(event, editor, layoutInfo); + } + // table tr td + else if (r.isOnCell() && !offset && (target === (temp = dom.ancestor(target, dom.isCell)) || target === temp.firstChild)) { + if (dom.previousElementSibling(temp)) { + var td = dom.previousElementSibling(temp); + node = td.lastChild || td; + } else { + var tr = temp.parentNode; + var prevTr = dom.previousElementSibling(tr); + if (!$(temp.parentNode).text().match(/\S|\u00A0/)) { + if (prevTr) { + tr.parentNode.removeChild(tr); + node = (dom.lastElementChild(prevTr).lastChild && dom.lastElementChild(prevTr).lastChild.tagName ? dom.lastElementChild(prevTr).lastChild.previousSibling : dom.lastElementChild(prevTr).lastChild) || dom.lastElementChild(prevTr); + range.create(node, node.textContent.length, node, node.textContent.length).select(); + } + } else { + node = dom.lastElementChild(prevTr).lastChild || dom.lastElementChild(prevTr); + } + } + if (dom.isBR(node)) { + range.createFromNode(node).select(); + } else { + range.create(node, dom.nodeLength(node)).select(); + } + } + // empty tag + else if (!content.length && target.tagName && dom.isRemovableEmptyNode(target)) { + if (node === $editable[0] || $.contains(node, $editable[0])) { + event.preventDefault(); + return false; + } + var before = true; + var prev = dom.hasContentBefore(dom.ancestorHavePreviousSibling(node)); + if (!dom.isContentEditable(prev)) { + before = false; + prev = dom.hasContentAfter(dom.ancestorHaveNextSibling(node)); + } + dom.removeSpace(prev.parentNode, prev, 0, prev, 0); // clean before jump for not select invisible space between 2 tag + prev = dom.lastChild(prev); + node.parentNode.removeChild(node); + range.createFromNode(prev).select(); + range.create(prev, before ? prev.textContent.length : 0).select(); + } + // normal feature if same tag and not the begin + else if (contentBefore) { + return true; + } + // merge with the previous text node + else if (dom.isText(target) && (temp = dom.hasContentBefore(target)) && (dom.isText(temp) || dom.isBR(temp))) { + return true; + } + //merge with the previous block + else if ((temp = dom.ancestorHavePreviousSibling(target)) && + dom.isMergable(temp) && + dom.isMergable(temp2 = dom.hasContentBefore(temp)) && + temp.tagName === temp2.tagName && + (temp.tagName !== "LI" || !$('ul,ol', temp).length) && (temp2.tagName !== "LI" || !$('ul,ol', temp2).length) && // protect li + !dom.isNotBreakable(temp) && + !dom.isNotBreakable(temp2)) { + var prev = dom.firstChild(target); + dom.autoMerge(target, true); + range.create(prev, 0).select(); + } + // jump to previous node for delete + else if ((temp = dom.ancestorHavePreviousSibling(target)) && (temp2 = dom.hasContentBefore(temp)) && dom.isContentEditable(temp2)) { + + dom.removeSpace(temp2.parentNode, temp2, 0, temp, 0); // clean before jump for not select invisible space between 2 tag + temp2 = dom.lastChild(temp2); + + r = range.create(temp2, temp2.textContent.length, temp2, temp2.textContent.length); + r.select(); + + if ((dom.isText(temp) || window.getComputedStyle(temp).display === "inline") && (dom.isText(temp2) || window.getComputedStyle(temp2).display === "inline")) { + if (dom.isText(temp2)) { + temp2.textContent = temp2.textContent.replace(/\S\s*$/, ''); + } else { + $.summernote.pluginEvents.backspace(event, editor, layoutInfo); + } + } + } + + var rng = range.create(); + if (rng) { + dom.scrollIntoViewIfNeeded(rng.sc.parentNode.previousElementSibling || rng.sc); + } + + event.preventDefault(); + return false; + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* add list command (create a uggly dom for chrome) */ + + function isFormatNode(node) { + return node.tagName && options.styleTags.indexOf(node.tagName.toLowerCase()) !== -1; + } + + $.summernote.pluginEvents.insertUnorderedList = function (event, editor, layoutInfo, sorted) { + var $editable = layoutInfo.editable(); + $editable.data('NoteHistory').recordUndo($editable); + + var parent; + var rng = range.create(); + var node = rng.sc; + while (node && node !== $editable[0]) { + + parent = node.parentNode; + if (node.tagName === (sorted ? "UL" : "OL")) { + + var ul = document.createElement(sorted ? "ol" : "ul"); + ul.className = node.className; + parent.insertBefore(ul, node); + while (node.firstChild) { + ul.appendChild(node.firstChild); + } + parent.removeChild(node); + rng.select(); + return; + + } else if (node.tagName === (sorted ? "OL" : "UL")) { + + var lis = []; + for (var i=0; i' : sTagName; + document.execCommand('FormatBlock', false, sTagName); + }; + $.summernote.pluginEvents.removeFormat = function (event, editor, layoutInfo, value) { + var $editable = layoutInfo.editable(); + $editable.data('NoteHistory').recordUndo($editable); + var node = range.create().sc.parentNode; + document.execCommand('removeFormat'); + document.execCommand('removeFormat'); + var r = range.create(); + r = dom.merge(node, r.sc, r.so, r.ec, r.eo, null, true); + range.create(r.sc, r.so, r.ec, r.eo).select(); + event.preventDefault(); + return false; + }; + var fn_boutton_updateRecentColor = eventHandler.toolbar.button.updateRecentColor; + eventHandler.toolbar.button.updateRecentColor = function (elBtn, sEvent, sValue) { + fn_boutton_updateRecentColor.call(this, elBtn, sEvent, sValue); + var font = $(elBtn).closest('.note-color').find('.note-recent-color i')[0]; + + if (sEvent === "foreColor") { + if (sValue.indexOf('text-') !== -1) { + font.className += ' ' + sValue; + font.style.color = ''; + } else { + font.className = font.className.replace(/(^|\s+)text-\S+/); + font.style.color = sValue !== 'inherit' ? sValue : ""; + } + } else { + if (sValue.indexOf('bg-') !== -1) { + font.className += ' ' + sValue; + font.style.backgroundColor = ""; + } else { + font.className = font.className.replace(/(^|\s+)bg-\S+/); + font.style.backgroundColor = sValue !== 'inherit' ? sValue : ""; + } + } + event.preventDefault(); + return false; + }; + + options.fontSizes = ['8', '9', '10', '11', '12', '14', '18', '24', '36']; + $.summernote.pluginEvents.applyFont = function (event, editor, layoutInfo, color, bgcolor, size) { + var rng = range.create(); + var startPoint = rng.getStartPoint(); + var endPoint = rng.getEndPoint(); + + if (rng.isCollapsed()) { + return { + sc: startPoint.node, + so: startPoint.offset, + ec: endPoint.node, + offset: endPoint.offset + }; + } + + // get first and last point + if (endPoint.offset && endPoint.offset != dom.nodeLength(endPoint.node)) { + var ancestor = dom.ancestor(endPoint.node, dom.isFont) || endPoint.node; + dom.splitTree(ancestor, endPoint); + } + if (startPoint.offset && startPoint.offset != dom.nodeLength(startPoint.node)) { + var ancestor = dom.ancestor(startPoint.node, dom.isFont) || startPoint.node; + var node = dom.splitTree(ancestor, startPoint); + if (endPoint.node === startPoint.node) { + endPoint.node = node; + endPoint.offset = dom.nodeLength(node); + } + startPoint.node = node; + startPoint.offset = 0; + } + + // get list of nodes to change + var nodes = []; + dom.walkPoint(startPoint, endPoint, function (point) { + var node = point.node; + if ((dom.isText(node) && dom.isVisibleText(node)) || + (dom.isFont(node) && !dom.isVisibleText(node))) { + + nodes.push(point.node); + + } + }); + nodes = list.unique(nodes); + + // apply font: foreColor, backColor, size (the color can be use a class text-... or bg-...) + var node, font, $font, fonts = [], className; + if (color || bgcolor || size) { + for (var i=0; i0 && (font = dom.ancestor(nodes[i-1], dom.isFont))) { + className2 = font.getAttribute('class'); + style2 = font.getAttribute('style'); + if (node !== font && className == className2 && style == style2) { + remove(node, font); + nodes.splice(i,1); + i--; + continue; + } + } + } + + range.create(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset).select(); + }; + $.summernote.pluginEvents.fontSize = function (event, editor, layoutInfo, value) { + var $editable = layoutInfo.editable(); + $.summernote.pluginEvents.applyFont(event, editor, layoutInfo, null, null, value); + editor.afterCommand($editable); + }; + $.summernote.pluginEvents.color = function (event, editor, layoutInfo, sObjColor) { + var $editable = layoutInfo.editable(); + var oColor = JSON.parse(sObjColor); + var foreColor = oColor.foreColor, backColor = oColor.backColor; + + if (foreColor) { $.summernote.pluginEvents.foreColor(event, editor, layoutInfo, foreColor); } + if (backColor) { $.summernote.pluginEvents.backColor(event, editor, layoutInfo, backColor); } + }; + $.summernote.pluginEvents.foreColor = function (event, editor, layoutInfo, foreColor) { + var $editable = layoutInfo.editable(); + $.summernote.pluginEvents.applyFont(event, editor, layoutInfo, foreColor, null, null); + editor.afterCommand($editable); + }; + $.summernote.pluginEvents.backColor = function (event, editor, layoutInfo, backColor) { + var $editable = layoutInfo.editable(); + var r = range.create(); + if (r.isCollapsed() && r.isOnCell()) { + var cell = dom.ancestor(r.sc, dom.isCell); + cell.className = cell.className.replace(new RegExp('(^|\\s+)bg-[^\\s]+(\\s+|$)', 'gi'), ''); + cell.style.backgroundColor = ""; + if (backColor.indexOf('bg-') !== -1) { + cell.className += ' ' + backColor; + } else if (backColor !== 'inherit') { + cell.style.backgroundColor = backColor; + } + return; + } + $.summernote.pluginEvents.applyFont(event, editor, layoutInfo, null, backColor, null); + editor.afterCommand($editable); + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + + options.onCreateLink = function (sLinkUrl) { + if (sLinkUrl.indexOf('mailto:') === 0) { + // pass + } else if (sLinkUrl.indexOf('@') !== -1 && sLinkUrl.indexOf(':') === -1) { + sLinkUrl = 'mailto:' + sLinkUrl; + } else if (sLinkUrl.indexOf('://') === -1 && sLinkUrl.indexOf('/') !== 0 && sLinkUrl.indexOf('#') !== 0) { + sLinkUrl = 'http://' + sLinkUrl; + } + return sLinkUrl; + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* table */ + + function summernote_table_scroll (event) { + if (range.create().isOnCell()) { + $('.o_table_handler').remove(); + } + } + function summernote_table_update (oStyle) { + var r = range.create(); + if (!r || !r.isOnCell() || !r.isOnCellFirst()) { + $('.o_table_handler').remove(); + return; + } + var table = dom.ancestor(oStyle.range.sc, dom.isTable); + var $editable = $(table).closest('.o_editable'); + + $('.o_table_handler').remove(); + + var $dels = $(); + var $adds = $(); + var $tds = $('tr:first', table).children(); + $tds.each(function () { + var $td = $(this); + var pos = $td.offset(); + + var $del = $('').appendTo('body'); + $del.data('td', this); + $dels = $dels.add($del); + $del.css({ + left: ((pos.left + $td.outerWidth()/2)-6) + "px", + top: (pos.top-6) + "px" + }); + + var $add = $('').appendTo('body'); + $add.data('td', this); + $adds = $adds.add($add); + $add.css({ + left: (pos.left-6) + "px", + top: (pos.top-6) + "px" + }); + }); + + var $last = $tds.last(); + var pos = $last.offset(); + var $add = $('').appendTo('body'); + $adds = $adds.add($add); + $add.css({ + left: (pos.left+$last.outerWidth()-6) + "px", + top: (pos.top-6) + "px" + }); + + var $table = $(table); + $dels.on('mousedown', function (event) { + var td = $(this).data('td'); + $(td).closest('.note-editable').data('NoteHistory').recordUndo($editable); + + var newTd; + if ($(td).siblings().length) { + var eq = $(td).index(); + $table.find('tr').each(function () { + $('> td:eq('+eq+')', this).remove(); + }); + newTd = $table.find('tr:first > td:eq('+eq+'), tr:first > td:last').first(); + } else { + var prev = dom.lastChild(dom.hasContentBefore(dom.ancestorHavePreviousSibling($table[0]))); + $table.remove(); + $('.o_table_handler').remove(); + r = range.create(prev, prev.textContent.length); + r.select(); + $(r.sc).trigger('mouseup'); + return; + } + + $('.o_table_handler').remove(); + range.create(newTd[0], 0, newTd[0], 0).select(); + newTd.trigger('mouseup'); + }); + $adds.on('mousedown', function (event) { + var td = $(this).data('td'); + $(td).closest('.note-editable').data('NoteHistory').recordUndo($editable); + + var newTd; + if (td) { + var eq = $(td).index(); + $table.find('tr').each(function () { + $('td:eq('+eq+')', this).before(''+dom.blank+''); + }); + newTd = $table.find('tr:first td:eq('+eq+')'); + } else { + $table.find('tr').each(function () { + $(this).append(''+dom.blank+''); + }); + newTd = $table.find('tr:first td:last'); + } + + $('.o_table_handler').remove(); + range.create(newTd[0], 0, newTd[0], 0).select(); + newTd.trigger('mouseup'); + }); + + $dels.css({ + 'position': 'absolute', + 'cursor': 'pointer', + 'background-color': '#fff', + 'color': '#ff0000' + }); + $adds.css({ + 'position': 'absolute', + 'cursor': 'pointer', + 'background-color': '#fff', + 'color': '#00ff00' + }); + } + var fn_popover_update = eventHandler.popover.update; + eventHandler.popover.update = function ($popover, oStyle, isAirMode) { + fn_popover_update.call(this, $popover, oStyle, isAirMode); + summernote_table_update(oStyle); + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + + function summernote_paste (event) { + // keep norma feature if copy a picture + var clipboardData = event.originalEvent.clipboardData; + if (clipboardData.items) { + var item = list.last(clipboardData.items); + var isClipboardImage = item.kind === 'file' && item.type.indexOf('image/') !== -1; + if (isClipboardImage) { + return true; + } + } + + var $editable = $(event.currentTarget); + $editable = $editable.is('[contenteditable]') ? $editable : $editable.find('[contenteditable]'); + $editable.data('NoteHistory').recordUndo($editable); + + event.preventDefault(); + var r = range.create(); + if (!r.isCollapsed()) { + r = r.deleteContents(); + r.select(); + } + + var text = clipboardData.getData("text/plain").replace(/'); + $alt.prependTo($imagePopover.find('.popover-content')); + $alt.append(''); + + // padding button + var $padding = $('
    '); + $padding.insertBefore($imagePopover.find('.btn-group:first')); + var $button = $(tplIconButton('fa fa-plus-square-o', { + title: _t('Padding'), + dropdown: true + })).appendTo($padding); + var $ul = $('
  • ' + + ' ' + v + + '
  • wFa`|#XVkVxrL)A%xDBTuA7CSj!4JF5|_Iq^g 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