diff --git a/build/ckeditor.js b/build/ckeditor.js index d65231a6c9..16b0cdb434 100644 --- a/build/ckeditor.js +++ b/build/ckeditor.js @@ -2,5 +2,5 @@ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md. */ -var _Mathpow=Math.pow,_NumberPOSITIVE_INFINITY=Number.POSITIVE_INFINITY,_Mathfloor=Math.floor,_StringfromCharCode=String.fromCharCode,_Mathmax=Math.max,_Mathmin=Math.min;(function(u,f){if('object'==typeof exports&&'object'==typeof module)module.exports=f();else if('function'==typeof define&&define.amd)define([],f);else{var h=f();for(var w in h)('object'==typeof exports?exports:u)[w]=h[w]}})(this,function(){return function(r){function u(h){if(f[h])return f[h].exports;var w=f[h]={i:h,l:!1,exports:{}};return r[h].call(w.exports,w,w.exports,u),w.l=!0,w.exports}var f={};return u.m=r,u.c=f,u.i=function(h){return h},u.d=function(h,w,C){u.o(h,w)||Object.defineProperty(h,w,{configurable:!1,enumerable:!0,get:C})},u.n=function(h){var w=h&&h.__esModule?function(){return h['default']}:function(){return h};return u.d(w,'a',w),w},u.o=function(h,w){return Object.prototype.hasOwnProperty.call(h,w)},u.p='',u(u.s=304)}([function(r,u){'use strict';class h extends Error{constructor(w,C){C&&(w+=' '+JSON.stringify(C)),super(w),this.name='CKEditorError',this.data=C}static isCKEditorError(w){return w instanceof h}}u.a=h},function(r,u,f){'use strict';var h=f(35),w=f(19),C=f(64),T=f(0),P=f(24);class S{constructor(E,O){if(!E.is('element')&&!E.is('documentFragment'))throw new T.a('model-position-root-invalid: Position root invalid.');if(!(O instanceof Array)||0===O.length)throw new T.a('model-position-path-incorrect: Position path must be an Array with at least one item.',{path:O});O=E.getPath().concat(O),E=E.root,this.root=E,this.path=O}get offset(){return f.i(w.a)(this.path)}set offset(E){this.path[this.path.length-1]=E}get parent(){let E=this.root;for(let O=0;OR?0:R,O}isAfter(E){return'after'==this.compareWith(E)}isBefore(E){return'before'==this.compareWith(E)}isEqual(E){return'same'==this.compareWith(E)}isTouching(E){let O=null,R=null,V=this.compareWith(E);switch(V){case'same':return!0;case'before':O=S.createFromPosition(this),R=S.createFromPosition(E);break;case'after':O=S.createFromPosition(E),R=S.createFromPosition(this);break;default:return!1;}for(let F=O.parent;O.path.length+R.path.length;){if(O.isEqual(R))return!0;if(O.path.length>R.path.length){if(O.offset!==F.maxOffset)return!1;O.path=O.path.slice(0,-1),F=F.parent,O.offset++}else{if(0!==R.offset)return!1;R.path=R.path.slice(0,-1)}}}_getTransformedByDeletion(E,O){let R=S.createFromPosition(this);if(this.root!=E.root)return R;if('same'==f.i(C.a)(E.getParentPath(),this.getParentPath())){if(E.offsetthis.offset)return null;R.offset-=O}}else if('prefix'==f.i(C.a)(E.getParentPath(),this.getParentPath())){const V=E.path.length-1;if(E.offset<=this.path[V]){if(E.offset+O>this.path[V])return null;R.path[V]-=O}}return R}_getTransformedByInsertion(E,O,R){let V=S.createFromPosition(this);if(this.root!=E.root)return V;if('same'==f.i(C.a)(E.getParentPath(),this.getParentPath()))(E.offsetS+1;){let R=O.maxOffset-E.offset;0!=R&&P.push(new T(E,E.getShiftedBy(R))),E.path=E.path.slice(0,-1),E.offset++,O=O.parent}for(;E.path.length<=this.end.path.length;){let R=this.end.path[E.path.length-1],V=R-E.offset;0!=V&&P.push(new T(E,E.getShiftedBy(V))),E.offset=R,E.path.push(0)}return P}getWalker(P={}){return P.boundaries=this,new w.a(P)}*getItems(P={}){P.boundaries=this,P.ignoreElementEnd=!0;const S=new w.a(P);for(let E of S)yield E.item}*getPositions(P={}){P.boundaries=this;const S=new w.a(P);yield S.position;for(let E of S)yield E.nextPosition}getTransformedByDelta(P){let S=[T.createFromRange(this)];const E=new Set(['insert','move','remove','reinsert']);for(let O of P.operations)if(E.has(O.type))for(let R=0;RR.start.isAfter(V.start));const E=P.indexOf(S),O=new this(S.start,S.end);for(let R=E-1;0<=R&&P[R].end.isEqual(O.start);R++)O.start=h.a.createFromPosition(P[R].start);for(let R=E+1;R{Object.getOwnPropertyNames(T).concat(Object.getOwnPropertySymbols(T)).forEach((P)=>{if(!(P in w.prototype)){const S=Object.getOwnPropertyDescriptor(T,P);S.enumerable=!1,Object.defineProperty(w.prototype,P,S)}})})}},function(r,u,f){'use strict';function h(E){return'string'==typeof E?[new T.a(E)]:(f.i(P.a)(E)||(E=[E]),Array.from(E).map((O)=>'string'==typeof O?new T.a(O):O))}var w=f(58),C=f(73),T=f(24),P=f(43);class S extends w.a{constructor(E,O,R){super(O),this.name=E,this._children=new C.a,R&&this.insertChildren(0,R)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(E,O=null){return O?'element'==E&&O==this.name:'element'==E||E==this.name}getChild(E){return this._children.getNode(E)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(E){return this._children.getNodeIndex(E)}getChildStartOffset(E){return this._children.getNodeStartOffset(E)}clone(E=!1){const O=E?Array.from(this._children).map((R)=>R.clone()):Array.from(this._children);return new S(this.name,this.getAttributes(),O)}offsetToIndex(E){return this._children.offsetToIndex(E)}appendChildren(E){this.insertChildren(this.childCount,E)}insertChildren(E,O){O=h(O);for(let R of O)R.parent=this;this._children.insertNodes(E,O)}removeChildren(E,O=1){const R=this._children.removeNodes(E,O);for(let V of R)V.parent=null;return R}getNodeByPath(E){let O=this;for(const R of E)O=O.getChild(R);return O}toJSON(){let E=super.toJSON();if(E.name=this.name,0{return ce instanceof ie?ce.getValue(de):ce})}function C(le,de,{node:ce}){let ue=w(le,ce);ue=1==le.length&&le[0]instanceof se?ue[0]:ue.reduce(M,''),$(ue)?de.remove():de.set(ue)}function T(le){return{set(de){le.textContent=de},remove(){le.textContent=''}}}function P(le,de,ce){return{set(ue){le.setAttributeNS(ce,de,ue)},remove(){le.removeAttributeNS(ce,de)}}}function S(le,de){return{set(ce){le.style[de]=ce},remove(){le.style[de]=null}}}function E(le){const de=f.i(ee.a)(le,(ce)=>{if(ce&&(ce instanceof ie||U(ce)||q(ce)||K(ce)))return ce});return de}function O(le){if('string'==typeof le?le=F(le):le.text&&I(le),le.on&&(le.eventListeners=V(le.on),delete le.on),!le.text){le.attributes&&R(le.attributes);const de=new J.a;if(le.children)if(K(le.children))de.add(le.children);else for(let ce of le.children)U(ce)||q(ce)?de.add(ce):de.add(new oe(ce));le.children=de}return le}function R(le){for(let de in le)le[de].value&&(le[de].value=[].concat(le[de].value)),N(le,de)}function V(le){for(let de in le)N(le,de);return le}function F(le){return{text:[le]}}function I(le){Array.isArray(le.text)||(le.text=[le.text])}function N(le,de){Array.isArray(le[de])||(le[de]=[le[de]])}function M(le,de){return $(de)?le:$(le)?de:`${le} ${de}`}function D(le,de){for(let ce in de)le[ce]?le[ce].push(...de[ce]):le[ce]=de[ce]}function z(le,de){if(de.attributes&&(!le.attributes&&(le.attributes={}),D(le.attributes,de.attributes)),de.eventListeners&&(!le.eventListeners&&(le.eventListeners={}),D(le.eventListeners,de.eventListeners)),de.text&&le.text.push(...de.text),de.children&&de.children.length){if(le.children.length!=de.children.length)throw new W.a('ui-template-extend-children-mismatch: The number of children in extended definition does not match.');let ce=0;for(let ue of de.children)z(le.children.get(ce++),ue)}}function $(le){return!le&&0!==le}function q(le){return le instanceof X.a}function U(le){return le instanceof oe}function K(le){return le instanceof Q.a}function H(){return{children:[],bindings:[],attributes:{}}}function Y(le){return'class'==le||'style'==le}var W=f(0),Z=f(4),G=f(7),J=f(79),X=f(9),Q=f(120),ee=f(513),te=f(15),ae=f(48);class oe{constructor(le){Object.assign(this,O(E(le))),this._isRendered=!1,this._revertData=null}render(){const le=this._renderNode({intoFragment:!0});return this._isRendered=!0,le}apply(le){return this._revertData=H(),this._renderNode({node:le,isApplying:!0,revertData:this._revertData}),le}revert(le){if(!this._revertData)throw new W.a('ui-template-revert-not-applied: Attempting reverting a template which has not been applied yet.');this._revertTemplateFromNode(le,this._revertData)}static bind(le,de){return{to(ce,ue){return new re({eventNameOrFunction:ce,attribute:ce,observable:le,emitter:de,callback:ue})},if(ce,ue,pe){return new se({observable:le,emitter:de,attribute:ce,valueIfTrue:ue,callback:pe})}}}static extend(le,de){le._isRendered&&ae.a.warn('template-extend-render: Attempting to extend a template which has already been rendered.'),z(le,O(E(de)))}_renderNode(le){let de;if(de=le.node?this.tag&&this.text:this.tag?this.text:!this.text,de)throw new W.a('ui-template-wrong-syntax: Node definition must have either "tag" or "text" when rendering new Node.');return this.text?this._renderText(le):this._renderElement(le)}_renderElement(le){let de=le.node;return de||(de=le.node=document.createElementNS(this.ns||'http://www.w3.org/1999/xhtml',this.tag)),this._renderAttributes(le),this._renderElementChildren(le),this._setUpListeners(le),de}_renderText(le){let de=le.node;return de?le.revertData.text=de.textContent:de=le.node=document.createTextNode(''),h(this.text)?this._bindToObservable({schema:this.text,updater:T(de),data:le}):de.textContent=this.text.join(''),de}_renderAttributes(le){let de,ce,ue,pe;if(this.attributes){const me=le.node,ge=le.revertData;for(de in this.attributes)if(ue=me.getAttribute(de),ce=this.attributes[de],ge&&(ge.attributes[de]=ue),pe=f.i(te.a)(ce[0])&&ce[0].ns?ce[0].ns:null,h(ce)){const fe=pe?ce[0].value:ce;ge&&Y(de)&&fe.unshift(ue),this._bindToObservable({schema:fe,updater:P(me,de,pe),data:le})}else'style'==de&&'string'!=typeof ce[0]?this._renderStyleAttribute(ce[0],le):(ge&&ue&&Y(de)&&ce.unshift(ue),ce=ce.map((fe)=>fe?fe.value||fe:fe).reduce((fe,he)=>fe.concat(he),[]).reduce(M,''),$(ce)||me.setAttributeNS(pe,de,ce))}}_renderStyleAttribute(le,de){const ce=de.node;for(let ue in le){const pe=le[ue];h(pe)?this._bindToObservable({schema:[pe],updater:S(ce,ue),data:de}):ce.style[ue]=pe}}_renderElementChildren(le){const de=le.node,ce=le.intoFragment?document.createDocumentFragment():de,ue=le.isApplying;let pe=0;for(let me of this.children)if(K(me)){if(!ue){me.setParent(de);for(let ge of me)ce.appendChild(ge.element)}}else if(q(me))ue||ce.appendChild(me.element);else if(ue){const ge=le.revertData,fe=H();ge.children.push(fe),me._renderNode({node:ce.childNodes[pe++],isApplying:!0,revertData:fe})}else ce.appendChild(me.render());le.intoFragment&&de.appendChild(ce)}_setUpListeners(le){if(this.eventListeners)for(let de in this.eventListeners){const ce=this.eventListeners[de].map((ue)=>{const[pe,me]=de.split('@');return ue.activateDomEventListener(pe,me,le)});le.revertData&&le.revertData.bindings.push(ce)}}_bindToObservable({schema:le,updater:de,data:ce}){const ue=ce.revertData;C(le,de,ce);const pe=le.filter((me)=>!$(me)).filter((me)=>me.observable).map((me)=>me.activateAttributeListener(le,de,ce));ue&&ue.bindings.push(pe)}_revertTemplateFromNode(le,de){for(let ce of de.bindings)for(let ue of ce)ue();if(de.text)return void(le.textContent=de.text);for(let ce in de.attributes){const ue=de.attributes[ce];null===ue?le.removeAttribute(ce):le.setAttribute(ce,ue)}for(let ce=0;ceC(le,de,ce);return this.emitter.listenTo(this.observable,'change:'+this.attribute,ue),()=>{this.emitter.stopListening(this.observable,'change:'+this.attribute,ue)}}}class re extends ie{activateDomEventListener(le,de,ce){const ue=(pe,me)=>{(!de||me.target.matches(de))&&('function'==typeof this.eventNameOrFunction?this.eventNameOrFunction(me):this.observable.fire(this.eventNameOrFunction,me))};return this.emitter.listenTo(ce.node,le,ue),()=>{this.emitter.stopListening(ce.node,le,ue)}}}class se extends ie{getValue(le){const de=super.getValue(le);return!$(de)&&(this.valueIfTrue||!0)}}},function(r,u,f){'use strict';function w(z,$){z[M]||(z[M]=$||f.i(F.a)())}function C(z){return z[M]}function T(z){return z._events||Object.defineProperty(z,'_events',{value:{}}),z._events}function P(){return{callbacks:[],childEvents:[]}}function S(z,$){const q=T(z);if(q[$])return;let U=$,K=null;const H=[];for(;''!==U&&!q[U];)q[U]=P(),H.push(q[U]),K&&q[U].childEvents.push(K),K=U,U=U.substr(0,U.lastIndexOf(':'));if(''!==U){for(let Y of H)Y.callbacks=q[U].callbacks.slice();q[U].childEvents.push(K)}}function E(z,$){const q=T(z)[$];if(!q)return[];let U=[q.callbacks];for(let K=0,H;K{this._delegations||(this._delegations=new Map);for(let U of z){let K=this._delegations.get(U);K?K.set($,q):this._delegations.set(U,new Map([[$,q]]))}}}},stopDelegating(z,$){if(this._delegations)if(!z)this._delegations.clear();else if(!$)this._delegations.delete(z);else{const q=this._delegations.get(z);q&&q.delete($)}}};u.a=D},function(r,u,f){'use strict';var w=f(195),C=f(16),P=_Mathmax;u.a=function(S,E){if('function'!=typeof S)throw new TypeError('Expected a function');return E=P(void 0===E?S.length-1:f.i(C.a)(E),0),function(){for(var O=arguments,R=-1,V=P(O.length-E,0),F=Array(V);++R{I.locale=V})}get element(){return this._element?this._element:this.template?(this._addTemplateChildren(),this._element=this.template.render()):null}set element(V){this._element=V}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=C.a.bind(this,this)}createCollection(){const V=new w.a;return this._viewCollections.add(V),V}addChildren(V){f.i(O.a)(V)||(V=[V]);for(let F of V)this._unboundChildren.add(F)}init(){if(this.ready)throw new h.a('ui-view-init-reinit: This View has already been initialized.');return Promise.resolve().then(()=>{return Promise.all(this._viewCollections.map((V)=>V.init()))}).then(()=>{this.ready=!0})}destroy(){this.stopListening();const V=this._viewCollections.map((F)=>F.destroy());return this._unboundChildren.clear(),this._viewCollections.clear(),this.element=this.template=this.locale=this.t=this._viewCollections=this._unboundChildren=null,Promise.all(V)}_addTemplateChildren(){const V=(F)=>{if(F.children)for(let I of F.children)I instanceof R?this.addChildren(I):V(I)};V(this.template)}}u.a=R,f.i(E.a)(R,T.a),f.i(E.a)(R,P.a)},function(r,u,f){'use strict';var w=f(453),C=f(454),T=f(229),P=f(11),S=f(524);u.a=function(E){return'function'==typeof E?E:null==E?T.a:'object'==typeof E?f.i(P.a)(E)?f.i(C.a)(E[0],E[1]):f.i(w.a)(E):f.i(S.a)(E)}},function(r,u){'use strict';var h=Array.isArray;u.a=h},function(r,u,f){'use strict';function h(P,S){S.isEnabled=!1}var w=f(31),C=f(4);class T{constructor(P){this.editor=P,this.set('isEnabled',!0),this._checkEnabled&&this.on('refreshState',(S,E)=>{E.isEnabled=this._checkEnabled()})}destroy(){this.stopListening()}refreshState(){const P={isEnabled:!0};this.fire('refreshState',P),this.isEnabled=P.isEnabled}_execute(P){this.isEnabled&&this._doExecute(P)}_disable(){this.on('refreshState',h),this.refreshState()}_enable(){this.off('refreshState',h),this.refreshState()}_doExecute(){}}u.a=T,f.i(C.a)(T,w.a)},function(r,u,f){'use strict';function w(q){if(!q.isFlat)throw new z.a('model-writer-remove-range-not-flat: Trying to remove a range that starts and ends in different element.');const U=q.start.parent;O(q.start),O(q.end);const K=U.removeChildren(q.start.index,q.end.index-q.start.index);return E(U,q.start.index),K}function S(q){const U=[];q instanceof Array||(q=[q]);for(let K=0;KW+Z.offsetSize,0),H=q.parent;O(q);const Y=q.index;return H.insertChildren(Y,U),E(H,Y+U.length),E(H,Y),new N.a(q,q.getShiftedBy(K))},remove:w,move:function(q,U){if(!q.isFlat)throw new z.a('model-writer-move-range-not-flat: Trying to move a range that starts and ends in different element.');const K=this.remove(q);return U=U._getTransformedByDeletion(q.start,q.end.offset-q.start.offset),this.insert(U,K)},setAttribute:function(q,U,K){O(q.start),O(q.end);for(let H of q.getItems()){let Y=H.is('textProxy')?H.textNode:H;null===K?Y.removeAttribute(U):Y.setAttribute(U,K),E(Y.parent,Y.index)}E(q.end.parent,q.end.index)},removeAttribute:function(q,U){this.setAttribute(q,U,null)},normalizeNodes:S}},function(r,u,f){'use strict';var w=f(97),C=f(46);u.a=function(T){return f.i(C.a)(T)&&f.i(w.a)(T)}},function(r,u){'use strict';u.a=function(w){var C=typeof w;return!!w&&('object'==C||'function'==C)}},function(r,u,f){'use strict';var w=f(526);u.a=function(C){var T=f.i(w.a)(C),P=T%1;return T===T?P?T-P:T:0}},function(r,u,f){'use strict';var w=f(0);u.b=function(T,P){if(C.prototype[T])throw new w.a('model-batch-register-taken: This batch method name is already taken.',{name:T});C.prototype[T]=P};class C{constructor(T,P='default'){this.document=T,this.deltas=[],this.type=P}get baseVersion(){return 0F.add(M))}function C(F){return'string'==typeof F?[new P.a(F)]:(f.i(E.a)(F)||(F=[F]),Array.from(F).map((I)=>'string'==typeof I?new P.a(I):I))}var T=f(77),P=f(29),S=f(274),E=f(43),O=f(99),R=f(171);class V extends T.a{constructor(F,I,N){if(super(),this.name=F,this._attrs=f.i(O.a)(I)?f.i(S.a)(I):new Map(I),this._children=[],N&&this.insertChildren(0,N),this._classes=new Set,this._attrs.has('class')){const M=this._attrs.get('class');w(this._classes,M),this._attrs.delete('class')}this._styles=new Map,this._attrs.has('style')&&(h(this._styles,this._attrs.get('style')),this._attrs.delete('style')),this._customProperties=new Map}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}is(F,I=null){return I?'element'==F&&I==this.name:'element'==F||F==this.name}clone(F){const I=[];if(F)for(let M of this.getChildren())I.push(M.clone(F));const N=new this.constructor(this.name,this._attrs,I);return N._classes=new Set(this._classes),N._styles=new Map(this._styles),N._customProperties=new Map(this._customProperties),N.getFillerOffset=this.getFillerOffset,N}appendChildren(F){return this.insertChildren(this.childCount,F)}getChild(F){return this._children[F]}getChildIndex(F){return this._children.indexOf(F)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){0this._classes.add(I))}removeClass(...F){this._fireChange('attributes',this),F.forEach((I)=>this._classes.delete(I))}hasClass(...F){for(let I of F)if(!this._classes.has(I))return!1;return!0}getClassNames(){return this._classes.keys()}setStyle(F,I){if(this._fireChange('attributes',this),f.i(O.a)(F)){const N=Object.keys(F);for(let M of N)this._styles.set(M,F[M])}else this._styles.set(F,I)}getStyle(F){return this._styles.get(F)}getStyleNames(){return this._styles.keys()}hasStyle(...F){for(let I of F)if(!this._styles.has(I))return!1;return!0}removeStyle(...F){this._fireChange('attributes',this),F.forEach((I)=>this._styles.delete(I))}findAncestor(...F){const I=new R.a(...F);for(let N=this.parent;N;){if(I.match(N))return N;N=N.parent}return null}setCustomProperty(F,I){this._customProperties.set(F,I)}getCustomProperty(F){return this._customProperties.get(F)}removeCustomProperty(F){return this._customProperties.delete(F)}*getCustomProperties(){yield*this._customProperties.entries()}}u.a=V},function(r,u,f){'use strict';function h(R){let V;if('string'!=typeof R)V=R.keyCode+(R.altKey?O.alt:0)+(R.ctrlKey?O.ctrl:0)+(R.shiftKey?O.shift:0);else if(V=O[R.toLowerCase()],!V)throw new S.a('keyboard-unknown-key: Unknown key name.',{key:R});return V}function P(R){return R.split(/\s*\+\s*/)}var S=f(0),E=f(430);u.c=h,u.d=function(R){return'string'==typeof R&&(R=P(R)),R.map((V)=>'string'==typeof V?h(V):V).reduce((V,F)=>F+V,0)},u.a=function(R){const V=P(R);return E.a.mac&&'ctrl'==V[0].toLowerCase()?'\u2318'+(V[1]||''):R};const O=function(){const R={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,esc:27,tab:9,ctrl:1114112,cmd:1114112,shift:2228224,alt:4456448};for(let V=65;90>=V;V++){const F=_StringfromCharCode(V);R[F.toLowerCase()]=V}for(let V=48;57>=V;V++)R[V-48]=V;for(let V=112;123>=V;V++)R['f'+(V-111)]=V;return R}();u.b=O},function(r,u,f){'use strict';function h(T,P,S,E,O){var R=-1,V=T.length;for(S||(S=C.a),O||(O=[]);++RO?0:O,E}getLastMatchingPosition(S,E={}){E.startPosition=this;const O=new h.a(E);return O.skip(S),O.position}getAncestors(){return this.parent.is('documentFragment')?[this.parent]:this.parent.getAncestors({includeNode:!0})}isEqual(S){return this.parent==S.parent&&this.offset==S.offset}isBefore(S){return'before'==this.compareWith(S)}isAfter(S){return'after'==this.compareWith(S)}compareWith(S){if(this.isEqual(S))return'same';if(this.parent===S.parent)return 0>this.offset-S.offset?'before':'after';const E=this.getAncestors(),O=S.getAncestors(),R=f.i(w.a)(E,O);let V;switch(R){case 0:return'different';case'prefix':V=E.length-1;break;case'extension':V=O.length-1;break;default:V=R-1;}const F=E[V],I=E[V+1],N=O[V+1];if(F===this.parent){const D=this.offset-N.index;return 0>=D?'before':'after'}if(F===S.parent){const D=I.index-S.offset;return 0>D?'before':'after'}const M=I.index-N.index;return 0>M?'before':'after'}static createAt(S,E){if(S instanceof P)return this.createFromPosition(S);let O=S;if('end'==E)E=O.is('text')?O.data.length:O.childCount;else{if('before'==E)return this.createBefore(O);if('after'==E)return this.createAfter(O);E||(E=0)}return new P(O,E)}static createAfter(S){if(S.is('textProxy'))return new P(S.textNode,S.offsetInText+S.data.length);if(!S.parent)throw new C.a('view-position-after-root: You can not make position after root.',{root:S});return new P(S.parent,S.index+1)}static createBefore(S){if(S.is('textProxy'))return new P(S.textNode,S.offsetInText);if(!S.parent)throw new C.a('view-position-before-root: You can not make position before root.',{root:S});return new P(S.parent,S.index)}static createFromPosition(S){return new this(S.parent,S.offset)}}u.a=P},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(406),T=f(22);class P extends h.a{constructor(S){super(S),this.set('label'),this.set('keystroke'),this.set('tooltip'),this.set('type','button'),this.set('isOn',!1),this.set('isEnabled',!0),this.set('withText',!1),this.set('icon'),this.set('tabindex',-1),this.bind('_tooltipString').to(this,'tooltip',this,'label',this,'keystroke',this._getTooltipString.bind(this));const E=this.bindTemplate;this.template=new w.a({tag:'button',attributes:{class:['ck-button',E.if('_tooltipString','ck-tooltip_s'),E.to('isEnabled',(O)=>O?'ck-enabled':'ck-disabled'),E.to('isOn',(O)=>O?'ck-on':'ck-off'),E.if('withText','ck-button_with-text')],type:E.to('type',(O)=>O?O:'button'),'data-ck-tooltip':[E.to('_tooltipString')],tabindex:E.to('tabindex')},children:[{tag:'span',attributes:{class:['ck-button__label']},children:[{text:E.to('label')}]}],on:{mousedown:E.to((O)=>{O.preventDefault()}),click:E.to((O)=>{this.isEnabled?this.fire('execute'):O.preventDefault()})}})}init(){let S=Promise.resolve();if(this.icon&&!this.iconView){const E=this.iconView=new C.a;E.bind('content').to(this,'icon'),this.element.insertBefore(E.element,this.element.firstChild),S=S.then(()=>this.addChildren(E))}return S.then(()=>super.init())}focus(){this.element.focus()}_getTooltipString(S,E,O){if(S){if('string'==typeof S)return S;if(O&&(O=f.i(T.a)(O)),S instanceof Function)return S(E,O);if(!0===S)return`${E}${O?` (${O})`:''}`}return!1}}u.a=P},function(r,u){'use strict';u.a=function(w,C){for(var T=-1,P=w.length,S=Array(P);++TO.maxOffset)throw new T.a('move-operation-nodes-do-not-exist: The nodes which should be moved do not exist.');else if(O===R&&V=V&&this.targetPosition.path[N]{if(H.attrs.length&&H.attrs.length!==K)throw new V.a('observable-bind-to-attrs-length: The number of attributes must match.');H.attrs.length||(H.attrs=this._bindAttrs)}),this._to=q.to,q.callback&&(this._bindings.get(U[0]).callback=q.callback),O(this._observable,this._to),S(this),this._bindAttrs.forEach((H)=>{E(this._observable,H)})}function C($){return $.every((q)=>'string'==typeof q)}function T(...$){if(!$.length)throw new V.a('observable-bind-to-parse-error: Invalid argument syntax in `to()`.');const q={to:[]};let U;return'function'==typeof $[$.length-1]&&(q.callback=$.pop()),$.forEach((K)=>{if('string'==typeof K)U.attrs.push(K);else if('object'==typeof K)U={observable:K,attrs:[]},q.to.push(U);else throw new V.a('observable-bind-to-parse-error: Invalid argument syntax in `to()`.')}),q}function P($,q,U,K){const H=$[M],Y=H.get(U),W=Y||{};W[K]||(W[K]=new Set),W[K].add(q),Y||H.set(U,W)}function S($){let q;$._bindings.forEach((U,K)=>{$._to.forEach((H)=>{q=H.attrs[U.callback?0:$._bindAttrs.indexOf(K)],U.to.push([H.observable,q]),P($._observable,U,H.observable,q)})})}function E($,q){const U=$[D],K=U.get(q);let H;K.callback?H=K.callback.apply($,K.to.map((Y)=>Y[0][Y[1]])):(H=K.to[0],H=H[0][H[1]]),$.hasOwnProperty(q)?$[q]=H:$.set(q,H)}function O($,q){q.forEach((U)=>{const K=$[M];let H;K.get(U.observable)||$.listenTo(U.observable,'change',(Y,W)=>{H=K.get(U.observable)[W],H&&H.forEach((Z)=>{E($,Z.attr)})})})}var R=f(7),V=f(0),F=f(45),I=f(15);const N=Symbol('attributes'),M=Symbol('boundObservables'),D=Symbol('boundAttributes'),z={set($,q){if(f.i(I.a)($))return void Object.keys($).forEach((K)=>{this.set(K,$[K])},this);h(this);const U=this[N];if($ in this&&!U.has($))throw new V.a('observable-set-cannot-override: Cannot override an existing property.');Object.defineProperty(this,$,{enumerable:!0,configurable:!0,get(){return U.get($)},set(K){const H=U.get($);H===K&&U.has($)||(U.set($,K),this.fire('change:'+$,$,K,H))}}),this[$]=q},bind(...$){if(!$.length||!C($))throw new V.a('observable-bind-wrong-attrs: All attributes must be strings.');if(new Set($).size!==$.length)throw new V.a('observable-bind-duplicate-attrs: Attributes must be unique.');h(this);const q=this[D];$.forEach((K)=>{if(q.has(K))throw new V.a('observable-bind-rebind: Cannot bind the same attribute more that once.')});const U=new Map;return $.forEach((K)=>{const H={attr:K,to:[]};q.set(K,H),U.set(K,H)}),{to:w,_observable:this,_bindAttrs:$,_to:[],_bindings:U}},unbind(...$){if(!(N in this))return;const q=this[D],U=this[M];if($.length){if(!C($))throw new V.a('observable-unbind-wrong-attrs: Attributes must be strings.');$.forEach((K)=>{const H=q.get(K);let Y,W,Z,G;H.to.forEach((J)=>{Y=J[0],W=J[1],Z=U.get(Y),G=Z[W],G.delete(H),G.size||delete Z[W],Object.keys(Z).length||(U.delete(Y),this.stopListening(Y,'change'))}),q.delete(K)})}else U.forEach((K,H)=>{this.stopListening(H,'change')}),U.clear(),q.clear()}};u.a=z,f.i(F.a)(z,R.a)},function(r,u,f){(function(h){function w(T,P){var S=T[1]||'',E=T[3];if(!E)return S;if(P){var O=C(E),R=E.sources.map(function(V){return'/*# sourceURL='+E.sourceRoot+V+' */'});return[S].concat(R).concat([O]).join('\n')}return[S].join('\n')}function C(T){var P=new h(JSON.stringify(T)).toString('base64');return'/*# '+('sourceMappingURL=data:application/json;charset=utf-8;base64,'+P)+' */'}r.exports=function(T){var P=[];return P.toString=function(){return this.map(function(E){var O=w(E,T);return E[2]?'@media '+E[2]+'{'+O+'}':O}).join('')},P.i=function(S,E){'string'==typeof S&&(S=[[null,S,'']]);for(var O={},R=0,V;RD&&(D=this.boundaries.start.offset),I=R.offset-D}N=R.offset-F.startOffset;const M=new C.a(F,N-I,I);return R.offset-=I,this.position=R,h('text',M,O,R,I)}return R.path.pop(),this.position=R,this._visitedParent=V.parent,h('elementStart',V,O,R,1)}}u.a=E},function(r,u,f){'use strict';function h(P){return P.item.is('attributeElement')||P.item.is('uiElement')}var w=f(25),C=f(53);class T{constructor(P,S=null){this.start=w.a.createFromPosition(P),this.end=S?w.a.createFromPosition(S):w.a.createFromPosition(P)}*[Symbol.iterator](){yield*new C.a({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let P=this.start.getLastMatchingPosition(h,{direction:'backward'}),S=this.end.getLastMatchingPosition(h);return P.parent.is('text')&&P.isAtStart&&(P=w.a.createBefore(P.parent)),S.parent.is('text')&&S.isAtEnd&&(S=w.a.createAfter(S.parent)),new T(P,S)}getTrimmed(){let P=this.start.getLastMatchingPosition(h),S=this.end.getLastMatchingPosition(h,{direction:'backward'}),E=P.nodeAfter,O=S.nodeBefore;return E&&E.is('text')&&(P=new w.a(E,0)),O&&O.is('text')&&(S=new w.a(O,O.data.length)),new T(P,S)}isEqual(P){return this==P||this.start.isEqual(P.start)&&this.end.isEqual(P.end)}containsPosition(P){return P.isAfter(this.start)&&P.isBefore(this.end)}containsRange(P){return this.containsPosition(P.start)&&this.containsPosition(P.end)}getDifference(P){const S=[];return this.isIntersecting(P)?(this.containsPosition(P.start)&&S.push(new T(this.start,P.start)),this.containsPosition(P.end)&&S.push(new T(P.end,this.end))):S.push(T.createFromRange(this)),S}getIntersection(P){if(this.isIntersecting(P)){let S=this.start,E=this.end;return this.containsPosition(P.start)&&(S=P.start),this.containsPosition(P.end)&&(E=P.end),new T(S,E)}return null}getWalker(P={}){return P.boundaries=this,new C.a(P)}*getItems(P={}){P.boundaries=this,P.ignoreElementEnd=!0;const S=new C.a(P);for(let E of S)yield E.item}*getPositions(P={}){P.boundaries=this;const S=new C.a(P);yield S.position;for(let E of S)yield E.nextPosition}isIntersecting(P){return this.start.isBefore(P.end)&&this.end.isAfter(P.start)}static createFromParentsAndOffsets(P,S,E,O){return new this(new w.a(P,S),new w.a(E,O))}static createFromRange(P){return new this(P.start,P.end)}static createFromPositionAndShift(P,S){const E=P,O=P.getShiftedBy(S);return 0C&&(C=-C>S?0:S+C),T=T>S?S:T,0>T&&(T+=S),S=C>T?0:T-C>>>0,C>>>=0;for(var E=Array(S);++PV.clone(!0)));return new O(this.position,R,this.baseVersion)}getReversed(){return new T.a(this.position,this.nodes.maxOffset,this.baseVersion+1)}_execute(){const R=this.nodes;this.nodes=new C.a([...R].map((F)=>F.clone(!0)));const V=P.a.insert(this.position,R);return{range:V}}static get className(){return'engine.model.operation.InsertOperation'}static fromJSON(R,V){let F=[];for(let I of R.nodes)I.name?F.push(E.a.fromJSON(I)):F.push(S.a.fromJSON(I));return new O(w.a.fromJSON(R.position,V),F,R.baseVersion)}}u.a=O},function(r,u,f){'use strict';var h=f(28),w=f(1),C=f(5),T=f(113);class P extends h.a{constructor(S,E,O){const R=S.root.document.graveyard,V=new w.a(R,[R.maxOffset,0]);super(S,E,V,O),this._needsHolderElement=!0}get type(){return'remove'}get _holderElementOffset(){return this.targetPosition.path[0]}set _holderElementOffset(S){this.targetPosition.path[0]=S}getReversed(){return new T.a(this.targetPosition,this.howMany,this.sourcePosition,this.baseVersion+1)}clone(){let S=new P(this.sourcePosition,this.howMany,this.baseVersion);return S.targetPosition=w.a.createFromPosition(this.targetPosition),S}_execute(){if(this._needsHolderElement){const S=this.targetPosition.root,E=new C.a('$graveyardHolder');S.insertChildren(this._holderElementOffset,E),this.sourcePosition.root==S&&this.sourcePosition.path[0]>=this._holderElementOffset&&this.sourcePosition.path[0]++}return super._execute()}static get className(){return'engine.model.operation.RemoveOperation'}static fromJSON(S,E){let O=w.a.fromJSON(S.sourcePosition,E);const R=new P(O,S.howMany,S.baseVersion);return R.targetPosition=w.a.fromJSON(S.targetPosition,E),R._needsHolderElement=S._needsHolderElement,R}}u.a=P},function(r,u,f){'use strict';function h(){return 0===this.childCount?0:null}var w=f(21);class C extends w.a{constructor(T,P,S){super(T,P,S),this.getFillerOffset=h}is(T,P=null){return P?'containerElement'==T&&P==this.name||super.is(T,P):'containerElement'==T||super.is(T)}}u.a=C},function(r,u,f){'use strict';var T=f(153),P=f(5);u.c=function(E,O){return E.setCustomProperty(S,!0),f.i(T.a)(E,{label:function(){const V=E.getChild(0),F=V.getAttribute('alt');return F?`${F} ${O}`:O}})},u.a=function(E){return!!E.getCustomProperty(S)&&f.i(T.b)(E)},u.b=function(E){return E instanceof P.a&&'image'==E.name};const S=Symbol('isImage')},function(r,u){'use strict';u.a=function(w){return!!(w&&w[Symbol.iterator])}},function(r,u,f){'use strict';var w=f(83),C=f(125),T=f(126),P=f(136),S=f(471),E=f(95);u.a=function(R,V,F){var I=-1,N=C.a,M=R.length,D=!0,z=[],$=z;if(F)D=!1,N=T.a;else if(M>=200){var q=V?null:f.i(S.a)(R);if(q)return f.i(E.a)(q);D=!1,N=P.a,$=new w.a}else $=V?[]:z;outer:for(;++I{let $=I.matcher.matchAll(M.input);if($)for(let q of $){const U=V instanceof Function?V(M.input):new T.a(V),K=Array.from(U.getAttributeKeys());if(!z.schema.check({name:U.name,attributes:K,inside:M.context}))continue;if(!D.consume(M.input,I.consume||q.match))continue;M.context.push(U);const H=z.convertChildren(M.input,D,M),Y=P.a.createAt(U,'end');S.a.insert(Y,H),M.context.pop(),M.output=U;break}}},'normal')}toAttribute(V,F){this._setCallback(function(N){return(M,D,z,$)=>{let q=N.matcher.matchAll(D.input);if(q)for(let U of q){if(!z.consume(D.input,N.consume||U.match))continue;D.output||(D.output=$.convertChildren(D.input,z,D));let K=V instanceof Function?V(D.input):{key:V,value:F};h(D.output,K,D,$);break}}},'low')}toMarker(V){this._setCallback(function(I){return(N,M,D)=>{const z=I.matcher.matchAll(M.input);if(!z)return;let $;if($=V instanceof Function?V(M.input):new T.a('$marker',{'data-name':M.input.getAttribute('data-name')}),'$marker'!=$.name||'string'!=typeof $.getAttribute('data-name'))throw new E.a('build-view-converter-invalid-marker: Invalid model element to mark marker range.');for(const q of z)if(D.consume(M.input,I.consume||q.match)){M.output=$;break}}},'normal')}_setCallback(V,F){for(let I of this._from){const N=I.matcher.getElementName(),M=N?'element:'+N:'element',D=V(I),z=null===I.priority?F:I.priority;for(let $ of this._dispatchers)$.on(M,D,{priority:z})}}}},function(r,u,f){'use strict';function h(E){return'string'==typeof E?[new T.a(E)]:(f.i(P.a)(E)||(E=[E]),Array.from(E).map((O)=>'string'==typeof O?new T.a(O):O))}var w=f(73),C=f(5),T=f(24),P=f(43);class S{constructor(E){this.markers=new Map,this._children=new w.a,E&&this.insertChildren(0,E)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(E){return'documentFragment'==E}getChild(E){return this._children.getNode(E)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(E){return this._children.getNodeIndex(E)}getChildStartOffset(E){return this._children.getNodeStartOffset(E)}getPath(){return[]}offsetToIndex(E){return this._children.offsetToIndex(E)}appendChildren(E){this.insertChildren(this.childCount,E)}insertChildren(E,O){O=h(O);for(let R of O)R.parent=this;this._children.insertNodes(E,O)}removeChildren(E,O=1){const R=this._children.removeNodes(E,O);for(let V of R)V.parent=null;return R}toJSON(){let E=[];for(let O of this._children)E.push(O.toJSON());return E}static fromJSON(E){let O=[];for(let R of E)R.name?O.push(C.a.fromJSON(R)):O.push(T.a.fromJSON(R));return new S(O)}}u.a=S},function(r,u,f){'use strict';var h=f(80),w=f(4);class C{constructor(T){this.document=T,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}}u.a=C,f.i(w.a)(C,h.a)},function(r,u,f){'use strict';var h=f(21),w=f(29),C=f(368),T=f(25),P=f(0);class S{constructor(E={}){if(!E.boundaries&&!E.startPosition)throw new P.a('view-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.');if(E.direction&&'forward'!=E.direction&&'backward'!=E.direction)throw new P.a('view-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.',{direction:E.direction});this.boundaries=E.boundaries||null,this.position=E.startPosition?T.a.createFromPosition(E.startPosition):T.a.createFromPosition(E.boundaries['backward'==E.direction?'end':'start']),this.direction=E.direction||'forward',this.singleCharacters=!!E.singleCharacters,this.shallow=!!E.shallow,this.ignoreElementEnd=!!E.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(E){let O,R,V;do V=this.position,({done:O,value:R}=this.next());while(!O&&E(R));O||(this.position=V)}next(){return'forward'==this.direction?this._next():this._previous()}_next(){let E=T.a.createFromPosition(this.position);const O=this.position,R=E.parent;if(null===R.parent&&E.offset===R.childCount)return{done:!0};if(R===this._boundaryEndParent&&E.offset==this.boundaries.end.offset)return{done:!0};let V;if(R instanceof w.a){if(E.isAtEnd)return this.position=T.a.createAfter(R),this._next();V=R.data[E.offset]}else V=R.getChild(E.offset);if(V instanceof h.a)return this.shallow?E.offset++:E=new T.a(V,0),this.position=E,this._formatReturnValue('elementStart',V,O,E,1);if(V instanceof w.a){if(this.singleCharacters)return E=new T.a(V,0),this.position=E,this._next();let F=V.data.length,I=V;return V==this._boundaryEndParent?(F=this.boundaries.end.offset,I=new C.a(V,0,F),E=T.a.createAfter(I)):E.offset++,this.position=E,this._formatReturnValue('text',I,O,E,F)}if('string'==typeof V){let F;if(this.singleCharacters)F=1;else{const N=R===this._boundaryEndParent?this.boundaries.end.offset:R.data.length;F=N-E.offset}const I=new C.a(R,E.offset,F);return E.offset+=F,this.position=E,this._formatReturnValue('text',I,O,E,F)}return E=T.a.createAfter(R),this.position=E,this.ignoreElementEnd?this._next():this._formatReturnValue('elementEnd',R,O,E)}_previous(){let E=T.a.createFromPosition(this.position);const O=this.position,R=E.parent;if(null===R.parent&&0===E.offset)return{done:!0};if(R==this._boundaryStartParent&&E.offset==this.boundaries.start.offset)return{done:!0};let V;if(R instanceof w.a){if(E.isAtStart)return this.position=T.a.createBefore(R),this._previous();V=R.data[E.offset-1]}else V=R.getChild(E.offset-1);if(V instanceof h.a)return this.shallow?(E.offset--,this.position=E,this._formatReturnValue('elementStart',V,O,E,1)):(E=new T.a(V,V.childCount),this.position=E,this.ignoreElementEnd?this._previous():this._formatReturnValue('elementEnd',V,O,E));if(V instanceof w.a){if(this.singleCharacters)return E=new T.a(V,V.data.length),this.position=E,this._previous();let F=V.data.length,I=V;if(V==this._boundaryStartParent){const N=this.boundaries.start.offset;I=new C.a(V,N,V.data.length-N),F=I.data.length,E=T.a.createBefore(I)}else E.offset--;return this.position=E,this._formatReturnValue('text',I,O,E,F)}if('string'==typeof V){let F;if(!this.singleCharacters){const N=R===this._boundaryStartParent?this.boundaries.start.offset:0;F=E.offset-N}else F=1;E.offset-=F;const I=new C.a(R,E.offset,F);return this.position=E,this._formatReturnValue('text',I,O,E,F)}return E=T.a.createBefore(R),this.position=E,this._formatReturnValue('elementStart',R,O,E,1)}_formatReturnValue(E,O,R,V,F){return O instanceof C.a&&(O.offsetInText+O.data.length==O.textNode.data.length&&('forward'!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?R=T.a.createAfter(O.textNode):(V=T.a.createAfter(O.textNode),this.position=V)),0===O.offsetInText&&('backward'!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?R=T.a.createBefore(O.textNode):(V=T.a.createBefore(O.textNode),this.position=V))),{done:!1,value:{type:E,item:O,previousPosition:R,nextPosition:V,length:F}}}}u.a=S},function(r,u,f){'use strict';var w=f(235);u.a=function(C,T){var P=C[T];return f.i(w.a)(P)?P:void 0}},function(r,u,f){'use strict';var w=f(11),C=f(47),T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,P=/^\w*$/;u.a=function(S,E){if(f.i(w.a)(S))return!1;var O=typeof S;return'number'==O||'symbol'==O||'boolean'==O||null==S||f.i(C.a)(S)||P.test(S)||!T.test(S)||null!=E&&S in Object(E)}},function(r,u,f){'use strict';var w=f(47);u.a=function(T){if('string'==typeof T||f.i(w.a)(T))return T;var P=T+'';return'0'==P&&1/T==-(1/0)?'-0':P}},function(r,u){'use strict';u.a=function(w,C){return w===C||w!==w&&C!==C}},function(r,u,f){'use strict';var h=f(152),w=f(0);class C{constructor(T){this.parent=null,this._attrs=f.i(h.a)(T)}get index(){let T;if(!this.parent)return null;if(null===(T=this.parent.getChildIndex(this)))throw new w.a('model-node-not-found-in-parent: The node\'s parent does not contain this node.');return T}get startOffset(){let T;if(!this.parent)return null;if(null===(T=this.parent.getChildStartOffset(this)))throw new w.a('model-node-not-found-in-parent: The node\'s parent does not contain this node.');return T}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const T=this.index;return null!==T&&this.parent.getChild(T+1)||null}get previousSibling(){const T=this.index;return null!==T&&this.parent.getChild(T-1)||null}get root(){let T=this;for(;T.parent;)T=T.parent;return T}get document(){return this.root==this?null:this.root.document||null}clone(){return new C(this._attrs)}getPath(){const T=[];for(let P=this;P.parent;)T.unshift(P.startOffset),P=P.parent;return T}getAncestors(T={includeNode:!1,parentFirst:!1}){const P=[];for(let S=T.includeNode?this:this.parent;S;)P[T.parentFirst?'push':'unshift'](S),S=S.parent;return P}remove(){this.parent.removeChildren(this.index)}hasAttribute(T){return this._attrs.has(T)}getAttribute(T){return this._attrs.get(T)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}setAttribute(T,P){this._attrs.set(T,P)}setAttributesTo(T){this._attrs=f.i(h.a)(T)}removeAttribute(T){return this._attrs.delete(T)}clearAttributes(){this._attrs.clear()}toJSON(){let T={};return this._attrs.size&&(T.attributes=[...this._attrs]),T}}u.a=C},function(r,u,f){'use strict';function h(I,N){return!N.has(I)&&(N.add(I),I.document.schema.itemExtends(I.name,'$block')&&I.parent)}function w(I,N){const M=I.parent.getAncestors({parentFirst:!0,includeNode:!0}),D=M.find((z)=>h(z,N));return M.forEach((z)=>N.add(z)),D}var C=f(1),T=f(5),P=f(2),S=f(7),E=f(0),O=f(4),R=f(152),V=f(531);class F{constructor(){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map}get anchor(){if(0{if(!(D instanceof P.a))throw new E.a('model-selection-added-not-range: Trying to add an object that is not an instance of Range.');return this._ranges.every((z)=>{return!z.isEqual(D)})});if(I.length!==this._ranges.length||M){this._removeAllRanges();for(let D of I)this._pushRange(D);this._lastRangeBackward=!!N,this.fire('change:range',{directChange:!0})}}setTo(I){this.setRanges(I.getRanges(),I.isBackward)}collapse(I,N){const M=C.a.createAt(I,N),D=new P.a(M,M);this.setRanges([D])}collapseToStart(){const I=this.getFirstPosition();null!==I&&this.setRanges([new P.a(I,I)])}collapseToEnd(){const I=this.getLastPosition();null!==I&&this.setRanges([new P.a(I,I)])}setFocus(I,N){if(null===this.anchor)throw new E.a('model-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.');const M=C.a.createAt(I,N);if('same'!=M.compareWith(this.focus)){const D=this.anchor;this._ranges.length&&this._popRange(),'before'==M.compareWith(D)?this.addRange(new P.a(M,D),!0):this.addRange(new P.a(D,M))}}getAttribute(I){return this._attrs.get(I)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(I){return this._attrs.has(I)}clearAttributes(){if(0T||T>C.offsetSize)throw new h.a('model-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.');if(0>P||T+P>C.offsetSize)throw new h.a('model-textproxy-wrong-length: Given length value is incorrect.');this.data=C.data.substring(T,T+P),this.offsetInText=T}get startOffset(){return null===this.textNode.startOffset?null:this.textNode.startOffset+this.offsetInText}get offsetSize(){return this.data.length}get endOffset(){return null===this.startOffset?null:this.startOffset+this.offsetSize}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(C){return'textProxy'==C}getPath(){const C=this.textNode.getPath();return 0{const M=N.createElement('br');return M.dataset.ckeFiller=!0,M};u.a=(N)=>N.createTextNode('\xA0');const V=7;u.d=V;let F='';for(let N=0;N{this.listenTo(T,S,(E,O)=>{this.isEnabled&&this.onDomEvent(O)},{useCapture:this.useCapture})})}fire(T,P,S){this.isEnabled&&this.document.fire(T,new w.a(this.document,P,S))}}u.a=C},function(r,u,f){'use strict';var h=f(0),w=f(36),C=f(25),T=f(4),P=f(7),S=f(21);class E{constructor(){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel=''}setFake(O=!0,R={}){this._isFake=O,this._fakeSelectionLabel=O?R.label||'':'',this.fire('change')}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const O=this._ranges[this._ranges.length-1],R=this._lastRangeBackward?O.end:O.start;return C.a.createFromPosition(R)}get focus(){if(!this._ranges.length)return null;const O=this._ranges[this._ranges.length-1],R=this._lastRangeBackward?O.start:O.end;return C.a.createFromPosition(R)}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}addRange(O,R){if(!(O instanceof w.a))throw new h.a('view-selection-invalid-range: Invalid Range.');this._pushRange(O),this._lastRangeBackward=!!R,this.fire('change')}*getRanges(){for(let O of this._ranges)yield w.a.createFromRange(O)}getFirstRange(){let O=null;for(let R of this._ranges)(!O||R.start.isBefore(O.start))&&(O=R);return O?w.a.createFromRange(O):null}getLastRange(){let O=null;for(let R of this._ranges)(!O||R.end.isAfter(O.end))&&(O=R);return O?w.a.createFromRange(O):null}getFirstPosition(){const O=this.getFirstRange();return O?C.a.createFromPosition(O.start):null}getLastPosition(){const O=this.getLastRange();return O?C.a.createFromPosition(O.end):null}isEqual(O){if(this.isFake!=O.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=O.fakeSelectionLabel)return!1;if(this.rangeCount!=O.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(O.anchor)||!this.focus.isEqual(O.focus))return!1;for(let R of this._ranges){let V=!1;for(let F of O._ranges)if(R.isEqual(F)){V=!0;break}if(!V)return!1}return!0}removeAllRanges(){this._ranges.length&&(this._ranges=[],this.fire('change'))}setRanges(O,R){this._ranges=[];for(let V of O){if(!(V instanceof w.a))throw new h.a('view-selection-invalid-range: Invalid Range.');this._pushRange(V)}this._lastRangeBackward=!!R,this.fire('change')}setTo(O){this._isFake=O._isFake,this._fakeSelectionLabel=O._fakeSelectionLabel,this.setRanges(O.getRanges(),O.isBackward)}collapse(O,R){const V=C.a.createAt(O,R),F=new w.a(V,V);this.setRanges([F])}collapseToStart(){const O=this.getFirstPosition();null!==O&&this.setRanges([new w.a(O,O)])}collapseToEnd(){const O=this.getLastPosition();null!==O&&this.setRanges([new w.a(O,O)])}setFocus(O,R){if(null===this.anchor)throw new h.a('view-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.');const V=C.a.createAt(O,R);if('same'!=V.compareWith(this.focus)){const F=this.anchor;this._ranges.pop(),'before'==V.compareWith(F)?this.addRange(new w.a(V,F),!0):this.addRange(new w.a(F,V))}}getSelectedElement(){if(1!==this.rangeCount)return null;const O=this.getFirstRange(),R=O.start.nodeAfter,V=O.end.nodeBefore;return R instanceof S.a&&R==V?R:null}static createFromSelection(O){const R=new E;return R.setTo(O),R}_pushRange(O){for(let R of this._ranges)if(O.isIntersecting(R))throw new h.a('view-selection-range-intersects: Trying to add a range that intersects with another range from selection.',{addedRange:O,intersectingRange:R});this._ranges.push(w.a.createFromRange(O))}}u.a=E,f.i(T.a)(E,P.a)},function(r,u){'use strict';u.a=function(w,C){const T=_Mathmin(w.length,C.length);for(let P=0;Pthis._focus(S),{useCapture:!0}),this.listenTo(S,'blur',()=>this._blur(),{useCapture:!0}),this._elements.add(S)}remove(S){S===this.focusedElement&&this._blur(S),this._elements.has(S)&&(this.stopListening(S),this._elements.delete(S))}_focus(S){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=S,this.isFocused=!0}_blur(){this._nextEventLoopTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0)}}u.a=P,f.i(T.a)(P,h.a),f.i(T.a)(P,w.a)},function(r,u,f){'use strict';var h=f(80),w=f(22);u.a=class{constructor(){this._listener=Object.create(h.a),this._keystrokes=new Map}listenTo(T){this._listener.listenTo(T,'keydown',(P,S)=>{this.press(S)})}set(T,P){const S=f.i(w.d)(T),E=this._keystrokes.get(S);E?E.push(P):this._keystrokes.set(S,[P])}press(T){const P=f.i(w.c)(T),S=this._keystrokes.get(P);if(!S)return!1;for(let E of S)E(T,()=>{T.preventDefault(),T.stopPropagation()});return!0}destroy(){this._keystrokes=new Map,this._listener.stopListening()}}},function(r,u,f){'use strict';var w=f(57),C=Object.prototype,T=C.hasOwnProperty;u.a=function(P,S,E){var O=P[S];T.call(P,S)&&f.i(w.a)(O,E)&&(E!==void 0||S in P)||(P[S]=E)}},function(r,u,f){'use strict';var w=f(83),C=f(125),T=f(126),P=f(27),S=f(134),E=f(136);u.a=function(R,V,F,I){var N=-1,M=C.a,D=!0,z=R.length,$=[],q=V.length;if(!z)return $;F&&(V=f.i(P.a)(V,f.i(S.a)(F))),I?(M=T.a,D=!1):V.length>=200&&(M=E.a,D=!1,V=new w.a(V));outer:for(;++NC;C++)w+=_Mathfloor(65536*(1+Math.random())).toString(16).substring(1);return w}},function(r,u,f){'use strict';function h(q,U,K,H,Y){if(H.test(K.input)&&q.schema.check({name:'paragraph',inside:K.context})){const W=new E.a('paragraph');$.add(W),K.context.push(W);const Z=Y.convertItem(K.input,H,K);Z&&(K.output=W,W.appendChildren(Z)),K.context.pop()}}function w(q,U,K,H,Y){if(z.paragraphLikeElements.has(K.input.name)&&H.test(K.input,{name:!0})&&!T(K.input)&&q.schema.check({name:'paragraph',inside:K.context})){H.consume(K.input,{name:!0});const W=new E.a('paragraph');K.context.push(W);const Z=Y.convertChildren(K.input,H,K);W.appendChildren(I.a.normalizeNodes(Z)),K.context.pop(),K.output=W}}function C(q,U){if(!U.output)return;let K;for(K=f.i(D.a)(U.output)?U.output[0]:U.output.getChild(0);K&&K.nextSibling;){const H=K.nextSibling;$.has(K)&&$.has(H)?(I.a.insert(O.a.createAt(K,'end'),Array.from(H.getChildren())),I.a.remove(R.a.createOn(H))):K=K.nextSibling}}function T(q){const U=F.a.createIn(q);for(const K of U)if(K.item instanceof V.a&&z.paragraphLikeElements.has(K.item.name))return!0;return!1}var P=f(390),S=f(3),E=f(5),O=f(1),R=f(2),V=f(21),F=f(36),I=f(13),N=f(49),M=f(50),D=f(11);class z extends S.a{static get pluginName(){return'paragraph/paragraph'}init(){const q=this.editor,U=q.document,K=q.data,H=q.editing;U.schema.registerItem('paragraph','$block'),f.i(N.a)().for(K.modelToView,H.modelToView).fromElement('paragraph').toElement('p'),f.i(M.a)().for(K.viewToModel).fromElement('p').toElement('paragraph'),K.viewToModel.on('text',(Y,W,Z,G)=>{h(U,Y,W,Z,G)},{priority:'lowest'}),K.viewToModel.on('element',C,{priority:'lowest'}),K.viewToModel.on('documentFragment',C,{priority:'lowest'}),K.viewToModel.on('element',(Y,W,Z,G)=>{w(U,Y,W,Z,G)},{priority:'low'}),q.commands.set('paragraph',new P.a(q))}}u.a=z,z.paragraphLikeElements=new Set(['blockquote','dd','div','dt','h1','h2','h3','h4','h5','h6','li','p','td']);const $=new WeakSet},function(r,u,f){'use strict';var h=f(58),w=f(0);class C{constructor(T){this._nodes=[],T&&this.insertNodes(0,T)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce((T,P)=>T+P.offsetSize,0)}getNode(T){return this._nodes[T]||null}getNodeIndex(T){const P=this._nodes.indexOf(T);return-1==P?null:P}getNodeStartOffset(T){const P=this.getNodeIndex(T);return null===P?null:this._nodes.slice(0,P).reduce((S,E)=>S+E.offsetSize,0)}indexToOffset(T){if(T==this._nodes.length)return this.maxOffset;const P=this._nodes[T];if(!P)throw new w.a('model-nodelist-index-out-of-bounds: Given index cannot be found in the node list.');return this.getNodeStartOffset(P)}offsetToIndex(T){let P=0;for(let S of this._nodes){if(T>=P&&TT.toJSON())}}u.a=C},function(r,u,f){'use strict';var h=f(34),w=f(2),C=f(0),T=f(13),P=f(518);class S extends h.a{constructor(E,O,R,V,F){super(F),this.range=w.a.createFromRange(E),this.key=O,this.oldValue=R===void 0?null:R,this.newValue=V===void 0?null:V}get type(){return null===this.oldValue?'addAttribute':null===this.newValue?'removeAttribute':'changeAttribute'}clone(){return new S(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new S(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_execute(){for(let E of this.range.getItems()){if(null!==this.oldValue&&!f.i(P.a)(E.getAttribute(this.key),this.oldValue))throw new C.a('attribute-operation-wrong-old-value: Changed node has different attribute value than operation\'s old attribute value.',{item:E,key:this.key,value:this.oldValue});if(null===this.oldValue&&null!==this.newValue&&E.hasAttribute(this.key))throw new C.a('attribute-operation-attribute-exists: The attribute with given key already exists.',{node:E,key:this.key});if(f.i(P.a)(this.oldValue,this.newValue))return}return T.a.setAttribute(this.range,this.key,this.newValue),{range:this.range,key:this.key,oldValue:this.oldValue,newValue:this.newValue}}static get className(){return'engine.model.operation.AttributeOperation'}static fromJSON(E,O){return new S(w.a.fromJSON(E.range,O),E.key,E.oldValue,E.newValue,E.baseVersion)}}u.a=S},function(r,u,f){'use strict';var h=f(34);class w extends h.a{clone(){return new w(this.baseVersion)}getReversed(){return new w(this.baseVersion+1)}_execute(){}static get className(){return'engine.model.operation.NoOperation'}}u.a=w},function(r,u,f){'use strict';var h=f(41),w=f(0),C=f(4),T=f(31);const P=Symbol('document');class S extends h.a{constructor(E,O,R){super(E,O,R),this.set('isReadOnly',!1),this.set('isFocused',!1)}get document(){return this.getCustomProperty(P)}set document(E){if(this.getCustomProperty(P))throw new w.a('view-editableelement-document-already-set: View document is already set.');this.setCustomProperty(P,E),this.bind('isFocused').to(E,'isFocused',(O)=>O&&E.selection.editableElement==this),this.listenTo(E,'render',()=>{this.isFocused=E.isFocused&&E.selection.editableElement==this},{priority:'high'})}}u.a=S,f.i(C.a)(S,T.a)},function(r,u,f){'use strict';var h=f(0),w=f(7),C=f(4);class T{constructor(){this.parent=null}get index(){let P;if(!this.parent)return null;if(-1==(P=this.parent.getChildIndex(this)))throw new h.a('view-node-not-found-in-parent: The node\'s parent does not contain this node.');return P}get nextSibling(){const P=this.index;return null!==P&&this.parent.getChild(P+1)||null}get previousSibling(){const P=this.index;return null!==P&&this.parent.getChild(P-1)||null}get root(){let P=this;for(;P.parent;)P=P.parent;return P}get document(){return this.parent instanceof T?this.parent.document:null}getAncestors(P={includeNode:!1,parentFirst:!1}){const S=[];for(let E=P.includeNode?this:this.parent;E;)S[P.parentFirst?'push':'unshift'](E),E=E.parent;return S}remove(){this.parent.removeChildren(this.index)}_fireChange(P,S){this.fire('change:'+P,S),this.parent&&this.parent._fireChange(P,S)}}u.a=T,f.i(C.a)(T,w.a)},function(r,u,f){'use strict';function C(pe){const me=pe.offset,ge=pe.parent;if(ge.is('text'))return pe;if(ge.is('attributeElement')&&0===ge.childCount){const be=ge.parent,_e=ge.index;return ge.remove(),C(new Q.a(be,_e))}const fe=ge.getChild(me-1),he=ge.getChild(me);if(!fe||!he)return pe;if(fe.is('text')&&he.is('text'))return H(fe,he);if(fe.is('attributeElement')&&he.is('attributeElement')&&fe.isSimilar(he)){const be=fe.childCount;return fe.appendChildren(he.getChildren()),he.remove(),C(new Q.a(fe,be))}return pe}function S(pe,me){me=f.i(de.a)(me)?[...me]:[me],G(me);const ge=M(pe);if(!ge)throw new se.a('view-writer-invalid-position-container');const fe=z(pe,!0),he=ge.insertChildren(fe.offset,me),be=fe.getShiftedBy(he),_e=C(fe);if(0===he)return new ie.a(_e,_e);_e.isEqual(fe)||be.offset--;const ke=C(be);return new ie.a(_e,ke)}function E(pe){if(X(pe),pe.isCollapsed)return new le.a;const{start:me,end:ge}=D(pe,!0),fe=me.parent,he=ge.offset-me.offset,be=fe.removeChildren(me.offset,he),_e=C(me);return pe.start=_e,pe.end=Q.a.createFromPosition(_e),new le.a(be)}function R(pe,me){let ge;if(me.isAfter(pe.end)){me=z(me,!0);const fe=me.parent,he=fe.childCount;pe=D(pe,!0),ge=E(pe),me.offset+=fe.childCount-he}else ge=E(pe);return S(me,ge)}function V(pe,me){if(!(me instanceof te.a))throw new se.a('view-writer-wrap-invalid-attribute');if(X(pe),pe.isCollapsed)return pe;if(pe.end.isEqual(pe.start.getShiftedBy(1))){const we=pe.start.nodeAfter;if(we instanceof te.a&&Y(me,we))return pe}if(Z(pe)&&Y(me,pe.start.parent)){const we=pe.start.parent.parent,ve=pe.start.parent.index;return ie.a.createFromParentsAndOffsets(we,ve,we,ve+1)}const{start:ge,end:fe}=D(pe,!0),he=ge.parent,be=$(he,ge.offset,fe.offset,me),_e=q(he,be.start.offset,be.end.offset,me),ke=C(_e.start);ke.isEqual(_e.start)||_e.end.offset--;const ye=C(_e.end);return new ie.a(ke,ye)}function M(pe){let me=pe.parent;for(;!J(me);){if(!me)return;me=me.parent}return me}function D(pe,me=!1){const ge=pe.start,fe=pe.end;if(X(pe),pe.isCollapsed){const ke=z(pe.start,me);return new ie.a(ke,ke)}const he=z(fe,me),be=he.parent.childCount,_e=z(ge,me);return he.offset+=he.parent.childCount-be,new ie.a(_e,he)}function z(pe,me=!1){const ge=pe.offset,fe=pe.parent;if(pe.parent.is('emptyElement'))throw new se.a('view-writer-cannot-break-empty-element');if(pe.parent.is('uiElement'))throw new se.a('view-writer-cannot-break-ui-element');if(!me&&fe.is('text')&&J(fe.parent))return Q.a.createFromPosition(pe);if(J(fe))return Q.a.createFromPosition(pe);if(fe.is('text'))return z(K(pe),me);const he=fe.childCount;if(ge==he){const be=new Q.a(fe.parent,fe.index+1);return z(be,me)}if(0===ge){const be=new Q.a(fe.parent,fe.index);return z(be,me)}const be=fe.index+1,_e=fe.clone();fe.parent.insertChildren(be,_e);const ke=fe.childCount-ge,ye=fe.removeChildren(ge,ke);_e.appendChildren(ye);const we=new Q.a(fe.parent,be);return z(we,me)}function $(pe,me,ge,fe){let he=me;const be=[];for(;heme instanceof ge))throw new se.a('view-writer-insert-invalid-node');me.is('text')||G(me.getChildren())}}function J(pe){return pe&&(pe.is('containerElement')||pe.is('documentFragment'))}function X(pe){const me=M(pe.start),ge=M(pe.end);if(!me||!ge||me!==ge)throw new se.a('view-writer-invalid-range-container')}var Q=f(25),ee=f(41),te=f(116),ae=f(170),ne=f(174),oe=f(29),ie=f(36),re=f(53),se=f(0),le=f(117),de=f(43);u.a={breakAttributes:function(pe){return pe instanceof Q.a?z(pe):D(pe)},breakContainer:function(pe){const me=pe.parent;if(!me.is('containerElement'))throw new se.a('view-writer-break-non-container-element: Trying to break an element which is not a container element.');if(!me.parent)throw new se.a('view-writer-break-root: Trying to break root element.');if(pe.isAtStart)return Q.a.createBefore(me);if(!pe.isAtEnd){const ge=me.clone(!1);S(Q.a.createAfter(me),ge);const fe=new ie.a(pe,Q.a.createAt(me,'end')),he=new Q.a(ge,0);R(fe,he)}return Q.a.createAfter(me)},mergeAttributes:C,mergeContainers:function(pe){const me=pe.nodeBefore,ge=pe.nodeAfter;if(!me||!ge||!me.is('containerElement')||!ge.is('containerElement'))throw new se.a('view-writer-merge-containers-invalid-position: Element before and after given position cannot be merged.');const fe=me.getChild(me.childCount-1),he=fe instanceof oe.a?Q.a.createAt(fe,'end'):Q.a.createAt(me,'end');return R(ie.a.createIn(ge),Q.a.createAt(me,'end')),E(ie.a.createOn(ge)),he},insert:S,remove:E,clear:function(pe,me){X(pe);const ge=pe.getWalker({direction:'backward',ignoreElementEnd:!0});for(const fe of ge){const he=fe.item;let be;if(he.is('element')&&me.isSimilar(he))be=ie.a.createOn(he);else if(!fe.nextPosition.isAfter(pe.start)&&(he.is('text')||he.is('textProxy'))){const _e=he.getAncestors().find((ke)=>{return ke.is('element')&&me.isSimilar(ke)});_e&&(be=ie.a.createIn(_e))}be&&(be.end.isAfter(pe.end)&&(be.end=pe.end),be.start.isBefore(pe.start)&&(be.start=pe.start),E(be))}},move:R,wrap:V,wrapPosition:function(pe,me){if(!(me instanceof te.a))throw new se.a('view-writer-wrap-invalid-attribute');if(me.isSimilar(pe.parent))return U(Q.a.createFromPosition(pe));pe.parent.is('text')&&(pe=K(pe));const ge=new te.a;ge.priority=_NumberPOSITIVE_INFINITY,ge.isSimilar=()=>!1,pe.parent.insertChildren(pe.offset,ge);const fe=new ie.a(pe,pe.getShiftedBy(1));V(fe,me);const he=new Q.a(ge.parent,ge.index);ge.remove();const be=he.nodeBefore,_e=he.nodeAfter;return be instanceof oe.a&&_e instanceof oe.a?H(be,_e):U(he)},unwrap:function(pe,me){if(!(me instanceof te.a))throw new se.a('view-writer-unwrap-invalid-attribute');if(X(pe),pe.isCollapsed)return pe;if(pe.end.isEqual(pe.start.getShiftedBy(1))){const ye=pe.start.nodeAfter;if(!me.isSimilar(ye)&&ye instanceof te.a&&W(me,ye))return pe}const{start:ge,end:fe}=D(pe,!0),he=ge.parent,be=$(he,ge.offset,fe.offset,me),_e=C(be.start);_e.isEqual(be.start)||be.end.offset--;const ke=C(be.end);return new ie.a(_e,ke)},rename:function(pe,me){const ge=new ee.a(me,pe.getAttributes());return S(Q.a.createAfter(pe),ge),R(ie.a.createIn(pe),Q.a.createAt(ge)),E(ie.a.createOn(pe)),ge},breakViewRangePerContainer:function(pe){const me=[],ge=new re.a({boundaries:pe});let fe=pe.start;for(let he of ge)he.item.is('containerElement')&&(fe.isEqual(he.previousPosition)||me.push(new ie.a(fe,he.previousPosition)),fe=he.nextPosition);return me.push(new ie.a(fe,pe.end)),me}};const ue=[oe.a,te.a,ee.a,ae.a,ne.a]},function(r,u,f){'use strict';var h=f(7),w=f(0),C=f(71),T=f(4);class P{constructor(S){this._items=[],this._itemMap=new Map,this._idProperty=S&&S.idProperty||'id',this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap}get length(){return this._items.length}add(S,E){let O;const R=this._idProperty;if(R in S){if(O=S[R],'string'!=typeof O)throw new w.a('collection-add-invalid-id');if(this.get(O))throw new w.a('collection-add-item-already-exists')}else S[R]=O=f.i(C.a)();if(void 0===E)E=this._items.length;else if(E>this._items.length||0>E)throw new w.a('collection-add-item-invalid-index');return this._items.splice(E,0,S),this._itemMap.set(O,S),this.fire('add',S,E),this}get(S){let E;if('string'==typeof S)E=this._itemMap.get(S);else if('number'==typeof S)E=this._items[S];else throw new w.a('collection-get-invalid-arg: Index or id must be given.');return E||null}getIndex(S){let E;return E='string'==typeof S?this._itemMap.get(S):S,this._items.indexOf(E)}remove(S){let V=!1,E,O,R;const F=this._idProperty;if('string'==typeof S?(O=S,R=this._itemMap.get(O),V=!R,R&&(E=this._items.indexOf(R))):'number'==typeof S?(E=S,R=this._items[E],V=!R,R&&(O=R[F])):(R=S,O=R[F],E=this._items.indexOf(R),V=-1==E||!this._itemMap.get(O)),V)throw new w.a('collection-remove-404: Item not found.');this._items.splice(E,1),this._itemMap.delete(O);const I=this._bindToInternalToExternalMap.get(R);return this._bindToInternalToExternalMap.delete(R),this._bindToExternalToInternalMap.delete(I),this.fire('remove',R),R}map(S,E){return this._items.map(S,E)}find(S,E){return this._items.find(S,E)}filter(S,E){return this._items.filter(S,E)}clear(){for(this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);this.length;)this.remove(0)}bindTo(S){if(this._bindToCollection)throw new w.a('collection-bind-to-rebind: The collection cannot be bound more than once.');return this._bindToCollection=S,{as:(E)=>{this._setUpBindToBinding((O)=>new E(O))},using:(E)=>{'function'==typeof E?this._setUpBindToBinding((O)=>E(O)):this._setUpBindToBinding((O)=>O[E])}}}_setUpBindToBinding(S){const E=this._bindToCollection,O=(R,V,F)=>{const I=E._bindToCollection==this,N=E._bindToInternalToExternalMap.get(V);if(I&&N)this._bindToExternalToInternalMap.set(V,N),this._bindToInternalToExternalMap.set(N,V);else{const M=S(V);this._bindToExternalToInternalMap.set(V,M),this._bindToInternalToExternalMap.set(M,V),this.add(M,F)}};for(let R of E)O(null,R);this.listenTo(E,'add',O),this.listenTo(E,'remove',(R,V)=>{const F=this._bindToExternalToInternalMap.get(V);F&&this.remove(F)})}[Symbol.iterator](){return this._items[Symbol.iterator]()}}u.a=P,f.i(T.a)(P,h.a)},function(r,u,f){'use strict';function h(R){return R['data-ck-expando']||(R['data-ck-expando']=f.i(T.a)())}function w(R){return R&&f.i(S.a)(R.addEventListener)}var C=f(7),T=f(71),P=f(45),S=f(235);const E=f.i(P.a)({},C.a,{listenTo(...R){const V=R[0];w(V)&&(R[0]=this._getProxyEmitter(V)||new O(V)),C.a.listenTo.apply(this,R)},stopListening(...R){const V=R[0];if(w(V)){let F=this._getProxyEmitter(V);if(!F)return;R[0]=F}C.a.stopListening.apply(this,R)},_getProxyEmitter(R){return f.i(C.b)(this,h(R))}});u.a=E;class O{constructor(R){f.i(C.c)(this,h(R)),this._domNode=R}}f.i(P.a)(O.prototype,C.a,{on(R,V,F={}){if(C.a.on.apply(this,arguments),!(this._domListeners&&this._domListeners[R])){const I=this._createDomListener(R);this._domNode.addEventListener(R,I,!!F.useCapture),this._domListeners||(this._domListeners={}),this._domListeners[R]=I}},off(R){C.a.off.apply(this,arguments);let V;!this._domListeners[R]||(V=this._events[R])&&V.callbacks.length||this._domListeners[R].removeListener()},_createDomListener(R){const V=(F)=>{this.fire(R,F)};return V.removeListener=()=>{this._domNode.removeEventListener(R,V),delete this._domListeners[R]},V}})},function(r,u){'use strict';u.a=function(w){const C=w.next();return C.done?null:C.value}},function(r,u,f){'use strict';function h(E){var O=-1,R=E?E.length:0;for(this.clear();++O>>1){for(;V>>1,N=E[I];null!==N&&!f.i(T.a)(N)&&(R?N<=O:N{const Z=U instanceof M.a?U.clone(!0):U(H,Y,W);if(Z&&Y.consume(H.item,'insert')){const G=W.mapper.toViewPosition(H.range.start);W.mapper.bindElements(H.item,Z),q.a.insert(G,Z)}}},u.j=function(){return(U,K,H,Y)=>{if(H.consume(K.item,'insert')){const W=Y.mapper.toViewPosition(K.range.start),Z=new D.a(K.item.data);q.a.insert(W,Z)}}},u.f=function(U){return(K,H,Y,W)=>{let Z,G;if((U instanceof M.a?(Z=U.clone(!0),G=U.clone(!0)):(H.isOpening=!0,Z=U(H,Y,W),H.isOpening=!1,G=U(H,Y,W)),Z&&G)&&Y.consume(H.range,'addMarker')){const J=W.mapper;q.a.insert(J.toViewPosition(H.range.start),Z),H.range.isCollapsed||q.a.insert(J.toViewPosition(H.range.end),G)}}},u.h=function(U){return U=U||((K,H)=>({value:K,key:H})),(K,H,Y,W)=>{if(Y.consume(H.item,N(K.name))){const{key:Z,value:G}=U(H.attributeNewValue,H.attributeKey,H,Y,W);W.mapper.toViewElement(H.item).setAttribute(Z,G)}}},u.i=function(U){return U=U||((K,H)=>({key:H})),(K,H,Y,W)=>{if(Y.consume(H.item,N(K.name))){const{key:Z}=U(H.attributeOldValue,H.attributeKey,H,Y,W);W.mapper.toViewElement(H.item).removeAttribute(Z)}}},u.b=function(U){return(K,H,Y,W)=>{const Z=U instanceof M.a?U.clone(!0):U(H.attributeNewValue,H,Y,W);if(!Z)return;if(!Y.consume(H.item,N(K.name)))return;let G=W.mapper.toViewRange(H.range);if(null!==H.attributeOldValue&&!(U instanceof M.a)){const J=U(H.attributeOldValue,H,Y,W);G=q.a.unwrap(G,J)}q.a.wrap(G,Z)}},u.c=function(U){return(K,H,Y,W)=>{const Z=U instanceof M.a?U.clone(!0):U(H.attributeOldValue,H,Y,W);if(Z&&Y.consume(H.item,N(K.name))){const G=W.mapper.toViewRange(H.range);q.a.unwrap(G,Z)}}},u.d=function(U){return(K,H,Y,W)=>{const Z=U instanceof M.a?U.clone(!0):U(H,Y,W);if(Z&&Y.consume(H.range,'addMarker')){const G=W.mapper.toViewRange(H.range),J=q.a.breakViewRangePerContainer(G);for(let X of J)q.a.wrap(X,Z)}}},u.e=function(U){return(K,H,Y,W)=>{const Z=U instanceof M.a?U.clone(!0):U(H,Y,W);if(Z&&Y.consume(H.range,'removeMarker')){const G=W.mapper.toViewRange(H.range),J=q.a.breakViewRangePerContainer(G);for(let X of J)q.a.unwrap(X,Z)}}},u.k=function(){return(U,K,H,Y)=>{if(!H.consume(K.item,'remove'))return;const W=Y.mapper.toViewPosition(K.sourcePosition);let Z;if(K.item.is('element'))Z=z.a.createOn(W.nodeAfter);else{const G=F(W,K.item.offsetSize);Z=new z.a(W,G)}q.a.remove(Z.getTrimmed()),'$graveyard'==K.item.root.rootName&&Y.mapper.unbindModelElement(K.item)}},u.g=function(U){return(K,H,Y,W)=>{let Z,G;if((U instanceof M.a?(Z=U.clone(!0),G=U.clone(!0)):(H.isOpening=!0,Z=U(H,Y,W),H.isOpening=!1,G=U(H,Y,W)),Z&&G)&&Y.consume(H.range,'removeMarker')){const J=W.mapper.toViewRange(H.range);q.a.clear(J.getEnlarged(),G),Z.isSimilar(G)||q.a.clear(J.getEnlarged(),Z)}}}},function(r,u,f){'use strict';var h=f(20),w=f(106),C=f(18),T=f(39),P=f(17),S=f(13),E=f(51),O=f(2),R=f(1);class V extends h.a{get type(){return'insert'}get position(){return this._insertOperation?this._insertOperation.position:null}get nodes(){return this._insertOperation?this._insertOperation.nodes:null}get _insertOperation(){return this.operations[0]||null}get _reverseDeltaClass(){return w.a}static get className(){return'engine.model.delta.InsertDelta'}static get _priority(){return 20}}u.a=V,f.i(P.b)('insert',function(F,I){const N=f.i(S.b)(I);if(0===N.length)return this;const M=new V,D=new T.a(F,N,this.document.version);if(this.addDelta(M),M.addOperation(D),this.document.applyOperation(D),I instanceof E.a)for(const[z,$]of I.markers){const q=R.a.createAt($.root),U=new O.a($.start._getCombined(q,F),$.end._getCombined(q,F));this.setMarker(z,U)}return this}),C.a.register(V)},function(r,u,f){'use strict';var h=f(20),w=f(18),C=f(107),T=f(17),P=f(1),S=f(5),E=f(40),O=f(28),R=f(0);class V extends h.a{get type(){return'merge'}get position(){return this._removeOperation?this._removeOperation.sourcePosition:null}getReversed(){let F=super.getReversed();return 0z._priority)||!(D._priority{return z+$.operations.length},0)}function R(D,z){const $=D[D.length-1];let q=$.operations.length+$.baseVersion,U=new V.a;for(let K=0;K{E.has(R)&&w.call(this,R,I,V.range,V.sourcePosition)},{priority:'high'})}function w(E,O,R,V){const F=R.end.offset-R.start.offset;let I=R.start;'move'==E&&(I=I._getTransformedByInsertion(V,F));const N=this._getTransformedByDocumentChange(E,O,I,F,V);'move'==E&&3==N.length&&(N[2]=R);const M=C.a.createFromRanges(N);if(!M.isEqual(this)){const D=C.a.createFromRange(this);this.start=M.start,this.end=M.end,this.fire('change',D)}}var C=f(2),T=f(7),P=f(4);class S extends C.a{constructor(E,O){super(E,O),h.call(this)}detach(){this.stopListening()}}u.a=S,f.i(P.a)(S,T.a)},function(r,u,f){'use strict';var h=f(34),w=f(2);class C extends h.a{constructor(T,P,S,E,O){super(O),this.name=T,this.oldRange=P?w.a.createFromRange(P):null,this.newRange=S?w.a.createFromRange(S):null,this._markers=E}get type(){return'marker'}clone(){return new C(this.name,this.oldRange,this.newRange,this._markers,this.baseVersion)}getReversed(){return new C(this.name,this.newRange,this.oldRange,this._markers,this.baseVersion+1)}_execute(){const T=this.newRange?'set':'remove';return this._markers[T](this.name,this.newRange),{name:this.name,type:T}}toJSON(){const T=super.toJSON();return delete T._markers,T}static get className(){return'engine.model.operation.MarkerOperation'}static fromJSON(T,P){return new C(T.name,T.oldRange?w.a.fromJSON(T.oldRange,P):null,T.newRange?w.a.fromJSON(T.newRange,P):null,P.markers,T.baseVersion)}}u.a=C},function(r,u,f){'use strict';var h=f(28),w=f(40);class C extends h.a{get position(){return this.targetPosition}set position(T){this.targetPosition=T}get type(){return'reinsert'}getReversed(){const T=new w.a(this.targetPosition,this.howMany,this.baseVersion+1);return T.targetPosition=this.sourcePosition,T._needsHolderElement=!1,T}static get className(){return'engine.model.operation.ReinsertOperation'}}u.a=C},function(r,u,f){'use strict';var h=f(34),w=f(5),C=f(0),T=f(1);class P extends h.a{constructor(S,E,O,R){super(R),this.position=S,this.oldName=E,this.newName=O}get type(){return'rename'}clone(){return new P(T.a.createFromPosition(this.position),this.oldName,this.newName,this.baseVersion)}getReversed(){return new P(T.a.createFromPosition(this.position),this.newName,this.oldName,this.baseVersion+1)}_execute(){const S=this.position.nodeAfter;if(!(S instanceof w.a))throw new C.a('rename-operation-wrong-position: Given position is invalid or node after it is not an instance of Element.');else if(S.name!==this.oldName)throw new C.a('rename-operation-wrong-name: Element to change has different name than operation\'s old name.');return this.oldName==this.newName?void 0:(S.name=this.newName,{element:S,oldName:this.oldName})}static get className(){return'engine.model.operation.RenameOperation'}static fromJSON(S,E){return new P(T.a.fromJSON(S.position,E),S.oldName,S.newName,S.baseVersion)}}u.a=P},function(r,u,f){'use strict';var h=f(34),w=f(0);class C extends h.a{constructor(T,P,S,E,O){super(O),this.root=T,this.key=P,this.oldValue=S,this.newValue=E}get type(){return null===this.oldValue?'addRootAttribute':null===this.newValue?'removeRootAttribute':'changeRootAttribute'}clone(){return new C(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new C(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_execute(){if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new w.a('rootattribute-operation-wrong-old-value: Changed node has different attribute value than operation\'s old attribute value.',{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new w.a('rootattribute-operation-attribute-exists: The attribute with given key already exists.',{root:this.root,key:this.key});return null===this.newValue?this.root.removeAttribute(this.key):this.root.setAttribute(this.key,this.newValue),{root:this.root,key:this.key,oldValue:this.oldValue,newValue:this.newValue}}static get className(){return'engine.model.operation.RootAttributeOperation'}static fromJSON(T,P){if(!P.hasRoot(T.root))throw new w.a('rootattribute-operation-fromjson-no-root: Cannot create RootAttributeOperation. Root with specified name does not exist.',{rootName:T});return new C(P.getRoot(T.root),T.key,T.oldValue,T.newValue,T.baseVersion)}}u.a=C},function(r,u,f){'use strict';function h(){if(this.childCount)return null;let P=this.parent;for(;P&&P.is('attributeElement');){if(1'string'==typeof O?new w.a(O):O))}var w=f(29),C=f(4),T=f(43),P=f(7);class S{constructor(E){this._children=[],E&&this.insertChildren(0,E)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(E){return'documentFragment'==E}appendChildren(E){return this.insertChildren(this.childCount,E)}getChild(E){return this._children[E]}getChildIndex(E){return this._children.indexOf(E)}getChildren(){return this._children[Symbol.iterator]()}insertChildren(E,O){this._fireChange('children',this);let R=0;O=h(O);for(let V of O)V.parent=this,this._children.splice(E,0,V),E++,R++;return R}removeChildren(E,O=1){this._fireChange('children',this);for(let R=E;R{this[T](),O()})}}get first(){return this.focusables.find(h)||null}get last(){return this.focusables.filter(h).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let C=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((T,P)=>{const S=T.element===this.focusTracker.focusedElement;return S&&(C=P),S}),C)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(C){C&&C.focus()}_getFocusableItem(C){const T=this.current,P=this.focusables.length;if(!P||null===T)return null;let S=(T+P+C)%P;do{let E=this.focusables.get(S);if(h(E))return E;S=(S+P+C)%P}while(S!==T);return null}}u.a=w},function(r,u,f){'use strict';function h(E){return E.every((O)=>'string'==typeof O)}var w=f(0),C=f(31),T=f(79),P=f(4);class S extends T.a{constructor(E){super({idProperty:'viewUid'}),this.on('add',(O,R,V)=>{R.element&&this._parentElement&&this._parentElement.insertBefore(R.element,this._parentElement.children[V])}),this.on('remove',(O,R)=>{R.element&&this._parentElement&&R.element.remove()}),this.locale=E,this.set('ready',!1),this._parentElement=null}init(){if(this.ready)throw new w.a('ui-viewcollection-init-reinit: This ViewCollection has already been initialized.');return Promise.all(this.map((E)=>E.init())).then(()=>{this.ready=!0})}destroy(){let E=[];for(let O of this)E.push(O.destroy());return Promise.all(E)}add(E,O){super.add(E,O);let R=Promise.resolve();return this.ready&&!E.ready&&(R=R.then(()=>{return E.init()})),R}setParent(E){this._parentElement=E}delegate(...E){if(!E.length||!h(E))throw new w.a('ui-viewcollection-delegate-wrong-events: All event names must be strings.');return{to:(O)=>{for(let R of this)for(let V of E)R.delegate(V).to(O);this.on('add',(R,V)=>{for(let F of E)V.delegate(F).to(O)}),this.on('remove',(R,V)=>{for(let F of E)V.stopDelegating(F,O)})}}}}u.a=S,f.i(P.a)(T.a,C.a)},function(r,u,f){'use strict';function h(P,S){let E=w([P],S);E.sort((O,R)=>O.start.isBefore(R.start)?-1:1);for(let O=1;ON.start.root!=O.graveyard);I&&R.push(I)}R.length&&O.selection.setRanges(R,S)}}u.a=T},function(r,u,f){'use strict';function h(E){var O=-1,R=E?E.length:0;for(this.clear();++O=R||0>ae||Q&&ne>=Y}function D(){var te=f.i(C.a)();return M(te)?z(te):void(Z=setTimeout(D,N(te)))}function z(te){return(clearTimeout(Z),Z=void 0,ee&&K)?F(te):(K=H=void 0,W)}function U(){var te=f.i(C.a)(),ae=M(te);if(K=arguments,H=this,G=te,ae){if(void 0===Z)return I(G);if(Q)return clearTimeout(Z),Z=setTimeout(D,R),F(G)}return void 0===Z&&(Z=setTimeout(D,R)),W}var G=0,J=0,X=!1,Q=!1,ee=!0,K,H,Y,W,Z;if('function'!=typeof O)throw new TypeError('Expected a function');return R=f.i(T.a)(R)||0,f.i(w.a)(V)&&(X=!!V.leading,Q='maxWait'in V,Y=Q?_Mathmax(f.i(T.a)(V.maxWait)||0,R):Y,ee='trailing'in V?!!V.trailing:ee),U.cancel=function(){void 0!==Z&&clearTimeout(Z),G=J=0,K=H=Z=void 0},U.flush=function(){return void 0===Z?W:z(f.i(C.a)())},U}},function(r,u,f){'use strict';var w=f(37),C=f(16);u.a=function(T,P,S){var E=T?T.length:0;return E?(P=S||void 0===P?1:f.i(C.a)(P),f.i(w.a)(T,0>P?0:P,E)):[]}},function(r,u,f){'use strict';var w=f(37),C=f(16);u.a=function(T,P,S){var E=T?T.length:0;return E?(P=S||void 0===P?1:f.i(C.a)(P),P=E-P,f.i(w.a)(T,0,0>P?0:P)):[]}},function(r,u){'use strict';u.a=function(w){return w&&w.length?w[0]:void 0}},function(r,u,f){'use strict';var w=f(14),T=Object.prototype,P=T.hasOwnProperty,S=T.toString,E=T.propertyIsEnumerable;u.a=function(O){return f.i(w.a)(O)&&P.call(O,'callee')&&(!E.call(O,'callee')||S.call(O)=='[object Arguments]')}},function(r,u,f){'use strict';var w=f(15),P=Object.prototype,S=P.toString;u.a=function(E){var O=f.i(w.a)(E)?S.call(E):'';return O=='[object Function]'||O=='[object GeneratorFunction]'}},function(r,u,f){'use strict';var w=f(11),C=f(46),P=Object.prototype,S=P.toString;u.a=function(E){return'string'==typeof E||!f.i(w.a)(E)&&f.i(C.a)(E)&&S.call(E)=='[object String]'}},function(r,u,f){'use strict';var w=f(132);u.a=function(C,T){return C&&C.length&&T&&T.length?f.i(w.a)(C,T):C}},function(r,u,f){'use strict';var w=f(195),C=f(27),T=f(100);u.a=function(P,S){if(!(P&&P.length))return[];var E=f.i(T.a)(P);return null==S?E:f.i(C.a)(E,function(O){return f.i(w.a)(S,void 0,O)})}},function(r,u,f){'use strict';var w=f(99),C=f(274);u.a=function(T){return f.i(w.a)(T)?f.i(C.a)(T):new Map(T)}},function(r,u){'use strict';function C(F,I){F.setCustomProperty(O,I)}function S(){return null}u.b=function(F){return!!F.getCustomProperty(E)},u.a=function(F,I){return I=I||{},F.setAttribute('contenteditable',!1),F.getFillerOffset=S,F.addClass(R),F.setCustomProperty(E,!0),I.label&&C(F,I.label),F},u.e=function(F){const I=F.getCustomProperty(O);return I?'function'==typeof I?I():I:''},u.c=function(F){return F.setAttribute('contenteditable','true'),F.addClass('ck-editable'),F.on('change:isFocused',(I,N,M)=>{M?F.addClass('ck-editable_focused'):F.removeClass('ck-editable_focused')}),F};const E=Symbol('isWidget'),O=Symbol('label'),R='ck-widget';u.d='ck-widget_selected'},function(r,u,f){'use strict';var h=f(6),w=f(3),C=f(187),T=f(42),P=f(177);class S extends w.a{static get pluginName(){return'image/imagetoolbar'}constructor(E){super(E),E.config.set('image.defaultToolbar',[]),this.isEnabled=!0}afterInit(){const E=this.editor,O=E.config.get('image.toolbar')||E.config.get('image.defaultToolbar');if(O.length){const R=this._panel=new P.a(E),V=[],F=new C.a;return h.a.extend(R.template,{attributes:{class:['ck-toolbar__container']}}),V.push(R.content.add(F)),V.push(F.fillFromConfig(O,E.ui.componentFactory)),V.push(E.ui.view.body.add(R)),this.listenTo(this.editor.editing.view,'render',()=>{this.isEnabled&&this.show()},{priority:'low'}),this.listenTo(E.ui.focusTracker,'change:isFocused',(I,N,M,D)=>{!D&&M&&this.isEnabled&&this.show()}),Promise.all(V)}}show(){const E=this.editor.editing.view.selection.getSelectedElement();E&&f.i(T.a)(E)&&this._panel.attach()}hide(){this._panel.detach()}}u.a=S},function(r,u,f){'use strict';var h=f(3),w=f(49),C=f(50),T=f(160);const P='bold';class S extends h.a{init(){const E=this.editor,O=E.data,R=E.editing;E.document.schema.allow({name:'$inline',attributes:[P]}),f.i(w.a)().for(O.modelToView,R.modelToView).fromAttribute(P).toElement('strong'),f.i(C.a)().for(O.viewToModel).fromElement('strong').fromElement('b').fromAttribute('style',{'font-weight':'bold'}).toAttribute(P,!0),E.commands.set(P,new T.a(E,P))}}u.a=S},function(r,u,f){'use strict';var h=f(3),w=f(49),C=f(50),T=f(160);const P='italic';class S extends h.a{init(){const E=this.editor,O=E.data,R=E.editing;E.document.schema.allow({name:'$inline',attributes:[P]}),f.i(w.a)().for(O.modelToView,R.modelToView).fromAttribute(P).toElement('em'),f.i(C.a)().for(O.viewToModel).fromElement('em').fromElement('i').fromAttribute('style',{'font-style':'italic'}).toAttribute(P,!0),E.commands.set(P,new T.a(E,P))}}u.a=S},function(r){var f=function(){return this}();try{f=f||Function('return this')()||(1,eval)('this')}catch(h){'object'==typeof window&&(f=window)}r.exports=f},function(r){r.exports=function(f){if(!f.webpackPolyfill){var h=Object.create(f);h.children||(h.children=[]),Object.defineProperty(h,'loaded',{enumerable:!0,get:function(){return h.l}}),Object.defineProperty(h,'id',{enumerable:!0,get:function(){return h.i}}),Object.defineProperty(h,'exports',{enumerable:!0}),h.webpackPolyfill=1}return h}},function(r,u,f){'use strict';var w=f(35);u.a=function(C,T,P){if(T.isCollapsed)return P.check({name:'$text',inside:T.getFirstPosition(),attributes:C});const S=T.getRanges();for(let E of S){const O=new w.a({boundaries:E,mergeCharacters:!0});for(let R=O.position,V=O.next();!V.done;){const F=V.value.item.name||'$text';if(P.check({name:F,inside:R,attributes:C}))return!0;R=O.position,V=O.next()}}return!1}},function(r,u,f){'use strict';var h=f(12),w=f(101),C=f(159);class T extends h.a{constructor(P,S){super(P),this.attributeKey=S,this.set('value',!1),this.listenTo(this.editor.document.selection,'change:attribute',()=>{this.value=this.editor.document.selection.hasAttribute(this.attributeKey)})}_checkEnabled(){const P=this.editor.document;return f.i(C.a)(this.attributeKey,P.selection,P.schema)}_doExecute(P={}){const S=this.editor.document,E=S.selection,O=P.forceValue===void 0?!this.value:P.forceValue;S.enqueueChanges(()=>{if(E.isCollapsed)O?E.setAttribute(this.attributeKey,!0):E.removeAttribute(this.attributeKey);else{const R=f.i(w.a)(this.attributeKey,E.getRanges(),S.schema),V=P.batch||S.batch();for(let F of R)O?V.setAttribute(F,this.attributeKey,O):V.removeAttribute(F,this.attributeKey)}})}}u.a=T},function(r,u,f){'use strict';var h=f(1),w=f(2),C=f(25),T=f(36),P=f(29),S=f(7),E=f(4);class O{constructor(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._viewToModelLengthCallbacks=new Map,this.on('modelToViewPosition',(R,V)=>{if(!V.viewPosition){let F=this._modelToViewMapping.get(V.modelPosition.parent);V.viewPosition=this._findPositionIn(F,V.modelPosition.offset)}},{priority:'low'}),this.on('viewToModelPosition',(R,V)=>{if(V.modelPosition)return;let F=V.viewPosition.parent,I=this._viewToModelMapping.get(F);for(;!I;)F=F.parent,I=this._viewToModelMapping.get(F);let N=this._toModelOffset(V.viewPosition.parent,V.viewPosition.offset,F);V.modelPosition=h.a.createFromParentAndOffset(I,N)},{priority:'low'})}bindElements(R,V){this._modelToViewMapping.set(R,V),this._viewToModelMapping.set(V,R)}unbindViewElement(R){const V=this.toModelElement(R);this._unbindElements(V,R)}unbindModelElement(R){const V=this.toViewElement(R);this._unbindElements(R,V)}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap}toModelElement(R){return this._viewToModelMapping.get(R)}toViewElement(R){return this._modelToViewMapping.get(R)}toModelRange(R){return new w.a(this.toModelPosition(R.start),this.toModelPosition(R.end))}toViewRange(R){return new T.a(this.toViewPosition(R.start),this.toViewPosition(R.end))}toModelPosition(R){const V={viewPosition:R,mapper:this};return this.fire('viewToModelPosition',V),V.modelPosition}toViewPosition(R){const V={modelPosition:R,mapper:this};return this.fire('modelToViewPosition',V),V.viewPosition}registerViewToModelLength(R,V){this._viewToModelLengthCallbacks.set(R,V)}_toModelOffset(R,V,F){if(F!=R){const N=this._toModelOffset(R.parent,R.index,F),M=this._toModelOffset(R,V,R);return N+M}if(R.is('text'))return V;let I=0;for(let N=0;N{const D=I.selection;if(!D.isCollapsed&&N.consume(D,'selection')){M.viewSelection.removeAllRanges();for(let z of D.getRanges()){const $=M.mapper.toViewRange(z);M.viewSelection.addRange($,D.isBackward)}}}},u.f=function(){return(F,I,N,M)=>{const D=I.selection;if(D.isCollapsed&&N.consume(D,'selection')){const z=D.getFirstPosition(),$=M.mapper.toViewPosition(z),q=V.a.breakAttributes($);M.viewSelection.removeAllRanges(),M.viewSelection.addRange(new R.a(q,q))}}},u.a=function(F){return(I,N,M,D)=>{const z=F instanceof O.a?F.clone(!0):F(N.value,N,N.selection,M,D);if(z){const $='selectionAttribute:'+N.key;P(N.selection,D.viewSelection,z,M,$)}}},u.b=function(F){return(I,N,M,D)=>{const z=F instanceof O.a?F.clone(!0):F(N,M,D);if(z){const $='selectionMarker:'+N.name;P(N.selection,D.viewSelection,z,M,$)}}},u.c=function(){return(F,I,N,M)=>{for(let D of M.viewSelection.getRanges())D.isCollapsed&&D.end.parent.document&&V.a.mergeAttributes(D.start);M.viewSelection.removeAllRanges()}},u.d=function(){return(F,I,N,M)=>M.viewSelection.setFake(!1)}},function(r,u,f){'use strict';var h=f(342),w=f(2),C=f(1),T=f(51),P=f(7),S=f(4),E=f(45);class O{constructor(R,V={}){this._modelDocument=R,this.conversionApi=f.i(E.a)({dispatcher:this},V)}convertChange(R,V){'remove'!==R&&V.range&&'$graveyard'==V.range.root.rootName||'remove'==R&&'$graveyard'==V.sourcePosition.root.rootName||'rename'==R&&'$graveyard'==V.element.root.rootName||('insert'==R||'reinsert'==R?this.convertInsertion(V.range):'move'==R?this.convertMove(V.sourcePosition,V.range):'remove'==R?this.convertRemove(V.sourcePosition,V.range):'addAttribute'==R||'removeAttribute'==R||'changeAttribute'==R?this.convertAttribute(R,V.range,V.key,V.oldValue,V.newValue):'rename'==R&&this.convertRename(V.element,V.oldName))}convertInsertion(R){const V=this._createInsertConsumable(R);for(let F of R){const I=F.item,N=w.a.createFromPositionAndShift(F.previousPosition,F.length),M={item:I,range:N};this._testAndFire('insert',M,V);for(let D of I.getAttributeKeys())M.attributeKey=D,M.attributeOldValue=null,M.attributeNewValue=I.getAttribute(D),this._testAndFire(`addAttribute:${D}`,M,V)}for(let F of this._modelDocument.markers){const I=F.getRange();I.containsPosition(R.start)&&this.convertMarker('addMarker',F.name,I.getIntersection(R)),(R.containsRange(I)||R.isEqual(I))&&this.convertMarker('addMarker',F.name,I)}}convertMove(R,V){if(V.start.isBefore(R)){this.convertInsertion(V);const F=R._getTransformedByInsertion(V.start,V.end.offset-V.start.offset);this.convertRemove(F,V)}else this.convertRemove(R,V),this.convertInsertion(V)}convertRemove(R,V){const F=this._createConsumableForRange(V,'remove');for(let I of V.getItems({shallow:!0})){this._testAndFire(`remove`,{sourcePosition:R,item:I},F)}}convertAttribute(R,V,F,I,N){const M=this._createConsumableForRange(V,R+':'+F);for(let D of V){const z=D.item,$=w.a.createFromPositionAndShift(D.previousPosition,D.length);this._testAndFire(`${R}:${F}`,{item:z,range:$,attributeKey:F,attributeOldValue:I,attributeNewValue:N},M)}}convertRename(R,V){const F=R.clone(!0);F.name=V,this.conversionApi.mapper.bindElements(F,this.conversionApi.mapper.toViewElement(R));const I=new T.a;I.appendChildren(F),this.convertRemove(C.a.createBefore(R),w.a.createOn(F)),this.convertInsertion(w.a.createOn(R))}convertSelection(R){const V=Array.from(this._modelDocument.markers.getMarkersAtPosition(R.getFirstPosition())),F=this._createSelectionConsumable(R,V);this.fire('selection',{selection:R},F,this.conversionApi);for(let I of V){const N={selection:R,name:I.name};F.test(R,'selectionMarker:'+I.name)&&this.fire('selectionMarker:'+I.name,N,F,this.conversionApi)}for(let I of R.getAttributeKeys()){const N={selection:R,key:I,value:R.getAttribute(I)};F.test(R,'selectionAttribute:'+N.key)&&this.fire('selectionAttribute:'+N.key,N,F,this.conversionApi)}}convertMarker(R,V,F){if(F.root.document&&'$graveyard'!=F.root.rootName){const I=this._createMarkerConsumable(R,F);this.fire(R+':'+V,{name:V,range:F},I,this.conversionApi)}}_createInsertConsumable(R){const V=new h.a;for(let F of R){const I=F.item;V.add(I,'insert');for(let N of I.getAttributeKeys())V.add(I,'addAttribute:'+N)}return V}_createConsumableForRange(R,V){const F=new h.a;for(let I of R.getItems())F.add(I,V);return F}_createSelectionConsumable(R,V){const F=new h.a;F.add(R,'selection');for(let I of V)F.add(R,'selectionMarker:'+I.name);for(let I of R.getAttributeKeys())F.add(R,'selectionAttribute:'+I);return F}_createMarkerConsumable(R,V){const F=new h.a;return F.add(V,R),F}_testAndFire(R,V,F){if(F.test(V.item,R)){const I=V.item.name||'$text';this.fire(R+':'+I,V,F,this.conversionApi)}}}u.a=O,f.i(S.a)(O,P.a)},function(r,u,f){'use strict';var h=f(347),w=f(169),C=f(61);u.a=class{constructor(){this._domParser=new DOMParser,this._domConverter=new w.a({blockFiller:C.a}),this._htmlWriter=new h.a}toData(P){const S=this._domConverter.viewToDom(P,document);return this._htmlWriter.getHtml(S)}toView(P){const S=this._toDom(P);return this._domConverter.domToView(S)}_toDom(P){const S=this._domParser.parseFromString(P,'text/html'),E=S.createDocumentFragment(),O=S.body.childNodes;for(;0{R.has(F)&&w.call(this,F,I.range,I.sourcePosition)},{priority:'high'})}function w(R,V,F){let I=V.end.offset-V.start.offset,N;switch(R){case'insert':let M='sticksToNext'==this.stickiness;N=this._getTransformedByInsertion(V.start,I,M);break;case'move':case'remove':case'reinsert':let D=T.a.createFromPositionAndShift(F,I),z=D.containsPosition(this)||D.start.isEqual(this)&&'sticksToNext'==this.stickiness||D.end.isEqual(this)&&'sticksToPrevious'==this.stickiness;if(z)N=this._getCombined(F,V.start);else{let $='sticksToNext'==this.stickiness;N=this._getTransformedByMove(F,V.start,I,$)}}if(!this.isEqual(N)){const M=C.a.createFromPosition(this);this.path=N.path,this.root=N.root,this.fire('change',M)}}var C=f(1),T=f(2),P=f(7),S=f(4),E=f(0);class O extends C.a{constructor(R,V,F){if(super(R,V),!this.root.is('rootElement'))throw new E.a('model-liveposition-root-not-rootelement: LivePosition root has to be an instance of RootElement.');this.stickiness=F||'sticksToNext',h.call(this)}detach(){this.stopListening()}}u.a=O,f.i(S.a)(O,P.a)},function(r,u,f){'use strict';function h(M,D,z){let $=f.i(F.a)(M);return z&&($=$.slice($.indexOf(z)+1)),$.some((q)=>q.tagName&&D.includes(q.tagName.toLowerCase()))}var w=f(29),C=f(21),T=f(25),P=f(36),S=f(63),E=f(117),O=f(53),R=f(61),V=f(422),F=f(190),I=f(419);u.a=class{constructor(M={}){this.blockFiller=M.blockFiller||R.b,this.preElements=['pre'],this.blockElements=['p','div','h1','h2','h3','h4','h5','h6'],this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap}bindFakeSelection(M,D){this._fakeSelectionMapping.set(M,S.a.createFromSelection(D))}fakeSelectionToView(M){return this._fakeSelectionMapping.get(M)}bindElements(M,D){this._domToViewMapping.set(M,D),this._viewToDomMapping.set(D,M)}unbindDomElement(M){const D=this._domToViewMapping.get(M);if(D){this._domToViewMapping.delete(M),this._viewToDomMapping.delete(D);for(let z of M.childNodes)this.unbindDomElement(z)}}bindDocumentFragments(M,D){this._domToViewMapping.set(M,D),this._viewToDomMapping.set(D,M)}viewToDom(M,D,z={}){if(M.is('text')){const $=this._processDataFromViewText(M);return D.createTextNode($)}if(this.getCorrespondingDom(M))return this.getCorrespondingDom(M);let $;if(M.is('documentFragment'))$=D.createDocumentFragment(),z.bind&&this.bindDocumentFragments($,M);else{$=D.createElement(M.name),z.bind&&this.bindElements($,M);for(let q of M.getAttributeKeys())$.setAttribute(q,M.getAttribute(q))}if(z.withChildren||void 0===z.withChildren)for(let q of this.viewChildrenToDom(M,D,z))$.appendChild(q);return $}*viewChildrenToDom(M,D,z={}){let $=M.getFillerOffset&&M.getFillerOffset(),q=0;for(let U of M.getChildren())$===q&&(yield this.blockFiller(D)),yield this.viewToDom(U,D,z),q++;$===q&&(yield this.blockFiller(D))}viewRangeToDom(M){const D=this.viewPositionToDom(M.start),z=this.viewPositionToDom(M.end),$=new Range;return $.setStart(D.parent,D.offset),$.setEnd(z.parent,z.offset),$}viewPositionToDom(M){const D=M.parent;if(D.is('text')){const z=this.getCorrespondingDomText(D);if(!z)return null;let $=M.offset;return f.i(R.c)(z)&&($+=R.d),{parent:z,offset:$}}let z,$,q;if(0===M.offset){if(z=this.getCorrespondingDom(M.parent),!z)return null;q=z.childNodes[0]}else{if($=this.getCorrespondingDom(M.nodeBefore),!$)return null;z=$.parentNode,q=$.nextSibling}if(this.isText(q)&&f.i(R.c)(q))return{parent:q,offset:R.d};const U=$?f.i(V.a)($)+1:0;return{parent:z,offset:U}}domToView(M,D={}){if(f.i(R.e)(M,this.blockFiller))return null;if(this.isText(M)){if(f.i(R.f)(M))return null;const z=this._processDataFromDomText(M);return''===z?null:new w.a(z)}if(this.getCorrespondingView(M))return this.getCorrespondingView(M);let z;if(this.isDocumentFragment(M))z=new E.a,D.bind&&this.bindDocumentFragments(M,z);else{const $=D.keepOriginalCase?M.tagName:M.tagName.toLowerCase();z=new C.a($),D.bind&&this.bindElements(M,z);const q=M.attributes;for(let U=q.length-1;0<=U;U--)z.setAttribute(q[U].name,q[U].value)}if(D.withChildren||void 0===D.withChildren)for(let $ of this.domChildrenToView(M,D))z.appendChildren($);return z}*domChildrenToView(M,D={}){for(let z=0;z$?0:$),new T.a(z,$)):null}if(0===D){const z=this.getCorrespondingView(M);if(z)return new T.a(z,0)}else{const z=this.getCorrespondingView(M.childNodes[D-1]);if(z&&z.parent)return new T.a(z.parent,z.index+1)}return null}getCorrespondingView(M){if(this.isElement(M))return this.getCorrespondingViewElement(M);return this.isDocumentFragment(M)?this.getCorrespondingViewDocumentFragment(M):this.isText(M)?this.getCorrespondingViewText(M):null}getCorrespondingViewElement(M){return this._domToViewMapping.get(M)}getCorrespondingViewDocumentFragment(M){return this._domToViewMapping.get(M)}getCorrespondingViewText(M){if(f.i(R.f)(M))return null;const D=M.previousSibling;if(D){if(!this.isElement(D))return null;const z=this.getCorrespondingViewElement(D);if(z){const $=z.nextSibling;return $ instanceof w.a?z.nextSibling:null}}else{const z=this.getCorrespondingViewElement(M.parentNode);if(z){const $=z.getChild(0);return $ instanceof w.a?$:null}}return null}getCorrespondingDom(M){if(M instanceof C.a)return this.getCorrespondingDomElement(M);return M instanceof E.a?this.getCorrespondingDomDocumentFragment(M):M instanceof w.a?this.getCorrespondingDomText(M):null}getCorrespondingDomElement(M){return this._viewToDomMapping.get(M)}getCorrespondingDomDocumentFragment(M){return this._viewToDomMapping.get(M)}getCorrespondingDomText(M){const D=M.previousSibling;return D&&this.getCorrespondingDom(D)?this.getCorrespondingDom(D).nextSibling:!D&&M.parent&&this.getCorrespondingDom(M.parent)?this.getCorrespondingDom(M.parent).childNodes[0]:null}focus(M){const D=this.getCorrespondingDomElement(M);D&&D.ownerDocument.activeElement!==D&&D.focus()}isText(M){return M&&M.nodeType==Node.TEXT_NODE}isElement(M){return M&&M.nodeType==Node.ELEMENT_NODE}isDocumentFragment(M){return M&&M.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isDomSelectionBackward(M){if(M.isCollapsed)return!1;const D=new Range;D.setStart(M.anchorNode,M.anchorOffset),D.setEnd(M.focusNode,M.focusOffset);const z=D.collapsed;return D.detach(),z}_processDataFromViewText(M){let D=M.data;if(M.getAncestors().some((K)=>this.preElements.includes(K.name)))return D;const z=this._getTouchingViewTextNode(M,!1),$=this._getTouchingViewTextNode(M,!0);let q=D.match(/ *$/)[0],U=D.substr(0,D.length-q.length);if(z&&' '!=z.data.charAt(z.data.length-1)||(U=U.replace(/^ /,'\xA0')),U=U.replace(/ /g,' \xA0'),0{const N=O.document.selection.getFirstPosition().parent,M=I.batch,D=V.some((z)=>N.is(z.modelElement));D&&!N.is(S)&&0===N.childCount&&M.rename(N,S)})}}u.a=E},function(r,u,f){'use strict';function h(){return new S.a('figure',{class:'image'},new E.a('img'))}var w=f(3),C=f(49),T=f(372),P=f(42),S=f(41),E=f(170);class O extends w.a{init(){const R=this.editor,V=R.document,F=V.schema,I=R.data,N=R.editing,M=R.t;F.registerItem('image'),F.requireAttributes('image',['src']),F.allow({name:'image',attributes:['alt','src'],inside:'$root'}),F.objects.add('image'),f.i(C.a)().for(I.modelToView).fromElement('image').toElement(()=>h()),f.i(C.a)().for(N.modelToView).fromElement('image').toElement(()=>f.i(P.c)(h(),M('image widget'))),f.i(T.a)([N.modelToView,I.modelToView],'src'),f.i(T.a)([N.modelToView,I.modelToView],'alt'),I.viewToModel.on('element:figure',f.i(T.b)())}}u.a=O},function(r,u,f){'use strict';var h=f(525),w=f(65),C=f(186),T=f(42);const P=C.a.arrowVerticalOffset,S={south(O,R){return{top:O.bottom+P,left:O.left+O.width/2-R.width/2,name:'s'}},north(O,R){return{top:O.top-R.height-P,left:O.left+O.width/2-R.width/2,name:'n'}}};class E extends C.a{constructor(O){super(O.locale),this.editor=O;const R=O.editing.view;this.listenTo(O.ui.focusTracker,'change:isFocused',(V,F,I,N)=>{N&&!I&&this.detach()}),O.listenTo(R,'render',()=>{const V=R.selection.getSelectedElement();V&&f.i(T.a)(V)||this.detach()},{priority:'low'}),this._throttledAttach=f.i(h.a)(()=>{this._attach()},100)}init(){return this.editor.ui.focusTracker.add(this.element),super.init()}attach(){this._attach(),this.editor.ui.view.listenTo(w.a.window,'scroll',this._throttledAttach),this.editor.ui.view.listenTo(w.a.window,'resize',this._throttledAttach)}detach(){this.hide(),this.editor.ui.view.stopListening(w.a.window,'scroll',this._throttledAttach),this.editor.ui.view.stopListening(w.a.window,'resize',this._throttledAttach)}_attach(){const O=this.editor.editing.view;this.attachTo({target:O.domConverter.viewRangeToDom(O.selection.getFirstRange()),positions:[S.north,S.south]})}}u.a=E},function(r,u,f){'use strict';function w(P,S,E){let O=P.textNode||(E?P.nodeBefore:P.nodeAfter),R=null;for(;O&&O.getAttribute('linkHref')==S;)R=O,O=E?O.previousSibling:O.nextSibling;return R?T.a.createAt(R,E?'before':'after'):P}var C=f(2),T=f(1);u.a=function(P,S){return new C.a(w(P,S,!0),w(P,S,!1))}},function(r,u,f){'use strict';var h=f(116);class w extends h.a{}u.a=w},function(r,u,f){'use strict';function h(O){let R=1;for(let V of O.getChildren())if('ul'==V.name||'ol'==V.name)for(let F of V.getChildren())R+=h(F);return R}var w=f(388),C=f(387),T=f(3),P=f(72),S=f(386);class E extends T.a{static get requires(){return[P.a]}init(){const O=this.editor,R=O.document.schema;R.registerItem('listItem','$block'),R.allow({name:'listItem',inside:'$root',attributes:['type','indent']}),R.requireAttributes('listItem',['type','indent']);const V=O.data,F=O.editing;this.editor.document.on('change',f.i(S.a)(this.editor.document),{priority:'high'}),this.editor.document.on('change',(I,N,M)=>{if('move'==N)for(let D of M.range.getItems())D.is('listItem')&&F.mapper.unbindModelElement(D)},{priority:'high'}),F.mapper.registerViewToModelLength('li',h),V.mapper.registerViewToModelLength('li',h),F.mapper.on('modelToViewPosition',S.b),F.mapper.on('viewToModelPosition',S.c),V.mapper.on('modelToViewPosition',S.b),F.modelToView.on('insert',S.d,{priority:'high'}),F.modelToView.on('insert:listItem',S.e),V.modelToView.on('insert',S.d,{priority:'high'}),V.modelToView.on('insert:listItem',S.e),F.modelToView.on('changeAttribute:type:listItem',S.f),V.modelToView.on('changeAttribute:type:listItem',S.f),F.modelToView.on('remove:listItem',S.g),F.modelToView.on('remove',S.h,{priority:'low'}),V.modelToView.on('remove:listItem',S.g),V.modelToView.on('remove',S.h,{priority:'low'}),F.modelToView.on('changeAttribute:indent:listItem',S.i),V.modelToView.on('changeAttribute:indent:listItem',S.i),V.viewToModel.on('element:ul',S.j,{priority:'high'}),V.viewToModel.on('element:ol',S.j,{priority:'high'}),V.viewToModel.on('element:li',S.k,{priority:'high'}),V.viewToModel.on('element:li',S.l),O.commands.set('numberedList',new w.a(O,'numbered')),O.commands.set('bulletedList',new w.a(O,'bulleted')),O.commands.set('indentList',new C.a(O,'forward')),O.commands.set('outdentList',new C.a(O,'backward'))}}u.a=E},function(r,u,f){'use strict';var h=f(188);class w{constructor(C,T=20){this.document=C,this.size=0,this.limit=T,this.isLocked=!1,this._changeCallback=(P,S,E,O)=>{this._onBatch(O)},this._selectionChangeCallback=()=>{this._reset()},C.on('change',this._changeCallback),C.selection.on('change:range',this._selectionChangeCallback),C.selection.on('change:attribute',this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.document.batch()),this._batch}input(C){this.size+=C,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.document.off('change',this._changeCallback),this.document.selection.off('change:range',this._selectionChangeCallback),this.document.selection.off('change:attribute',this._selectionChangeCallback)}_onBatch(C){'transparent'!=C.type&&C!==this._batch&&1>=f.i(h.a)(C.getOperations())&&this._reset(!0)}_reset(C){(!this.isLocked||C)&&(this._batch=null,this.size=0)}}u.a=w},function(r,u){'use strict';u.a=function({emitter:w,activator:C,callback:T,contextElement:P}){w.listenTo(document,'mouseup',(S,{target:E})=>{C()&&!P.contains(E)&&T()})}},function(r,u){'use strict';u.a=function({view:w}){w.listenTo(w.element,'submit',(C,T)=>{T.preventDefault(),w.fire('submit')},{useCapture:!0})}},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T){super(T),this.set('value'),this.set('id');const P=this.bindTemplate;this.template=new w.a({tag:'input',attributes:{type:'text',class:['ck-input','ck-input-text'],id:P.to('id')}}),this.on('change:value',(S,E,O)=>this.element.value=O||'')}select(){this.element.select()}focus(){this.element.focus()}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(71),T=f(407);class P extends h.a{constructor(S,E){super(S);const O=`ck-input-${f.i(C.a)()}`;this.set('label'),this.set('value'),this.labelView=this._createLabelView(O),this.inputView=this._createInputView(E,O),this.template=new w.a({tag:'div',children:[this.labelView,this.inputView]})}_createLabelView(S){const E=new T.a(this.locale);return E.for=S,E.bind('text').to(this,'label'),E}_createInputView(S,E){const O=new S(this.locale);return O.id=E,O.bind('value').to(this),O}select(){this.inputView.select()}focus(){this.inputView.focus()}}u.a=P},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(425),T=f(191);const P=f.i(T.a)('px');class S extends h.a{constructor(E){super(E);const O=this.bindTemplate;this.set('top',0),this.set('left',0),this.set('position','se'),this.set('isVisible',!1),this.content=this.createCollection(),this.template=new w.a({tag:'div',attributes:{class:['ck-balloon-panel',O.to('position',(R)=>`ck-balloon-panel_arrow_${R}`),O.if('isVisible','ck-balloon-panel_visible')],style:{top:O.to('top',P),left:O.to('left',P),maxWidth:O.to('maxWidth',P)},tabindex:-1},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(E){this.show();const O=S.defaultPositions,R=Object.assign({},{element:this.element,positions:[O.se,O.sw,O.ne,O.nw],limiter:document.body,fitInViewport:!0},E),{top:V,left:F,name:I}=f.i(C.a)(R);Object.assign(this,{top:V,left:F,position:I})}}u.a=S,S.arrowHorizontalOffset=30,S.arrowVerticalOffset=15,S.defaultPositions={se:(E)=>({top:E.bottom+S.arrowVerticalOffset,left:E.left+E.width/2-S.arrowHorizontalOffset,name:'se'}),sw:(E,O)=>({top:E.bottom+S.arrowVerticalOffset,left:E.left+E.width/2-O.width+S.arrowHorizontalOffset,name:'sw'}),ne:(E,O)=>({top:E.top-O.height-S.arrowVerticalOffset,left:E.left+E.width/2-S.arrowHorizontalOffset,name:'ne'}),nw:(E,O)=>({top:E.top-O.height-S.arrowVerticalOffset,left:E.left+E.width/2-O.width+S.arrowHorizontalOffset,name:'nw'})}},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(66),T=f(119),P=f(67),S=f(413);class E extends h.a{constructor(O){super(O),this.items=this.createCollection(),this.focusTracker=new C.a,this.keystrokes=new P.a,this._focusCycler=new T.a({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:['arrowleft','arrowup'],focusNext:['arrowright','arrowdown']}}),this.template=new w.a({tag:'div',attributes:{class:['ck-toolbar']},children:this.items}),this.items.on('add',(R,V)=>{this.focusTracker.add(V.element)}),this.items.on('remove',(R,V)=>{this.focusTracker.remove(V.element)})}init(){return this.keystrokes.listenTo(this.element),super.init()}focus(){this._focusCycler.focusFirst()}fillFromConfig(O,R){return O?Promise.all(O.map((V)=>{const F='|'==V?new S.a:R.create(V);return this.items.add(F)})):Promise.resolve()}}u.a=E},function(r,u){'use strict';u.a=function(w){let C=0;for(let T of w)C++;return C}},function(r,u){'use strict';u.a=function(w,C,T){function P(D){const z=(I[D-1]===void 0?-1:I[D-1])+1,$=I[D+1]===void 0?-1:I[D+1],q=z>$?-1:1;F[D+q]&&(F[D]=F[D+q].slice(0)),F[D]||(F[D]=[]),F[D].push(z>$?S:E);let U=_Mathmax(z,$),K=U-D;for(;KV;M--)I[M]=P(M);I[V]=P(V),N++}while(I[V]!==R);return F[V].slice(1)}},function(r,u){'use strict';u.a=function(w){const C=[];for(;w&&w.nodeType!=Node.DOCUMENT_NODE;)C.unshift(w),w=w.parentNode;return C}},function(r,u){'use strict';u.a=function(w){return(C)=>C+w}},function(r,u,f){'use strict';var h=f(54),w=f(30),C=f.i(h.a)(w.a,'Map');u.a=C},function(r,u,f){'use strict';var h=f(54),w=f(30),C=f.i(h.a)(w.a,'Set');u.a=C},function(r,u,f){'use strict';var h=f(30),w=h.a.Uint8Array;u.a=w},function(r,u){'use strict';u.a=function(w,C,T){var P=T.length;return 0===P?w.call(C):1===P?w.call(C,T[0]):2===P?w.call(C,T[0],T[1]):3===P?w.call(C,T[0],T[1],T[2]):w.apply(C,T)}},function(r,u){'use strict';u.a=function(w,C,T,P){var S=-1,E=w.length;for(P&&E&&(T=w[++S]);++SN))return!1;var D=F.get(S);if(D)return D==E;var z=-1,$=!0,q=V&1?new w.a:void 0;for(F.set(S,E);++zO)return[];for(var F=0,I=0,N=Array(P(V/O));FE&&(E=_Mathmax(O+E,0)),f.i(w.a)(P,S,E)):-1}},function(r,u,f){'use strict';var w=f(145);u.a=function(C){return f.i(w.a)(C,1)}},function(r,u,f){'use strict';var h=f(27),w=f(129),C=f(137),T=f(8),P=f.i(T.a)(function(S){var E=f.i(h.a)(S,C.a);return E.length&&E[0]===S[0]?f.i(w.a)(E):[]});u.a=P},function(r,u,f){'use strict';var h=f(27),w=f(129),C=f(10),T=f(137),P=f(19),S=f(8),E=f.i(S.a)(function(O){var R=f.i(P.a)(O),V=f.i(h.a)(O,T.a);return R===f.i(P.a)(V)?R=void 0:V.pop(),V.length&&V[0]===O[0]?f.i(w.a)(V,f.i(C.a)(R)):[]});u.a=E},function(r,u,f){'use strict';var h=f(27),w=f(129),C=f(137),T=f(19),P=f(8),S=f.i(P.a)(function(E){var O=f.i(T.a)(E),R=f.i(h.a)(E,C.a);return O===f.i(T.a)(R)?O=void 0:R.pop(),R.length&&R[0]===E[0]?f.i(w.a)(R,void 0,O):[]});u.a=S},function(r,u,f){'use strict';var w=f(148),C=f(91),T=f(15),P=f(211),S=/[\\^$.*+?()[\]{}|]/g,E=/^\[object .+?Constructor\]$/,O=Object.prototype,R=Function.prototype.toString,V=O.hasOwnProperty,F=RegExp('^'+R.call(V).replace(S,'\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,'$1.*?')+'$');u.a=function(I){if(!f.i(T.a)(I))return!1;var N=f.i(w.a)(I)||f.i(C.a)(I)?F:E;return N.test(f.i(P.a)(I))}},function(r,u){'use strict';var w=Array.prototype,C=w.join;u.a=function(T,P){return T?C.call(T,P):''}},function(r,u,f){'use strict';var w=f(208),C=f(16);u.a=function(S,E,O){var R=S?S.length:0;if(!R)return-1;var V=R;if(void 0!==O&&(V=f.i(C.a)(O),V=(0>V?_Mathmax(R+V,0):_Mathmin(V,R-1))+1),E!==E)return f.i(w.a)(S,V,!0);for(;V--;)if(S[V]===E)return V;return-1}},function(r,u,f){'use strict';var w=f(455),C=f(16);u.a=function(T,P){return T&&T.length?f.i(w.a)(T,f.i(C.a)(P)):void 0}},function(r,u,f){'use strict';var h=f(150),w=f(8),C=f.i(w.a)(h.a);u.a=C},function(r,u,f){'use strict';var w=f(10),C=f(132);u.a=function(T,P,S){return T&&T.length&&P&&P.length?f.i(C.a)(T,P,f.i(w.a)(S)):T}},function(r,u,f){'use strict';var w=f(132);u.a=function(C,T,P){return C&&C.length&&T&&T.length?f.i(w.a)(C,T,void 0,P):C}},function(r,u,f){'use strict';var h=f(27),w=f(442),C=f(23),T=f(200),P=f(468),S=f(38),E=f(8),O=f.i(E.a)(function(R,V){V=f.i(C.a)(V,1);var F=R?R.length:0,I=f.i(w.a)(R,V);return f.i(T.a)(R,f.i(h.a)(V,function(N){return f.i(S.a)(N,F)?+N:N}).sort(P.a)),I});u.a=O},function(r,u,f){'use strict';var w=f(10),C=f(200);u.a=function(T,P){var S=[];if(!(T&&T.length))return S;var E=-1,O=[],R=T.length;for(P=f.i(w.a)(P,3);++EP?0:P)):[]}},function(r,u,f){'use strict';var w=f(37),C=f(16);u.a=function(T,P,S){var E=T?T.length:0;return E?(P=S||void 0===P?1:f.i(C.a)(P),P=E-P,f.i(w.a)(T,0>P?0:P,E)):[]}},function(r,u,f){'use strict';var w=f(10),C=f(88);u.a=function(T,P){return T&&T.length?f.i(C.a)(T,f.i(w.a)(P,3),!1,!0):[]}},function(r,u,f){'use strict';var w=f(10),C=f(88);u.a=function(T,P){return T&&T.length?f.i(C.a)(T,f.i(w.a)(P,3)):[]}},function(r,u,f){'use strict';var w=f(148),C=f(15),T=f(47),P=0/0,S=/^\s+|\s+$/g,E=/^[-+]0x[0-9a-f]+$/i,O=/^0b[01]+$/i,R=/^0o[0-7]+$/i,V=parseInt;u.a=function(F){if('number'==typeof F)return F;if(f.i(T.a)(F))return P;if(f.i(C.a)(F)){var I=f.i(w.a)(F.valueOf)?F.valueOf():F;F=f.i(C.a)(I)?I+'':I}if('string'!=typeof F)return 0===F?F:+F;F=F.replace(S,'');var N=O.test(F);return N||R.test(F)?V(F.slice(2),N?2:8):E.test(F)?P:+F}},function(r,u,f){'use strict';var h=f(23),w=f(44),C=f(14),T=f(8),P=f.i(T.a)(function(S){return f.i(w.a)(f.i(h.a)(S,1,C.a,!0))});u.a=P},function(r,u,f){'use strict';var h=f(23),w=f(10),C=f(44),T=f(14),P=f(19),S=f(8),E=f.i(S.a)(function(O){var R=f.i(P.a)(O);return f.i(T.a)(R)&&(R=void 0),f.i(C.a)(f.i(h.a)(O,1,T.a,!0),f.i(w.a)(R))});u.a=E},function(r,u,f){'use strict';var h=f(23),w=f(44),C=f(14),T=f(19),P=f(8),S=f.i(P.a)(function(E){var O=f.i(T.a)(E);return f.i(C.a)(O)&&(O=void 0),f.i(w.a)(f.i(h.a)(E,1,C.a,!0),void 0,O)});u.a=S},function(r,u,f){'use strict';var w=f(44);u.a=function(C){return C&&C.length?f.i(w.a)(C):[]}},function(r,u,f){'use strict';var w=f(10),C=f(44);u.a=function(T,P){return T&&T.length?f.i(C.a)(T,f.i(w.a)(P)):[]}},function(r,u,f){'use strict';var w=f(44);u.a=function(C,T){return C&&C.length?f.i(w.a)(C,void 0,T):[]}},function(r,u,f){'use strict';var h=f(69),w=f(14),C=f(8),T=f.i(C.a)(function(P,S){return f.i(w.a)(P)?f.i(h.a)(P,S):[]});u.a=T},function(r,u,f){'use strict';var h=f(84),w=f(135),C=f(14),T=f(8),P=f.i(T.a)(function(S){return f.i(w.a)(f.i(h.a)(S,C.a))});u.a=P},function(r,u,f){'use strict';var h=f(84),w=f(10),C=f(135),T=f(14),P=f(19),S=f(8),E=f.i(S.a)(function(O){var R=f.i(P.a)(O);return f.i(T.a)(R)&&(R=void 0),f.i(C.a)(f.i(h.a)(O,T.a),f.i(w.a)(R))});u.a=E},function(r,u,f){'use strict';var h=f(84),w=f(135),C=f(14),T=f(19),P=f(8),S=f.i(P.a)(function(E){var O=f.i(T.a)(E);return f.i(C.a)(O)&&(O=void 0),f.i(w.a)(f.i(h.a)(E,C.a),void 0,O)});u.a=S},function(r,u,f){'use strict';var h=f(8),w=f(100),C=f.i(h.a)(w.a);u.a=C},function(r,u,f){'use strict';var w=f(68),C=f(203);u.a=function(T,P){return f.i(C.a)(T||[],P||[],w.a)}},function(r,u,f){'use strict';var w=f(457),C=f(203);u.a=function(T,P){return f.i(C.a)(T||[],P||[],w.a)}},function(r,u,f){'use strict';var h=f(8),w=f(151),C=f.i(h.a)(function(T){var P=T.length,S=1{const{batch:V,match:F}=R,I=F[1].length;this.editor.execute(`heading${I}`,{batch:V})})}_addInlineAutoformats(){new w.a(this.editor,/(\*\*)([^\*]+)(\*\*)$/g,'bold'),new w.a(this.editor,/(__)([^_]+)(__)$/g,'bold'),new w.a(this.editor,/(?:^|[^\*])(\*)([^\*_]+)(\*)$/g,'italic'),new w.a(this.editor,/(?:^|[^_])(_)([^_]+)(_)$/g,'italic')}}u.a=O},function(r,u,f){'use strict';var h=f(3),w=f(155),C=f(26),T=f(291),P=f.n(T);class S extends h.a{static get requires(){return[w.a]}static get pluginName(){return'basic-styles/bold'}init(){const E=this.editor,O=E.t,R=E.commands.get('bold'),V='CTRL+B';E.ui.componentFactory.add('bold',(F)=>{const I=new C.a(F);return I.set({label:O('Bold'),icon:P.a,keystroke:V,tooltip:!0}),I.bind('isOn','isEnabled').to(R,'value','isEnabled'),this.listenTo(I,'execute',()=>E.execute('bold')),I}),E.keystrokes.set(V,'bold')}}u.a=S},function(r,u,f){'use strict';var h=f(3),w=f(156),C=f(26),T=f(292),P=f.n(T);class S extends h.a{static get requires(){return[w.a]}static get pluginName(){return'basic-styles/italic'}init(){const E=this.editor,O=E.t,R=E.commands.get('italic'),V='CTRL+I';E.ui.componentFactory.add('italic',(F)=>{const I=new C.a(F);return I.set({label:O('Italic'),icon:P.a,keystroke:V,tooltip:!0}),I.bind('isOn','isEnabled').to(R,'value','isEnabled'),this.listenTo(I,'execute',()=>E.execute('italic')),I}),E.keystrokes.set(V,'italic')}}u.a=S},function(r){'use strict';r.exports={toolbar:['headings','bold','italic','link','unlink','bulletedList','numberedList','undo','redo']}},function(r,u,f){'use strict';var h=f(3),w=f(326),C=f(329),T=f(328),P=f(164);class S extends h.a{static get pluginName(){return'clipboard/clipboard'}init(){const E=this.editor,O=E.document,R=E.editing.view;this._htmlDataProcessor=new P.a,R.addObserver(w.a),this.listenTo(R,'paste',(F,I)=>{const N=I.dataTransfer;let M='';N.getData('text/html')?M=f.i(T.a)(N.getData('text/html')):N.getData('text/plain')&&(M=f.i(C.a)(N.getData('text/plain'))),M=this._htmlDataProcessor.toView(M),I.preventDefault(),R.fire('clipboardInput',{dataTransfer:N,content:M})},{priority:'low'}),this.listenTo(R,'clipboardInput',(F,I)=>{if(!I.content.isEmpty){const N=this.editor.data,M=N.toModel(I.content,'$clipboardHolder');O.enqueueChanges(()=>{N.insertContent(M,O.selection)})}},{priority:'low'});const V=(F,I)=>{const N=I.dataTransfer,M=E.data.toView(E.data.getSelectedContent(O.selection));I.preventDefault(),R.fire('clipboardOutput',{dataTransfer:N,content:M,method:F.name})};this.listenTo(R,'copy',V,{priority:'low'}),this.listenTo(R,'cut',V,{priority:'low'}),this.listenTo(R,'clipboardOutput',(F,I)=>{I.content.isEmpty||I.dataTransfer.setData('text/html',this._htmlDataProcessor.toData(I.content)),'cut'==I.method&&O.enqueueChanges(()=>{E.data.deleteContent(O.selection,O.batch(),{merge:!0})})},{priority:'low'})}}u.a=S},function(r,u,f){'use strict';var h=f(332),w=f(164),C=f(334),T=f(335),P=f(429),S=f(318),E=f.n(S);class O extends h.a{constructor(R,V){super(R,V),this.document.createRoot(),this.data.processor=new w.a,this.ui=new C.a(this,new T.a(this.locale)),this._elementReplacer=new P.a}destroy(){return this.updateEditorElement(),this._elementReplacer.restore(),this.ui.destroy().then(()=>super.destroy())}static create(R,V){return new Promise((F)=>{const I=new this(R,V);F(I.initPlugins().then(()=>I._elementReplacer.replace(R,I.ui.view.element)).then(()=>I.ui.init()).then(()=>I.fire('uiReady')).then(()=>I.editing.view.attachDomRoot(I.ui.view.editableElement)).then(()=>I.loadDataFromEditorElement()).then(()=>{I.fire('dataReady'),I.fire('ready')}).then(()=>I))})}}u.a=O},function(r,u,f){'use strict';var h=f(3),w=f(369),C=f(370);class T extends h.a{static get pluginName(){return'enter/enter'}init(){const P=this.editor,S=P.editing.view;S.addObserver(C.a),P.commands.set('enter',new w.a(P)),this.listenTo(S,'enter',(E,O)=>{P.execute('enter'),O.preventDefault()},{priority:'low'})}}u.a=T},function(r,u,f){'use strict';function h(I,N){return Array.prototype.concat(...I.map((M)=>[M,N]))}var w=f(72),C=f(175),T=f(3),P=f(410),S=f(401),E=f(79),O=f(6),R=f(320),V=f.n(R);class F extends T.a{static get requires(){return[w.a,C.a]}static get pluginName(){return'heading/heading'}init(){const I=this.editor,N=new E.a,M=this._getLocalizedOptions(),D=[],z=I.t,$=z('Choose heading'),q=z('Heading');for(let K of M){const H=I.commands.get(K.modelElement),Y=new P.a({commandName:K.modelElement,label:K.title,class:K.class});Y.bind('isActive').to(H,'value'),N.add(Y),D.push(H)}const U=new P.a({withText:!0,items:N,tooltip:q});U.bind('isEnabled').to(...h(D,'isEnabled'),(...K)=>K.some((H)=>H)),U.bind('label').to(...h(D,'value'),(...K)=>{const H=K.findIndex((Y)=>Y);return M[H]?M[H].title:$}),I.ui.componentFactory.add('headings',(K)=>{const H=f.i(S.a)(U,K);return O.a.extend(H.template,{attributes:{class:['ck-heading-dropdown']}}),this.listenTo(H,'execute',(Y)=>{I.execute(Y.source.commandName),I.editing.view.focus()}),H})}_getLocalizedOptions(){const I=this.editor,N=I.t,M={Paragraph:N('Paragraph'),'Heading 1':N('Heading 1'),'Heading 2':N('Heading 2'),'Heading 3':N('Heading 3')};return I.config.get('heading.options').map((D)=>{const z=M[D.title];return z&&z!=D.title&&(D=Object.assign({},D,{title:z})),D})}}u.a=F},function(r,u,f){'use strict';var h=f(3),w=f(176),C=f(535),T=f(378),P=f(323),S=f.n(P);class E extends h.a{static get requires(){return[w.a,C.a,T.a]}static get pluginName(){return'image/image'}}u.a=E},function(r,u,f){'use strict';var h=f(3),w=f(373),C=f(321),T=f.n(C);class P extends h.a{static get requires(){return[w.a]}static get pluginName(){return'image/imagecaption'}}u.a=P},function(r,u,f){'use strict';var h=f(3),w=f(377),C=f(26);class T extends h.a{static get requires(){return[w.a]}static get pluginName(){return'image/imagestyle'}init(){const P=this.editor.config.get('image.styles');for(let E of P)this._createButton(E);const S=this.editor.config.get('image.defaultToolbar');S&&(S.length&&S.push('|'),P.forEach((E)=>S.push(E.name)))}_createButton(P){const S=this.editor,E=S.commands.get(P.name);S.ui.componentFactory.add(P.name,(O)=>{const R=new C.a(O);return R.set({label:P.title,icon:P.icon,tooltip:!0}),R.bind('isEnabled').to(E,'isEnabled'),R.bind('isOn').to(E,'value'),this.listenTo(R,'execute',()=>S.execute(P.name)),R})}}u.a=T},function(r,u,f){'use strict';function h($){return $.parent.getAncestors().find((q)=>q instanceof P.a)}var w=f(3),C=f(360),T=f(383),P=f(179),S=f(182),E=f(26),O=f(186),R=f(384),V=f(296),F=f.n(V),I=f(297),N=f.n(I),M=f(324),D=f.n(M);class z extends w.a{static get requires(){return[T.a]}static get pluginName(){return'link/link'}init(){this.editor.editing.view.addObserver(C.a),this.balloonPanelView=this._createBalloonPanel(),this.formView=this._createForm(),this._createToolbarLinkButton(),this._createToolbarUnlinkButton()}_createToolbarLinkButton(){const $=this.editor,q=$.commands.get('link'),U=$.t;$.keystrokes.set('CTRL+K',()=>this._showPanel()),$.ui.componentFactory.add('link',(K)=>{const H=new E.a(K);return H.isEnabled=!0,H.label=U('Link'),H.icon=F.a,H.keystroke='CTRL+K',H.tooltip=!0,H.bind('isEnabled').to(q,'isEnabled'),this.listenTo(H,'execute',()=>this._showPanel()),H})}_createToolbarUnlinkButton(){const $=this.editor,q=$.t,U=$.commands.get('unlink');$.ui.componentFactory.add('unlink',(K)=>{const H=new E.a(K);return H.isEnabled=!1,H.label=q('Unlink'),H.icon=N.a,H.tooltip=!0,H.bind('isEnabled').to(U,'isEnabled'),this.listenTo(H,'execute',()=>$.execute('unlink')),H})}_createBalloonPanel(){const $=this.editor,q=$.editing.view,U=new O.a($.locale);return U.maxWidth=300,$.ui.focusTracker.add(U.element),this.listenTo(q,'click',()=>{const K=q.selection,H=h(K.getFirstPosition());K.isCollapsed&&H&&(this._attachPanelToElement(),this.listenTo(q,'render',()=>{const Y=h(K.getFirstPosition());K.isCollapsed&&H===Y?this._attachPanelToElement(H):this._hidePanel()}),this.listenTo(U,'change:isVisible',()=>this.stopListening(q,'render')))}),$.keystrokes.set('Tab',(K,H)=>{U.isVisible&&!this.formView.focusTracker.isFocused&&(this.formView.focus(),H())}),$.keystrokes.set('Esc',(K,H)=>{U.isVisible&&(this._hidePanel(!0),H())}),f.i(S.a)({emitter:U,activator:()=>U.isVisible,contextElement:U.element,callback:()=>this._hidePanel()}),$.ui.view.body.add(U),U}_createForm(){const $=this.editor,q=new R.a($.locale);return q.urlInputView.bind('value').to($.commands.get('link'),'value'),this.listenTo(q,'submit',()=>{$.execute('link',q.urlInputView.inputView.element.value),this._hidePanel(!0)}),this.listenTo(q,'unlink',()=>{$.execute('unlink'),this._hidePanel(!0)}),q.keystrokes.set('Esc',(U,K)=>{this._hidePanel(!0),K()}),this.listenTo(q,'cancel',()=>this._hidePanel(!0)),this.balloonPanelView.content.add(q),q}_attachPanelToElement($){const q=this.editor.editing.view,U=$||h(q.selection.getFirstPosition()),K=U?q.domConverter.getCorrespondingDomElement(U):q.domConverter.viewRangeToDom(q.selection.getFirstRange());this.balloonPanelView.attachTo({target:K,limiter:q.domConverter.getCorrespondingDomElement(q.selection.editableElement)})}_hidePanel($){this.balloonPanelView.hide(),$&&this.editor.editing.view.focus()}_showPanel(){this._attachPanelToElement(),this.formView.urlInputView.select()}}u.a=z},function(r,u,f){'use strict';var h=f(180),w=f(299),C=f.n(w),T=f(298),P=f.n(T),S=f(3),E=f(22),O=f(26);class R extends S.a{static get requires(){return[h.a]}static get pluginName(){return'list/list'}init(){const V=this.editor.t;this._addButton('numberedList',V('Numbered List'),C.a),this._addButton('bulletedList',V('Bulleted List'),P.a),this.listenTo(this.editor.editing.view,'enter',(F,I)=>{const N=this.editor.document,M=N.selection.getLastPosition().parent;N.selection.isCollapsed&&'listItem'==M.name&&M.isEmpty&&(this.editor.execute('outdentList'),I.preventDefault(),F.stop())}),this.listenTo(this.editor.editing.view,'keydown',(F,I)=>{let N;if(I.keystroke==f.i(E.d)('Tab')?N='indentList':I.keystroke==f.i(E.d)('Shift+Tab')&&(N='outdentList'),N){const M=this.editor.commands.get(N);M.isEnabled&&(this.editor.execute(N),I.preventDefault(),F.stop())}})}_addButton(V,F,I){const N=this.editor,M=N.commands.get(V);N.ui.componentFactory.add(V,(D)=>{const z=new O.a(D);return z.set({label:F,icon:I,tooltip:!0}),z.bind('isOn','isEnabled').to(M,'value','isEnabled'),this.listenTo(z,'execute',()=>N.execute(V)),z})}}u.a=R},function(r,u,f){'use strict';var h=f(3),w=f(394),C=f(391);class T extends h.a{static get requires(){return[w.a,C.a]}static get pluginName(){return'typing/typing'}}u.a=T},function(r,u,f){'use strict';var h=f(3),w=f(416),C=f(26),T=f(301),P=f.n(T),S=f(300),E=f.n(S);class O extends h.a{static get requires(){return[w.a]}static get pluginName(){return'undo/undo'}init(){const R=this.editor,V=R.t;this._addButton('undo',V('Undo'),'CTRL+Z',P.a),this._addButton('redo',V('Redo'),'CTRL+Y',E.a),R.keystrokes.set('CTRL+Z','undo'),R.keystrokes.set('CTRL+Y','redo'),R.keystrokes.set('CTRL+SHIFT+Z','redo')}_addButton(R,V,F,I){const N=this.editor,M=N.commands.get(R);N.ui.componentFactory.add(R,(D)=>{const z=new C.a(D);return z.set({label:V,icon:I,keystroke:F,tooltip:!0}),z.bind('isEnabled').to(M,'isEnabled'),this.listenTo(z,'execute',()=>N.execute(R)),z})}}u.a=O},function(r){r.exports='\n\n \n bold\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n italic\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n'},function(r){r.exports='\n'},function(r){r.exports='\n'},function(r){r.exports='\n\n \n link\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n unlink\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n bulletedlist\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n numberedlist\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n redo\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n undo\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r,u,f){'use strict';var h=f(2),w=f(60);u.a=class{constructor(T,P,S){let E;if('function'==typeof S)E=S;else{E=(R)=>{const{batch:V}=R;T.execute(S,{batch:V})}}T.document.on('change',(O,R,V)=>{if('insert'!=R)return;const F=V.range.getItems().next().value;if(!(F instanceof w.a))return;const I=F.textNode,N=I.data;if('paragraph'!==I.parent.name||!N)return;const M=P.exec(N);M&&T.document.enqueueChanges(()=>{const D=T.document.batch(),z=h.a.createFromParentsAndOffsets(I.parent,0,I.parent,M[0].length);D.remove(z),E({batch:D,match:M})})})}}},function(r,u,f){'use strict';function h(P){return Array.from(P.getChildren()).reduce((S,E)=>S+E.data,'')}var w=f(111),C=f(101);u.a=class{constructor(P,S,E){this.editor=P;let O,R,V,F;S instanceof RegExp?O=S:V=S,'string'==typeof E?R=E:F=E,V=V||((I)=>{let N,M=[],D=[];for(;null!==(N=O.exec(I))&&!(N&&4>N.length);){let{index:z,1:$,2:q,3:U}=N;z+=N[0].length-($+q+U).length;const H=[z,z+$.length],Y=[z+$.length+q.length,z+$.length+q.length+U.length];M.push(H),M.push(Y),D.push([z+$.length,z+$.length+q.length])}return{remove:M,format:D}}),F=F||((I,N)=>{for(let M of N)I.setAttribute(M,R,!0)}),P.document.on('change',(I,N)=>{if('insert'!==N)return;const M=this.editor.document.selection;if(!M.isCollapsed||!M.focus||!M.focus.parent)return;const D=M.focus.parent,z=h(D).slice(0,M.focus.offset),$=V(z),q=[];$.format.forEach((H)=>{void 0===H[0]||void 0===H[1]||q.push(w.a.createFromParentsAndOffsets(D,H[0],D,H[1]))});const U=[];if($.remove.slice().reverse().forEach((H)=>{void 0===H[0]||void 0===H[1]||U.push(w.a.createFromParentsAndOffsets(D,H[0],D,H[1]))}),!(q.length&&U.length))return;const K=P.document.batch();P.document.enqueueChanges(()=>{const H=f.i(C.a)(R,q,P.document.schema);F(K,H);for(let Y of U)K.remove(Y)})})}}},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var h=f(281),w=f(276),C=f(277),T=f(278),P=f(280),S=f(282),E=f(283),O=f(284),R=f(285),V=f(286),F=f(154),I=f(287),N=f(288),M=f(72),D=f(289),z=f(290);class $ extends h.a{}u.ClassicEditor=$,$.build={plugins:[w.a,C.a,T.a,P.a,S.a,E.a,O.a,R.a,V.a,F.a,I.a,N.a,M.a,D.a,z.a],config:f(279)}},function(r,u){'use strict';function h(N){var M=N.length;if(0>18]+E[63&N>>12]+E[63&N>>6]+E[63&N]}function P(N,M,D){for(var $=[],q=M,z;q>16,U[H++]=255&$>>8,U[H++]=255&$;return 2===q?($=O[N.charCodeAt(M)]<<2|O[N.charCodeAt(M+1)]>>4,U[H++]=255&$):1===q&&($=O[N.charCodeAt(M)]<<10|O[N.charCodeAt(M+1)]<<4|O[N.charCodeAt(M+2)]>>2,U[H++]=255&$>>8,U[H++]=255&$),U},u.fromByteArray=function(N){for(var D=N.length,z=D%3,$='',q=[],U=16383,K=0,H=D-z,M;KH?H:K+U));return 1==z?(M=N[D-1],$+=E[M>>2],$+=E[63&M<<4],$+='=='):2==z&&(M=(N[D-2]<<8)+N[D-1],$+=E[M>>10],$+=E[63&M>>4],$+=E[63&M<<2],$+='='),q.push($),q.join('')};for(var E=[],O=[],R='undefined'==typeof Uint8Array?Array:Uint8Array,V='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',F=0,I=V.length;FTe)throw new RangeError('"size" argument must not be negative')}function O(Te,Pe,Se,Ee){return E(Pe),0>=Pe?T(Te,Pe):void 0===Se?T(Te,Pe):'string'==typeof Ee?T(Te,Pe).fill(Se,Ee):T(Te,Pe).fill(Se)}function R(Te,Pe){if(E(Pe),Te=T(Te,0>Pe?0:0|M(Pe)),!P.TYPED_ARRAY_SUPPORT)for(var Se=0;SePe.length?0:0|M(Pe.length);Te=T(Te,Se);for(var Ee=0;EeSe||Pe.byteLength=C())throw new RangeError('Attempt to allocate Buffer larger than maximum size: 0x'+C().toString(16)+' bytes');return 0|Te}function z(Te,Pe){if(P.isBuffer(Te))return Te.length;if('undefined'!=typeof ArrayBuffer&&'function'==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(Te)||Te instanceof ArrayBuffer))return Te.byteLength;'string'!=typeof Te&&(Te=''+Te);var Se=Te.length;if(0===Se)return 0;for(var Ee=!1;;)switch(Pe){case'ascii':case'latin1':case'binary':return Se;case'utf8':case'utf-8':case void 0:return fe(Te).length;case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return 2*Se;case'hex':return Se>>>1;case'base64':return _e(Te).length;default:if(Ee)return fe(Te).length;Pe=(''+Pe).toLowerCase(),Ee=!0;}}function $(Te,Pe,Se){var Ee=!1;if((void 0===Pe||0>Pe)&&(Pe=0),Pe>this.length)return'';if((void 0===Se||Se>this.length)&&(Se=this.length),0>=Se)return'';if(Se>>>=0,Pe>>>=0,Se<=Pe)return'';for(Te||(Te='utf8');;)switch(Te){case'hex':return ne(this,Pe,Se);case'utf8':case'utf-8':return Q(this,Pe,Se);case'ascii':return te(this,Pe,Se);case'latin1':case'binary':return ae(this,Pe,Se);case'base64':return X(this,Pe,Se);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return oe(this,Pe,Se);default:if(Ee)throw new TypeError('Unknown encoding: '+Te);Te=(Te+'').toLowerCase(),Ee=!0;}}function q(Te,Pe,Se){var Ee=Te[Pe];Te[Pe]=Te[Se],Te[Se]=Ee}function U(Te,Pe,Se,Ee,Oe){if(0===Te.length)return-1;if('string'==typeof Se?(Ee=Se,Se=0):2147483647Se&&(Se=-2147483648),Se=+Se,isNaN(Se)&&(Se=Oe?0:Te.length-1),0>Se&&(Se=Te.length+Se),Se>=Te.length){if(Oe)return-1;Se=Te.length-1}else if(0>Se)if(Oe)Se=0;else return-1;if('string'==typeof Pe&&(Pe=P.from(Pe,Ee)),P.isBuffer(Pe))return 0===Pe.length?-1:K(Te,Pe,Se,Ee,Oe);if('number'==typeof Pe)return Pe&=255,P.TYPED_ARRAY_SUPPORT&&'function'==typeof Uint8Array.prototype.indexOf?Oe?Uint8Array.prototype.indexOf.call(Te,Pe,Se):Uint8Array.prototype.lastIndexOf.call(Te,Pe,Se):K(Te,[Pe],Se,Ee,Oe);throw new TypeError('val must be string, number or Buffer')}function K(Te,Pe,Se,Ee,Oe){function Re(De,je){return 1==Ve?De[je]:De.readUInt16BE(je*Ve)}var Ve=1,Fe=Te.length,Ie=Pe.length;if(void 0!==Ee&&(Ee=(Ee+'').toLowerCase(),'ucs2'===Ee||'ucs-2'===Ee||'utf16le'===Ee||'utf-16le'===Ee)){if(2>Te.length||2>Pe.length)return-1;Ve=2,Fe/=2,Ie/=2,Se/=2}var Be;if(Oe){var Ne=-1;for(Be=Se;BeFe&&(Se=Fe-Ie),Be=Se;0<=Be;Be--){for(var Me=!0,Le=0;LeOe&&(Ee=Oe)):Ee=Oe;var Re=Pe.length;if(0!=Re%2)throw new TypeError('Invalid hex string');Ee>Re/2&&(Ee=Re/2);for(var Ve=0,Fe;VeRe&&(Ve=Re):2==Fe?(Ie=Te[Oe+1],128==(192&Ie)&&(Me=(31&Re)<<6|63&Ie,127Me||57343Me&&(Ve=Me))):void 0}null===Ve?(Ve=65533,Fe=1):65535>>10),Ve=56320|1023&Ve),Ee.push(Ve),Oe+=Fe}return ee(Ee)}function ee(Te){var Pe=Te.length;if(Pe<=Ce)return _StringfromCharCode.apply(String,Te);for(var Se='',Ee=0;EePe)&&(Pe=0),(!Se||0>Se||Se>Ee)&&(Se=Ee);for(var Oe='',Re=Pe;ReTe)throw new RangeError('offset is not uint');if(Te+Pe>Se)throw new RangeError('Trying to access beyond buffer length')}function re(Te,Pe,Se,Ee,Oe,Re){if(!P.isBuffer(Te))throw new TypeError('"buffer" argument must be a Buffer instance');if(Pe>Oe||PeTe.length)throw new RangeError('Index out of range')}function se(Te,Pe,Se,Ee){0>Pe&&(Pe=65535+Pe+1);for(var Oe=0,Re=_Mathmin(Te.length-Se,2);Oe>>8*(Ee?Oe:1-Oe)}function le(Te,Pe,Se,Ee){0>Pe&&(Pe=4294967295+Pe+1);for(var Oe=0,Re=_Mathmin(Te.length-Se,4);Oe>>8*(Ee?Oe:3-Oe)}function de(Te,Pe,Se,Ee){if(Se+Ee>Te.length)throw new RangeError('Index out of range');if(0>Se)throw new RangeError('Index out of range')}function ce(Te,Pe,Se,Ee,Oe){return Oe||de(Te,Pe,Se,4,3.4028234663852886e38,-3.4028234663852886e38),ve.write(Te,Pe,Se,Ee,23,4),Se+4}function ue(Te,Pe,Se,Ee,Oe){return Oe||de(Te,Pe,Se,8,1.7976931348623157e308,-1.7976931348623157e308),ve.write(Te,Pe,Se,Ee,52,8),Se+8}function pe(Te){if(Te=me(Te).replace(Ae,''),2>Te.length)return'';for(;0!=Te.length%4;)Te+='=';return Te}function me(Te){return Te.trim?Te.trim():Te.replace(/^\s+|\s+$/g,'')}function ge(Te){return 16>Te?'0'+Te.toString(16):Te.toString(16)}function fe(Te,Pe){Pe=Pe||Infinity;for(var Ee=Te.length,Oe=null,Re=[],Ve=0,Se;VeSe){if(!Oe){if(56319Se){-1<(Pe-=3)&&Re.push(239,191,189),Oe=Se;continue}Se=(Oe-55296<<10|Se-56320)+65536}else Oe&&-1<(Pe-=3)&&Re.push(239,191,189);if(Oe=null,128>Se){if(0>(Pe-=1))break;Re.push(Se)}else if(2048>Se){if(0>(Pe-=2))break;Re.push(192|Se>>6,128|63&Se)}else if(65536>Se){if(0>(Pe-=3))break;Re.push(224|Se>>12,128|63&Se>>6,128|63&Se)}else if(1114112>Se){if(0>(Pe-=4))break;Re.push(240|Se>>18,128|63&Se>>12,128|63&Se>>6,128|63&Se)}else throw new Error('Invalid code point')}return Re}function he(Te){for(var Pe=[],Se=0;Se(Pe-=2));++Ve)Se=Te.charCodeAt(Ve),Ee=Se>>8,Oe=Se%256,Re.push(Oe),Re.push(Ee);return Re}function _e(Te){return we.toByteArray(pe(Te))}function ke(Te,Pe,Se,Ee){for(var Oe=0;Oe=Pe.length||Oe>=Te.length);++Oe)Pe[Oe+Se]=Te[Oe];return Oe}function ye(Te){return Te!==Te}var we=f(305),ve=f(315),xe=f(316);u.Buffer=P,u.SlowBuffer=function(Te){return+Te!=Te&&(Te=0),P.alloc(+Te)},u.INSPECT_MAX_BYTES=50,P.TYPED_ARRAY_SUPPORT=h.TYPED_ARRAY_SUPPORT===void 0?function(){try{var Te=new Uint8Array(1);return Te.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===Te.foo()&&'function'==typeof Te.subarray&&0===Te.subarray(1,1).byteLength}catch(Pe){return!1}}():h.TYPED_ARRAY_SUPPORT,u.kMaxLength=C(),P.poolSize=8192,P._augment=function(Te){return Te.__proto__=P.prototype,Te},P.from=function(Te,Pe,Se){return S(null,Te,Pe,Se)},P.TYPED_ARRAY_SUPPORT&&(P.prototype.__proto__=Uint8Array.prototype,P.__proto__=Uint8Array,'undefined'!=typeof Symbol&&Symbol.species&&P[Symbol.species]===P&&Object.defineProperty(P,Symbol.species,{value:null,configurable:!0})),P.alloc=function(Te,Pe,Se){return O(null,Te,Pe,Se)},P.allocUnsafe=function(Te){return R(null,Te)},P.allocUnsafeSlow=function(Te){return R(null,Te)},P.isBuffer=function(Pe){return!!(null!=Pe&&Pe._isBuffer)},P.compare=function(Pe,Se){if(!P.isBuffer(Pe)||!P.isBuffer(Se))throw new TypeError('Arguments must be Buffers');if(Pe===Se)return 0;for(var Ee=Pe.length,Oe=Se.length,Re=0,Ve=_Mathmin(Ee,Oe);ReSe&&(Pe+=' ... ')),''},P.prototype.compare=function(Pe,Se,Ee,Oe,Re){if(!P.isBuffer(Pe))throw new TypeError('Argument must be a Buffer');if(void 0===Se&&(Se=0),void 0===Ee&&(Ee=Pe?Pe.length:0),void 0===Oe&&(Oe=0),void 0===Re&&(Re=this.length),0>Se||Ee>Pe.length||0>Oe||Re>this.length)throw new RangeError('out of range index');if(Oe>=Re&&Se>=Ee)return 0;if(Oe>=Re)return-1;if(Se>=Ee)return 1;if(Se>>>=0,Ee>>>=0,Oe>>>=0,Re>>>=0,this===Pe)return 0;for(var Ve=Re-Oe,Fe=Ee-Se,Ie=_Mathmin(Ve,Fe),Be=this.slice(Oe,Re),Ne=Pe.slice(Se,Ee),Me=0;MeRe)&&(Ee=Re),0Ee||0>Se)||Se>this.length)throw new RangeError('Attempt to write outside buffer bounds');Oe||(Oe='utf8');for(var Ve=!1;;)switch(Oe){case'hex':return H(this,Pe,Se,Ee);case'utf8':case'utf-8':return Y(this,Pe,Se,Ee);case'ascii':return W(this,Pe,Se,Ee);case'latin1':case'binary':return Z(this,Pe,Se,Ee);case'base64':return G(this,Pe,Se,Ee);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return J(this,Pe,Se,Ee);default:if(Ve)throw new TypeError('Unknown encoding: '+Oe);Oe=(''+Oe).toLowerCase(),Ve=!0;}},P.prototype.toJSON=function(){return{type:'Buffer',data:Array.prototype.slice.call(this._arr||this,0)}};var Ce=4096;P.prototype.slice=function(Pe,Se){var Ee=this.length;Pe=~~Pe,Se=Se===void 0?Ee:~~Se,0>Pe?(Pe+=Ee,0>Pe&&(Pe=0)):Pe>Ee&&(Pe=Ee),0>Se?(Se+=Ee,0>Se&&(Se=0)):Se>Ee&&(Se=Ee),Se=Re&&(Oe-=_Mathpow(2,8*Se)),Oe},P.prototype.readIntBE=function(Pe,Se,Ee){Pe|=0,Se|=0,Ee||ie(Pe,Se,this.length);for(var Oe=Se,Re=1,Ve=this[Pe+--Oe];0=Re&&(Ve-=_Mathpow(2,8*Se)),Ve},P.prototype.readInt8=function(Pe,Se){return Se||ie(Pe,1,this.length),128&this[Pe]?-1*(255-this[Pe]+1):this[Pe]},P.prototype.readInt16LE=function(Pe,Se){Se||ie(Pe,2,this.length);var Ee=this[Pe]|this[Pe+1]<<8;return 32768&Ee?4294901760|Ee:Ee},P.prototype.readInt16BE=function(Pe,Se){Se||ie(Pe,2,this.length);var Ee=this[Pe+1]|this[Pe]<<8;return 32768&Ee?4294901760|Ee:Ee},P.prototype.readInt32LE=function(Pe,Se){return Se||ie(Pe,4,this.length),this[Pe]|this[Pe+1]<<8|this[Pe+2]<<16|this[Pe+3]<<24},P.prototype.readInt32BE=function(Pe,Se){return Se||ie(Pe,4,this.length),this[Pe]<<24|this[Pe+1]<<16|this[Pe+2]<<8|this[Pe+3]},P.prototype.readFloatLE=function(Pe,Se){return Se||ie(Pe,4,this.length),ve.read(this,Pe,!0,23,4)},P.prototype.readFloatBE=function(Pe,Se){return Se||ie(Pe,4,this.length),ve.read(this,Pe,!1,23,4)},P.prototype.readDoubleLE=function(Pe,Se){return Se||ie(Pe,8,this.length),ve.read(this,Pe,!0,52,8)},P.prototype.readDoubleBE=function(Pe,Se){return Se||ie(Pe,8,this.length),ve.read(this,Pe,!1,52,8)},P.prototype.writeUIntLE=function(Pe,Se,Ee,Oe){if(Pe=+Pe,Se|=0,Ee|=0,!Oe){var Re=_Mathpow(2,8*Ee)-1;re(this,Pe,Se,Ee,Re,0)}var Ve=1,Fe=0;for(this[Se]=255&Pe;++Fe>>8):se(this,Pe,Se,!0),Se+2},P.prototype.writeUInt16BE=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,2,65535,0),P.TYPED_ARRAY_SUPPORT?(this[Se]=Pe>>>8,this[Se+1]=255&Pe):se(this,Pe,Se,!1),Se+2},P.prototype.writeUInt32LE=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,4,4294967295,0),P.TYPED_ARRAY_SUPPORT?(this[Se+3]=Pe>>>24,this[Se+2]=Pe>>>16,this[Se+1]=Pe>>>8,this[Se]=255&Pe):le(this,Pe,Se,!0),Se+4},P.prototype.writeUInt32BE=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,4,4294967295,0),P.TYPED_ARRAY_SUPPORT?(this[Se]=Pe>>>24,this[Se+1]=Pe>>>16,this[Se+2]=Pe>>>8,this[Se+3]=255&Pe):le(this,Pe,Se,!1),Se+4},P.prototype.writeIntLE=function(Pe,Se,Ee,Oe){if(Pe=+Pe,Se|=0,!Oe){var Re=_Mathpow(2,8*Ee-1);re(this,Pe,Se,Ee,Re-1,-Re)}var Ve=0,Fe=1,Ie=0;for(this[Se]=255&Pe;++VePe&&0==Ie&&0!==this[Se+Ve-1]&&(Ie=1),this[Se+Ve]=255&(Pe/Fe>>0)-Ie;return Se+Ee},P.prototype.writeIntBE=function(Pe,Se,Ee,Oe){if(Pe=+Pe,Se|=0,!Oe){var Re=_Mathpow(2,8*Ee-1);re(this,Pe,Se,Ee,Re-1,-Re)}var Ve=Ee-1,Fe=1,Ie=0;for(this[Se+Ve]=255&Pe;0<=--Ve&&(Fe*=256);)0>Pe&&0==Ie&&0!==this[Se+Ve+1]&&(Ie=1),this[Se+Ve]=255&(Pe/Fe>>0)-Ie;return Se+Ee},P.prototype.writeInt8=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,1,127,-128),P.TYPED_ARRAY_SUPPORT||(Pe=_Mathfloor(Pe)),0>Pe&&(Pe=255+Pe+1),this[Se]=255&Pe,Se+1},P.prototype.writeInt16LE=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,2,32767,-32768),P.TYPED_ARRAY_SUPPORT?(this[Se]=255&Pe,this[Se+1]=Pe>>>8):se(this,Pe,Se,!0),Se+2},P.prototype.writeInt16BE=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,2,32767,-32768),P.TYPED_ARRAY_SUPPORT?(this[Se]=Pe>>>8,this[Se+1]=255&Pe):se(this,Pe,Se,!1),Se+2},P.prototype.writeInt32LE=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,4,2147483647,-2147483648),P.TYPED_ARRAY_SUPPORT?(this[Se]=255&Pe,this[Se+1]=Pe>>>8,this[Se+2]=Pe>>>16,this[Se+3]=Pe>>>24):le(this,Pe,Se,!0),Se+4},P.prototype.writeInt32BE=function(Pe,Se,Ee){return Pe=+Pe,Se|=0,Ee||re(this,Pe,Se,4,2147483647,-2147483648),0>Pe&&(Pe=4294967295+Pe+1),P.TYPED_ARRAY_SUPPORT?(this[Se]=Pe>>>24,this[Se+1]=Pe>>>16,this[Se+2]=Pe>>>8,this[Se+3]=255&Pe):le(this,Pe,Se,!1),Se+4},P.prototype.writeFloatLE=function(Pe,Se,Ee){return ce(this,Pe,Se,!0,Ee)},P.prototype.writeFloatBE=function(Pe,Se,Ee){return ce(this,Pe,Se,!1,Ee)},P.prototype.writeDoubleLE=function(Pe,Se,Ee){return ue(this,Pe,Se,!0,Ee)},P.prototype.writeDoubleBE=function(Pe,Se,Ee){return ue(this,Pe,Se,!1,Ee)},P.prototype.copy=function(Pe,Se,Ee,Oe){if(Ee||(Ee=0),Oe||0===Oe||(Oe=this.length),Se>=Pe.length&&(Se=Pe.length),Se||(Se=0),0Se)throw new RangeError('targetStart out of bounds');if(0>Ee||Ee>=this.length)throw new RangeError('sourceStart out of bounds');if(0>Oe)throw new RangeError('sourceEnd out of bounds');Oe>this.length&&(Oe=this.length),Pe.length-SeRe||!P.TYPED_ARRAY_SUPPORT)for(Ve=0;VeRe&&(Pe=Re)}if(void 0!==Oe&&'string'!=typeof Oe)throw new TypeError('encoding must be a string');if('string'==typeof Oe&&!P.isEncoding(Oe))throw new TypeError('Unknown encoding: '+Oe)}else'number'==typeof Pe&&(Pe&=255);if(0>Se||this.length>>=0,Ee=Ee===void 0?this.length:Ee>>>0,Pe||(Pe=0);var Ve;if('number'==typeof Pe)for(Ve=Se;Ve * {\n margin-right: 0.4em; }\n .ck-toolbar > *:last-child {\n margin-right: 0; }\n\n.ck-dropdown::after {\n border-style: solid;\n border-width: .4em .4em 0 .4em;\n border-color: #707070 transparent;\n right: 0.8em; }\n\n.ck-dropdown .ck-button.ck-dropdown__button {\n padding-right: 1.6em; }\n .ck-dropdown .ck-button.ck-dropdown__button .ck-button__label {\n width: 7em;\n overflow: hidden;\n text-overflow: ellipsis; }\n\n.ck-dropdown__panel {\n border: 1px solid #b9b9b9;\n bottom: 1px;\n background: white;\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2); }\n .ck-dropdown__panel.ck-rounded-corners,\n .ck-rounded-corners .ck-dropdown__panel {\n border-radius: 2px; }\n\n.ck-list {\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n list-style-type: none;\n background: white; }\n .ck-list.ck-rounded-corners,\n .ck-rounded-corners .ck-list {\n border-radius: 2px; }\n .ck-list__item {\n padding: 0.64em;\n cursor: default;\n min-width: 12em; }\n .ck-list__item:hover, .ck-list__item:focus {\n background: #f7f7f7; }\n .ck-list__item:focus {\n box-shadow: 0 0 3px 2px #9bcdfb;\n position: relative;\n z-index: 1;\n outline: none; }\n .ck-list__item:last-of-type {\n border: none; }\n .ck-list__item_active {\n background: #1a8bf1;\n color: white; }\n .ck-list__item_active:hover, .ck-list__item_active:focus {\n background: #0e7ee2; }\n\n.ck-label {\n font-weight: bold; }\n\n.ck-input-text {\n box-shadow: 2px 2px 3px #e6e6e6 inset;\n border: 1px solid #b9b9b9;\n padding: 0.64em;\n min-width: 250px; }\n .ck-input-text.ck-rounded-corners,\n .ck-rounded-corners .ck-input-text {\n border-radius: 2px; }\n .ck-input-text:focus {\n outline: none;\n border: 1px solid #6ab5f9;\n box-shadow: 0 0 3px 2px #9bcdfb, 2px 2px 3px #e6e6e6 inset; }\n\n.ck-balloon-panel {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);\n min-width: 50px;\n min-height: 15px;\n background: white;\n border: 1px solid #b9b9b9; }\n .ck-balloon-panel.ck-rounded-corners,\n .ck-rounded-corners .ck-balloon-panel {\n border-radius: 2px; }\n .ck-balloon-panel:before, .ck-balloon-panel:after {\n width: 0;\n height: 0;\n border-style: solid; }\n .ck-balloon-panel_arrow_s:before, .ck-balloon-panel_arrow_s:after, .ck-balloon-panel_arrow_se:before, .ck-balloon-panel_arrow_se:after, .ck-balloon-panel_arrow_sw:before, .ck-balloon-panel_arrow_sw:after {\n border-width: 0 10px 15px 10px; }\n .ck-balloon-panel_arrow_s:before, .ck-balloon-panel_arrow_se:before, .ck-balloon-panel_arrow_sw:before {\n border-color: transparent transparent #b9b9b9 transparent; }\n .ck-balloon-panel_arrow_s:after, .ck-balloon-panel_arrow_se:after, .ck-balloon-panel_arrow_sw:after {\n border-color: transparent transparent white transparent;\n margin-top: 2px; }\n .ck-balloon-panel_arrow_n:before, .ck-balloon-panel_arrow_n:after, .ck-balloon-panel_arrow_ne:before, .ck-balloon-panel_arrow_ne:after, .ck-balloon-panel_arrow_nw:before, .ck-balloon-panel_arrow_nw:after {\n border-width: 15px 10px 0 10px; }\n .ck-balloon-panel_arrow_n:before, .ck-balloon-panel_arrow_ne:before, .ck-balloon-panel_arrow_nw:before {\n border-color: #b9b9b9 transparent transparent; }\n .ck-balloon-panel_arrow_n:after, .ck-balloon-panel_arrow_ne:after, .ck-balloon-panel_arrow_nw:after {\n border-color: white transparent transparent transparent;\n margin-bottom: 2px; }\n .ck-balloon-panel_arrow_s:before, .ck-balloon-panel_arrow_s:after {\n left: 50%;\n margin-left: -10px;\n top: -15px; }\n .ck-balloon-panel_arrow_se:before, .ck-balloon-panel_arrow_se:after {\n left: 20px;\n top: -15px; }\n .ck-balloon-panel_arrow_sw:before, .ck-balloon-panel_arrow_sw:after {\n right: 20px;\n top: -15px; }\n .ck-balloon-panel_arrow_n:before, .ck-balloon-panel_arrow_n:after {\n left: 50%;\n margin-left: -10px;\n bottom: -15px; }\n .ck-balloon-panel_arrow_ne:before, .ck-balloon-panel_arrow_ne:after {\n left: 20px;\n bottom: -15px; }\n .ck-balloon-panel_arrow_nw:before, .ck-balloon-panel_arrow_nw:after {\n right: 20px;\n bottom: -15px; }\n\n.ck-floating-panel {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #bfbfbf;\n background: #f7f7f7; }\n .ck-floating-panel.ck-rounded-corners,\n .ck-rounded-corners .ck-floating-panel {\n border-radius: 2px; }\n\n.ck-toolbar__container {\n background: #f7f7f7; }\n .ck-toolbar__container .ck-toolbar {\n border-radius: 0;\n border: 0; }\n .ck-toolbar__container .ck-toolbar .ck-button {\n border-width: 0; }\n .ck-toolbar__container .ck-toolbar .ck-button:not(:hover):not(:focus):not(.ck-on), .ck-toolbar__container .ck-toolbar .ck-button.ck-disabled {\n background: #f7f7f7; }\n .ck-toolbar__container .ck-toolbar .ck-button.ck-on {\n background: #dedede;\n border-color: #a1a1a1; }\n .ck-toolbar__container .ck-toolbar .ck-button.ck-on:not(.ck-disabled):hover, .ck-toolbar__container .ck-toolbar .ck-button.ck-on:not(.ck-disabled):focus {\n background: #c6c6c6;\n border-color: #888888; }\n .ck-toolbar__container .ck-toolbar .ck-button.ck-on:not(.ck-disabled):active {\n background: #b9b9b9;\n border-color: #7c7c7c;\n box-shadow: inset 0 2px 2px #a1a1a1; }\n .ck-toolbar__container .ck-toolbar .ck-dropdown__button {\n border-width: 1px; }\n .ck-toolbar__container .ck-toolbar .ck-dropdown__button:not(:hover):not(:focus):not(.ck-on) {\n background: white; }\n .ck-toolbar__container.ck-balloon-panel_arrow_s:after, .ck-toolbar__container.ck-balloon-panel_arrow_se:after, .ck-toolbar__container.ck-balloon-panel_arrow_sw:after {\n border-bottom-color: #f7f7f7; }\n .ck-toolbar__container.ck-balloon-panel_arrow_n:after, .ck-toolbar__container.ck-balloon-panel_arrow_ne:after, .ck-toolbar__container.ck-balloon-panel_arrow_nw:after {\n border-top-color: #f7f7f7; }\n\n.ck-editor .ck-toolbar.ck-toolbar_sticky {\n box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #bfbfbf;\n border-width: 0 0 1px;\n background: #f7f7f7; }\n\n.ck-editor {\n position: relative; }\n .ck-editor.ck-rounded-corners,\n .ck-rounded-corners .ck-editor {\n border-radius: 2px; }\n .ck-editor .ck-editor__top .ck-toolbar {\n border-radius: 0;\n border-top: 0;\n border-left: 0;\n border-right: 0; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button {\n border-width: 0; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button:not(:hover):not(:focus):not(.ck-on), .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-disabled {\n background: #f7f7f7; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on {\n background: #dedede;\n border-color: #a1a1a1; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on:not(.ck-disabled):hover, .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on:not(.ck-disabled):focus {\n background: #c6c6c6;\n border-color: #888888; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-button.ck-on:not(.ck-disabled):active {\n background: #b9b9b9;\n border-color: #7c7c7c;\n box-shadow: inset 0 2px 2px #a1a1a1; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-dropdown__button {\n border-width: 1px; }\n .ck-editor .ck-editor__top .ck-toolbar .ck-dropdown__button:not(:hover):not(:focus):not(.ck-on) {\n background: white; }\n .ck-editor .ck-editor__main {\n background: white; }\n .ck-editor .ck-editor__bottom {\n border-bottom: 0;\n border-left: 0;\n border-right: 0;\n padding: 0.8em; }\n .ck-editor .ck-editor__editable.ck-focused {\n outline: 1px solid #6ab5f9;\n box-shadow: 2px 2px 3px #e6e6e6 inset; }\n .ck-editor .ck-editor__editable_inline {\n overflow: auto;\n padding: 0 0.8em; }\n\n.ck-editor,\n.ck-editor-bottom {\n background: #f7f7f7;\n border: 1px solid #b9b9b9; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'.ck-placeholder::before {\n content: attr(data-placeholder);\n cursor: text;\n color: #c2c2c2; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n/**\n * Base font size.\n *\n * @see $ck-font-sizes\n */\n/**\n * Base font face.\n *\n */\n/**\n * Base font sizes for scaling.\n *\n * @see ck-font-size\n */\n/**\n * Returns font-size in units for given level.\n *\n * @param {Number} $level [ 0 ] - Size of the font.\n * @return {String}\n * @see $ck-font-sizes\n * @see $ck-font-size-base\n */\n.ck-heading_heading1 {\n font-size: 1.5em; }\n\n.ck-heading_heading2 {\n font-size: 1.3em; }\n\n.ck-heading_heading3 {\n font-size: 1.1em; }\n\n[class*="ck-heading_"] {\n line-height: 21.6px;\n padding: 9.6px; }\n\n[class*="ck-heading_heading"] {\n font-weight: bold; }\n\n.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label {\n width: 8em; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'@charset "UTF-8";\n/**\n * Colors configured by the user.\n *\n * @type Map\n * @example\n *\t\t$ck-colors: ( \'foreground\': red );\n * @see $_ck-colors\n */\n/**\n * Internal map with default colors.\n *\n * @type Map\n * @see ck-color-add\n */\n/**\n * Returns a color of given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $_ck-colors\n */\n/**\n * Returns a border\u2013color for a given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $ck-color\n */\n/**\n * Adds a color to internal color map.\n *\n * @example\n *\t\t@include ck-color-add( ( \'special\': yellow, \'hover\': #00FF00 ) );\n * @param {Map} $map - A map with new colors.\n * @see $_ck-colors\n */\n/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n/**\n * Base font size.\n *\n * @see $ck-font-sizes\n */\n/**\n * Base font face.\n *\n */\n/**\n * Base font sizes for scaling.\n *\n * @see ck-font-size\n */\n/**\n * Returns font-size in units for given level.\n *\n * @param {Number} $level [ 0 ] - Size of the font.\n * @return {String}\n * @see $ck-font-sizes\n * @see $ck-font-size-base\n */\n.ck-editor__editable .image > figcaption {\n background-color: #f7f7f7;\n padding: 0.8em;\n font-size: 0.75rem;\n color: #858585;\n outline-offset: -1px; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n.cke-text-alternative-form {\n padding: 1.2em;\n overflow: hidden; }\n .cke-text-alternative-form .ck-label {\n margin-bottom: 0.4em; }\n .cke-text-alternative-form__actions {\n clear: both;\n padding-top: 1.2em; }\n .cke-text-alternative-form__actions .ck-button {\n float: right; }\n .cke-text-alternative-form__actions .ck-button + .ck-button {\n margin-right: 0.64em; }\n .cke-text-alternative-form__actions .ck-button + .ck-button + .ck-button {\n float: left; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'.ck-editor__editable .image {\n text-align: center;\n clear: both; }\n .ck-editor__editable .image.image-style-side {\n float: right;\n margin-left: 0.8em;\n max-width: 50%; }\n\n.ck-editor__editable .image > img {\n display: block;\n margin: 0 auto;\n max-width: 100%; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n.ck-link-form {\n padding: 1.2em;\n overflow: hidden; }\n .ck-link-form .ck-label {\n margin-bottom: 0.4em; }\n .ck-link-form__actions {\n clear: both;\n padding-top: 1.2em; }\n .ck-link-form__actions .ck-button {\n float: right; }\n .ck-link-form__actions .ck-button + .ck-button {\n margin-right: 0.64em; }\n .ck-link-form__actions .ck-button + .ck-button + .ck-button {\n float: left; }\n',''])},function(r,u,f){u=r.exports=f(32)(void 0),u.push([r.i,'@charset "UTF-8";\n/**\n * Colors configured by the user.\n *\n * @type Map\n * @example\n *\t\t$ck-colors: ( \'foreground\': red );\n * @see $_ck-colors\n */\n/**\n * Internal map with default colors.\n *\n * @type Map\n * @see ck-color-add\n */\n/**\n * Returns a color of given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $_ck-colors\n */\n/**\n * Returns a border\u2013color for a given name and lightness offset.\n *\n * @param {String} $name [ \'background\' ] - Name of the color.\n * @param {Number} $offset [ 0 ] - Offset of the lightness.\n * @return {String}\n * @see $ck-color\n */\n/**\n * Adds a color to internal color map.\n *\n * @example\n *\t\t@include ck-color-add( ( \'special\': yellow, \'hover\': #00FF00 ) );\n * @param {Map} $map - A map with new colors.\n * @see $_ck-colors\n */\n/**\n * A visual style of element\'s inner shadow (i.e. input).\n */\n/**\n * A visual style of element\'s drop shadow (i.e. panel).\n */\n/**\n * A helper to combine multiple shadows.\n */\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n/**\n * A visual style of focused element\'s outer shadow.\n */\n/**\n * A visual style of focused element\'s border or outline.\n */\n/**\n * A class which indicates that an element holding it is disabled.\n */\n.ck-disabled {\n opacity: .5; }\n\n/**\n * A visual style of focused element\'s border or outline.\n */\n/**\n * Brings visual styling for :focus state.\n */\n/**\n * Default spacing value ("unit").\n *\n */\n/**\n * Internal map with default spacings.\n *\n * @type Map\n * @see ck-spacing\n */\n/**\n * Returns a spacing value with units for given name.\n *\n * @param {String} $spacing [ \'standard\' ] - Spacing level.\n * @return {String}\n * @see $ck-def-spacing\n * @see $ck-def-spacings\n */\n.ck-widget {\n margin: 0.8em 0;\n padding: 0; }\n .ck-widget.ck-widget_selected, .ck-widget.ck-widget_selected:hover {\n outline: 3px solid #6ab5f9; }\n .ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected {\n outline: 3px solid #dddddd; }\n .ck-widget:hover {\n outline: 3px solid #ffd25c; }\n .ck-widget .ck-editable.ck-editable_focused, .ck-widget .ck-editable:focus {\n outline: 1px solid #6ab5f9;\n box-shadow: 2px 2px 3px #e6e6e6 inset;\n background-color: white; }\n',''])},function(r,u){u.read=function(f,h,w,C,T){var P,S,E=8*T-C-1,O=(1<>1,V=-7,F=w?T-1:0,I=w?-1:1,N=f[h+F];for(F+=I,P=N&(1<<-V)-1,N>>=-V,V+=E;0>=-V,V+=C;0>1,I=23===T?5.960464477539063e-8-6.617444900424222e-24:0,N=C?0:P-1,M=C?1:-1,D=0>h||0===h&&0>1/h?1:0;for(h=Math.abs(h),isNaN(h)||h===Infinity?(E=isNaN(h)?1:0,S=V):(S=_Mathfloor(Math.log(h)/Math.LN2),1>h*(O=_Mathpow(2,-S))&&(S--,O*=2),h+=1<=S+F?I/O:I*_Mathpow(2,1-F),2<=h*O&&(S++,O/=2),S+F>=V?(E=0,S=V):1<=S+F?(E=(h*O-1)*_Mathpow(2,T),S+=F):(E=h*_Mathpow(2,F-1)*_Mathpow(2,T),S=0));8<=T;f[w+N]=255&E,N+=M,E/=256,T-=8);for(S=S<(\s+)<\/span>/g,(C,T)=>{return 1==T.length?' ':T})}},function(r,u){'use strict';u.a=function(w){return w=w.replace(//g,'>').replace(/\n\n/g,'

').replace(/\n/g,' ').replace(/^\s/,' ').replace(/\s$/,' ').replace(/\s\s/g,'  '),-1

')&&(w=`

${w}

`),w}},function(r,u,f){'use strict';var h=f(67);class w extends h.a{constructor(C){super(),this.editor=C}set(C,T){if('string'==typeof T){const P=T;T=()=>{this.editor.execute(P)}}super.set(C,T)}listenTo(C){this._listener.listenTo(C,'keydown',(T,P)=>{const S=this.press(P);S&&P.preventDefault()})}}u.a=w},function(r,u,f){'use strict';var h=f(7),w=f(417),C=f(333),T=f(530),P=f(336),S=f(351),E=f(0),O=f(4);class R{constructor(V){const F=this.constructor.build&&this.constructor.build.plugins;this.config=new w.a(V,this.constructor.build&&this.constructor.build.config),this.config.define('plugins',F),this.plugins=new C.a(this,F),this.commands=new Map,this.locale=new T.a(this.config.get('lang')),this.t=this.locale.t,this.document=new S.a,this.data=new P.a(this.document)}initPlugins(){function F(M,D){return M.reduce((z,$)=>{return z.then($[D].bind($))},Promise.resolve())}const I=this,N=this.config;return function(){const M=N.get('plugins')||[],D=N.get('removePlugins')||[];return I.plugins.load(M,D)}().then((M)=>{return F(M,'init').then(()=>F(M,'afterInit'))}).then(()=>this.fire('pluginsReady'))}destroy(){return this.fire('destroy'),this.stopListening(),Promise.resolve().then(()=>{this.document.destroy(),this.data.destroy()})}execute(V,F){let I=this.commands.get(V);if(!I)throw new E.a('editor-command-not-found: Specified command has not been added to the editor.');I._execute(F)}static create(V){return new Promise((F)=>{const I=new this(V);F(I.initPlugins().then(()=>{I.fire('dataReady'),I.fire('ready')}).then(()=>I))})}}u.a=R,f.i(O.a)(R,h.a)},function(r,u,f){'use strict';var h=f(331),w=f(330),C=f(338),T=f(420),P=f(428);class S extends h.a{constructor(E,O){super(O),this.element=E,this.editing=new C.a(this.document),this.keystrokes=new w.a(this),this.keystrokes.listenTo(this.editing.view)}destroy(){return Promise.resolve().then(()=>this.keystrokes.destroy()).then(()=>this.editing.destroy()).then(super.destroy())}setData(E){this.data.set(E)}getData(){return this.data.get()}updateEditorElement(){f.i(P.a)(this.element,this.getData())}loadDataFromEditorElement(){this.setData(f.i(T.a)(this.element))}static create(E,O){return new Promise((R)=>{const V=new this(E,O);R(V.initPlugins().then(()=>{V.fire('dataReady'),V.fire('ready')}).then(()=>V))})}}u.a=S},function(r,u,f){'use strict';var h=f(3),w=f(0),C=f(48);class T{constructor(P,S=[]){this._editor=P,this._availablePlugins=new Map,this._plugins=new Map;for(const E of S)this._availablePlugins.set(E,E),E.pluginName&&this._availablePlugins.set(E.pluginName,E)}*[Symbol.iterator](){for(const P of this._plugins)'function'==typeof P[0]&&(yield P)}get(P){return this._plugins.get(P)}load(P,S=[]){function E(K){return q.includes(K)||N.get(K)||D.has(K)?void 0:O(K).catch((H)=>{throw C.a.error('plugincollection-load: It was not possible to load the plugin.',{plugin:K}),H})}function O(K){return new Promise((H)=>{D.add(K),V(K),K.requires&&K.requires.forEach((W)=>{const Z=R(W);if(S.includes(Z))throw new w.a('plugincollection-required: Cannot load a plugin because one of its dependencies is listed inthe `removePlugins` option.',{plugin:Z,requiredBy:K});E(Z)});const Y=new K(M);N._add(K,Y),z.push(Y),H()})}function R(K){return'function'==typeof K?K:N._availablePlugins.get(K)}function V(K){if(!(K.prototype instanceof h.a))throw new w.a('plugincollection-instance: The loaded plugin module is not an instance of Plugin.',{plugin:K})}function I(K){return K.map((H)=>R(H)).filter((H)=>!!H)}const N=this,M=this._editor,D=new Set,z=[],$=I(P),q=I(S),U=function(K){const H=[];for(const Y of K)R(Y)||H.push(Y);return H.length?H:null}(P);if(U){const K='plugincollection-plugin-not-found: Some plugins are not available and could not be loaded.';return C.a.error(K,{plugins:U}),Promise.reject(new w.a(K,{plugins:U}))}return Promise.all($.map(E)).then(()=>z)}_add(P,S){this._plugins.set(P,S),P.pluginName&&this._plugins.set(P.pluginName,S)}}u.a=T},function(r,u,f){'use strict';var h=f(397),w=f(66),C=f(411);u.a=class{constructor(P,S){this.editor=P,this.view=S,this.componentFactory=new h.a(P),this.focusTracker=new w.a,S.set('width',P.config.get('ui.width')),S.set('height',P.config.get('ui.height')),S.toolbar.bind('isActive').to(this.focusTracker,'isFocused'),S.toolbar.limiterElement=S.element;const E=P.editing.createRoot('div');S.editable.bind('isReadOnly').to(E),S.editable.bind('isFocused').to(P.editing.view),S.editable.name=E.rootName,this.focusTracker.add(S.editableElement)}init(){const P=this.editor;return this.view.init().then(()=>{return this.view.toolbar.fillFromConfig(P.config.get('toolbar'),this.componentFactory)}).then(()=>{f.i(C.a)({origin:P.editing.view,originFocusTracker:this.focusTracker,originKeystrokeHandler:P.keystrokes,toolbar:this.view.toolbar})})}destroy(){return this.view.destroy()}}},function(r,u,f){'use strict';var h=f(404),w=f(403),C=f(412);class T extends h.a{constructor(P){super(P),this.toolbar=new C.a(P),this.editable=new w.a(P),this.top.add(this.toolbar),this.main.add(this.editable)}get editableElement(){return this.editable.element}}u.a=T},function(r,u,f){'use strict';var h=f(4),w=f(7),C=f(161),T=f(163),P=f(102),S=f(346),E=f(344),O=f(117),R=f(2),V=f(1),F=f(340),I=f(337),N=f(341),M=f(339);class D{constructor(z,$){this.model=z,this.processor=$,this.mapper=new C.a,this.modelToView=new T.a(this.model,{mapper:this.mapper}),this.modelToView.on('insert:$text',f.i(P.j)(),{priority:'lowest'}),this.viewToModel=new S.a({schema:z.schema}),this.viewToModel.on('text',f.i(E.a)(),{priority:'lowest'}),this.viewToModel.on('element',f.i(E.b)(),{priority:'lowest'}),this.viewToModel.on('documentFragment',f.i(E.b)(),{priority:'lowest'}),this.on('insertContent',(q,U)=>f.i(F.a)(this,U.content,U.selection,U.batch)),this.on('deleteContent',(q,U)=>f.i(I.a)(U.selection,U.batch,U.options)),this.on('modifySelection',(q,U)=>f.i(N.a)(this,U.selection,U.options)),this.on('getSelectedContent',(q,U)=>{U.content=f.i(M.a)(U.selection)})}get(z='main'){return this.stringify(this.model.getRoot(z))}stringify(z){const $=this.toView(z);return this.processor.toData($)}toView(z){const $=R.a.createIn(z),q=new O.a;return this.mapper.bindElements(z,q),this.modelToView.convertInsertion($),this.mapper.clearBindings(),q}set(z,$='main'){const q=this.model.getRoot($);this.model.enqueueChanges(()=>{this.model.selection.removeAllRanges(),this.model.selection.clearAttributes(),this.model.batch('transparent').remove(R.a.createIn(q)).insert(V.a.createAt(q,0),this.parse(z))})}parse(z,$='$root'){const q=this.processor.toView(z);return this.toModel(q,$)}toModel(z,$='$root'){return this.viewToModel.convert(z,{context:[$]})}destroy(){}insertContent(z,$,q){this.fire('insertContent',{content:z,selection:$,batch:q})}deleteContent(z,$,q){this.fire('deleteContent',{batch:$,selection:z,options:q})}modifySelection(z,$){this.fire('modifySelection',{selection:z,options:$})}getSelectedContent(z){const $={selection:z};return this.fire('getSelectedContent',$),$.content}}u.a=D,f.i(h.a)(D,w.a)},function(r,u,f){'use strict';function w(R,V,F){const I=V.parent,N=F.parent;if(I!=N&&I.parent&&N.parent&&T(V,F)){for(V=S.a.createAfter(I),F=S.a.createBefore(N),N.isEmpty?R.remove(N):(!F.isEqual(V)&&R.move(N,V),R.merge(V));F.parent.isEmpty;){const M=F.parent;F=S.a.createBefore(M),R.remove(M)}w(R,V,F)}}function C(R,V){const F=R.schema.check({name:'$text',inside:V}),I=R.schema.check({name:'paragraph',inside:V});return!F&&I}function T(R,V){const F=R.root.document.schema,I=new E.a(R,V);for(const N of I.getWalker())if(F.objects.has(N.item.name)||F.limits.has(N.item.name))return!1;return!0}var P=f(168),S=f(1),E=f(2),O=f(5);u.a=function(R,V,F={}){if(!R.isCollapsed){const I=R.getFirstRange(),N=I.start,M=P.a.createFromPosition(I.end);if(I.start.isTouching(I.end)||V.remove(I),F.merge&&w(V,N,M),R.collapse(N),C(V.document,N)){const D=new O.a('paragraph');V.insert(N,D),R.collapse(D)}M.detach()}}},function(r,u,f){'use strict';var h=f(359),w=f(161),C=f(163),T=f(102),P=f(343),S=f(162),E=f(7);u.a=class{constructor(R){this.model=R,this.view=new h.a,this.mapper=new w.a,this.modelToView=new C.a(this.model,{mapper:this.mapper,viewSelection:this.view.selection}),this._listener=Object.create(E.a),this._listener.listenTo(this.model,'change',(V,F,I)=>{this.modelToView.convertChange(F,I)},{priority:'low'}),this._listener.listenTo(this.model,'changesDone',()=>{const V=this.model.selection;this.modelToView.convertSelection(V),this.view.render()},{priority:'low'}),this._listener.listenTo(this.model.markers,'add',(V,F)=>{this.modelToView.convertMarker('addMarker',F.name,F.getRange())}),this._listener.listenTo(this.model.markers,'remove',(V,F)=>{this.modelToView.convertMarker('removeMarker',F.name,F.getRange())}),this._listener.listenTo(this.view,'selectionChange',f.i(P.a)(this.model,this.mapper)),this.modelToView.on('insert:$text',f.i(T.j)(),{priority:'lowest'}),this.modelToView.on('remove',f.i(T.k)(),{priority:'low'}),this.modelToView.on('selection',f.i(S.c)(),{priority:'low'}),this.modelToView.on('selection',f.i(S.d)(),{priority:'low'}),this.modelToView.on('selection',f.i(S.e)(),{priority:'low'}),this.modelToView.on('selection',f.i(S.f)(),{priority:'low'})}createRoot(R,V='main'){const F=this.view.createRoot(R,V),I=this.model.getRoot(V);return this.mapper.bindElements(I,F),F}destroy(){this.view.destroy(),this._listener.stopListening()}}},function(r,u,f){'use strict';function w(O){const R=[];Array.from(O.getItems({direction:'backward'})).map((V)=>T.a.createOn(V)).filter((V)=>{const F=(V.start.isAfter(O.start)||V.start.isEqual(O.start))&&(V.end.isBefore(O.end)||V.end.isEqual(O.end));return F}).forEach((V)=>{R.push(V.start.parent),f.i(E.c)(V)}),R.forEach((V)=>{for(let F=V;F.parent&&F.isEmpty;){const I=T.a.createOn(F);F=F.parent,f.i(E.c)(I)}})}var C=f(51),T=f(2),P=f(1),S=f(24),E=f(13);u.a=function(O){const R=new C.a,V=O.getFirstRange();if(!V||V.isCollapsed)return R;const F=V.start.root,I=V.start.getCommonPath(V.end),N=F.getNodeByPath(I);let M=V.start.parent==V.end.parent?V:T.a.createFromParentsAndOffsets(N,V.start.path[I.length],N,V.end.path[I.length]+1);const D=M.end.offset-M.start.offset;for(const z of M.getItems({shallow:!0}))z.is('textProxy')?R.appendChildren(new S.a(z.data,z.getAttributes())):R.appendChildren(z.clone(!0));if(M!=V){const z=V._getTransformedByMove(M.start,P.a.createAt(R,0),D)[0],$=new T.a(P.a.createAt(R),z.start),q=new T.a(z.end,P.a.createAt(R,'end'));w(q),w($)}return R}},function(r,u,f){'use strict';var w=f(1),C=f(168),T=f(5),P=f(2),S=f(48);u.a=function(O,R,V,F){F||(F=O.model.batch()),V.isCollapsed||O.deleteContent(V,F,{merge:!0});const I=new E(O,F,V.anchor);let N;N=R.is('documentFragment')?R.getChildren():[R],I.handleNodes(N,{isFirst:!0,isLast:!0});const M=I.getSelectionRange();M?V.setRanges([M]):S.a.warn('insertcontent-no-range: Cannot determine a proper selection range after insertion.')};class E{constructor(O,R,V){this.dataController=O,this.batch=R,this.position=V,this.canMergeWith=new Set([this.position.parent]),this.schema=O.model.schema}handleNodes(O,R){O=Array.from(O);for(let V=0;V!0);if(R.schema.check({name:'$text',inside:V.nextPosition}))return V.nextPosition}}function C(R,V){const F=R.position.textNode;if(F){const I=F.data;for(let N=R.position.offset-F.startOffset;f.i(O.a)(I,N)||'character'==V&&f.i(O.b)(I,N);)R.next(),N=R.position.offset-F.startOffset}return R.position}function T(R,V){const F=R.root,I=P.a.createAt(F,V?'end':0);return V?new E.a(R,I):new E.a(I,R)}var P=f(1),S=f(35),E=f(2),O=f(275);u.a=function(R,V,F={}){const I=R.model.schema,N='backward'!=F.direction,M=F.unit?F.unit:'character',D=V.focus,z=new S.a({boundaries:T(D,N),singleCharacters:!0,direction:N?'forward':'backward'}),$={walker:z,schema:I,isForward:N,unit:M};for(let q;q=z.next();){if(q.done)return;const U=w($,q.value);if(U)return void V.setFocus(U)}}},function(r,u,f){'use strict';var h=f(60);u.a=class{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(C,T){C instanceof h.a&&(C=this._getSymbolForTextProxy(C)),this._consumable.has(C)||this._consumable.set(C,new Map),this._consumable.get(C).set(T,!0)}consume(C,T){return C instanceof h.a&&(C=this._getSymbolForTextProxy(C)),!!this.test(C,T)&&(this._consumable.get(C).set(T,!1),!0)}test(C,T){C instanceof h.a&&(C=this._getSymbolForTextProxy(C));const P=this._consumable.get(C);if(P===void 0)return null;const S=P.get(T);return void 0===S?null:S}revert(C,T){C instanceof h.a&&(C=this._getSymbolForTextProxy(C));const P=this.test(C,T);return!1===P?(this._consumable.get(C).set(T,!0),!0):!0!==P&&null}_getSymbolForTextProxy(C){let T=null;const P=this._textProxyRegistry.get(C.startOffset);if(P){const S=P.get(C.endOffset);S&&(T=S.get(C.parent))}return T||(T=this._addSymbolForTextProxy(C.startOffset,C.endOffset,C.parent)),T}_addSymbolForTextProxy(C,T,P){const S=Symbol();let E,O;return E=this._textProxyRegistry.get(C),E||(E=new Map,this._textProxyRegistry.set(C,E)),O=E.get(T),O||(O=new Map,E.set(T,O)),O.set(P,S),S}}},function(r,u,f){'use strict';var w=f(59);u.a=function(C,T){return(P,S)=>{const E=S.newSelection,O=new w.a,R=[];for(let V of E.getRanges())R.push(T.toModelRange(V));O.setRanges(R,E.isBackward),O.isEqual(C.selection)||C.enqueueChanges(()=>{C.selection.setTo(O)})}}},function(r,u,f){'use strict';var C=f(51),T=f(24),P=f(13);u.b=function(){return(S,E,O,R)=>{if(!E.output&&O.consume(E.input,{name:!0})){const V=R.convertChildren(E.input,O,E);E.output=new C.a(f.i(P.b)(V))}}},u.a=function(){return(S,E,O,R)=>{const V={name:'$text',inside:E.context};R.schema.check(V)&&O.consume(E.input)&&(E.output=new T.a(E.input.data))}}},function(r,u,f){'use strict';var h=f(11),w=f(0);class C{constructor(){this._consumables=new Map}add(P,S){let E;return P.is('text')||P.is('documentFragment')?void this._consumables.set(P,!0):void(this._consumables.has(P)?E=this._consumables.get(P):(E=new T,this._consumables.set(P,E)),E.add(S))}test(P,S){const E=this._consumables.get(P);return void 0===E?null:P.is('text')||P.is('documentFragment')?E:E.test(S)}consume(P,S){return!!this.test(P,S)&&(P.is('text')||P.is('documentFragment')?this._consumables.set(P,!1):this._consumables.get(P).consume(S),!0)}revert(P,S){const E=this._consumables.get(P);E!==void 0&&(P.is('text')||P.is('documentFragment')?this._consumables.set(P,!0):E.revert(S))}static consumablesFromElement(P){const S={name:!0,attribute:[],class:[],style:[]},E=P.getAttributeKeys();for(let V of E)'style'!=V&&'class'!=V&&S.attribute.push(V);const O=P.getClassNames();for(let V of O)S.class.push(V);const R=P.getStyleNames();for(let V of R)S.style.push(V);return S}static createFrom(P,S){if(S||(S=new C),P.is('text'))return S.add(P),S;P.is('element')&&S.add(P,C.consumablesFromElement(P)),P.is('documentFragment')&&S.add(P);for(let E of P.getChildren())S=C.createFrom(E,S);return S}}u.a=C;class T{constructor(){this._canConsumeName=null,this._consumables={attribute:new Map,style:new Map,class:new Map}}add(P){for(let S in P.name&&(this._canConsumeName=!0),this._consumables)S in P&&this._add(S,P[S])}test(P){if(P.name&&!this._canConsumeName)return this._canConsumeName;for(let S in this._consumables)if(S in P){const E=this._test(S,P[S]);if(!0!==E)return E}return!0}consume(P){for(let S in P.name&&(this._canConsumeName=!1),this._consumables)S in P&&this._consume(S,P[S])}revert(P){for(let S in P.name&&(this._canConsumeName=!0),this._consumables)S in P&&this._revert(S,P[S])}_add(P,S){const E=f.i(h.a)(S)?S:[S],O=this._consumables[P];for(let R of E){if('attribute'===P&&('class'===R||'style'===R))throw new w.a('viewconsumable-invalid-attribute: Classes and styles should be handled separately.');O.set(R,!0)}}_test(P,S){const E=f.i(h.a)(S)?S:[S],O=this._consumables[P];for(let R of E)if('attribute'===P&&('class'===R||'style'===R)){const V=this._test(R,[...this._consumables[R].keys()]);if(!0!==V)return V}else{const V=O.get(R);if(V===void 0)return null;if(!V)return!1}return!0}_consume(P,S){const E=f.i(h.a)(S)?S:[S],O=this._consumables[P];for(let R of E)'attribute'===P&&('class'===R||'style'===R)?this._consume(R,[...this._consumables[R].keys()]):O.set(R,!1)}_revert(P,S){const E=f.i(h.a)(S)?S:[S],O=this._consumables[P];for(let R of E)if('attribute'===P&&('class'===R||'style'===R))this._revert(R,[...this._consumables[R].keys()]);else{const V=O.get(R);!1===V&&O.set(R,!0)}}}},function(r,u,f){'use strict';function h(N){const M=new Set,D=new Map,z=new O.a({startPosition:E.a.createAt(N,0),ignoreElementEnd:!0});for(const $ of z)'$marker'==$.item.name&&M.add($.item);for(const $ of M){const q=$.getAttribute('data-name'),U=E.a.createBefore($);D.has(q)?D.get(q).end=E.a.createFromPosition(U):D.set(q,new S.a(E.a.createFromPosition(U))),f.i(F.c)(S.a.createOn($))}return D}var w=f(345),C=f(7),T=f(4),P=f(45),S=f(2),E=f(1),O=f(35),R=f(58),V=f(51),F=f(13);class I{constructor(N={}){this.conversionApi=f.i(P.a)({},N),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this)}convert(N,M={}){this.fire('viewCleanup',N);const D=w.a.createFrom(N),z=this._convertItem(N,D,M);if(!(z instanceof R.a||z instanceof V.a))return z;let $=z;return $.is('documentFragment')||($=new V.a([$])),$.markers=h($),$}_convertItem(N,M,D={}){const z=f.i(P.a)({},D,{input:N,output:null});return N.is('element')?this.fire('element:'+N.name,z,M,this.conversionApi):N.is('text')?this.fire('text',z,M,this.conversionApi):this.fire('documentFragment',z,M,this.conversionApi),z.output}_convertChildren(N,M,D={}){const z=Array.from(N.getChildren()),$=z.map((q)=>this._convertItem(q,M,D));return $.reduce((q,U)=>U?q.concat(U):q,[])}}u.a=I,f.i(T.a)(I,C.a)},function(r,u){'use strict';u.a=class{getHtml(w){const C=document.implementation.createHTMLDocument(''),T=C.createElement('div');return T.appendChild(w),T.innerHTML}}},function(r,u,f){'use strict';var h=f(165),w=f(103),C=f(104),T=f(105),P=f(106),S=f(166),E=f(107),O=f(109),R=f(167),V=f(110)},function(r,u,f){'use strict';function h(Z,G){const J=Z.clone(),X=J.operations[0];return X.oldRange=X.oldRange.getTransformedByDelta(G)[0],X.newRange=X.newRange.getTransformedByDelta(G)[0],[J]}function w(Z,G){function J(){const ne=new P.a(Z.position.getShiftedBy(te),Z.position.getShiftedBy(ae)),oe=new O.a(ne,G.key,ee,G.value,0);X.addOperation(oe)}const X=new I.a,Q=Z.nodes;let ee=Q.getNode(0).getAttribute(G.key),te=0,ae=Q.getNode(0).offsetSize;for(let ne=1;ne{const X=f.i(T.c)(Z,G,J);return Z.range.containsPosition(G.position)&&X.push(w(G,Z)),X}),f.i(T.b)(I.a,$.a,(Z,G,J)=>{const X=new S.a(G.position.root,G.position.path.slice(0,-1)),Q=f.i(T.c)(Z,G,J);for(let ee of Z.operations)if(ee.range.containsPosition(X)||ee.range.start.isEqual(X)){const te=new I.a,ae=X.getShiftedBy(1),ne=S.a.createFromPosition(ae);ne.path.push(0);const oe=G._cloneOperation.nodes.getNode(0).getAttribute(ee.key);te.addOperation(new O.a(new P.a(ae,ne),ee.key,oe===void 0?null:oe,ee.newValue,0)),Q.push(te);break}return Q}),f.i(T.b)(N.a,D.a,(Z,G,J)=>{return Z.position.isEqual(G.position)?[G.getReversed(),Z.clone()]:f.i(T.c)(Z,G,J)}),f.i(T.b)(M.a,$.a,h),f.i(T.b)(M.a,D.a,h),f.i(T.b)(M.a,U.a,h),f.i(T.b)(M.a,K.a,h),f.i(T.b)(M.a,z.a,h),f.i(T.b)(M.a,H.a,h),f.i(T.b)(z.a,D.a,(Z,G,J)=>{const X=Z.sourcePosition.root==G.position.root&&'same'===f.i(W.a)(Z.sourcePosition.getParentPath(),G.position.getParentPath()),Q=Z.sourcePosition.offset<=G.position.offset&&Z.sourcePosition.offset+Z.howMany>G.position.offset;return X&&Q?[G.getReversed(),Z.clone()]:f.i(T.c)(Z,G,J)}),f.i(T.b)(D.a,N.a,(Z,G,J)=>{return Z.position.isEqual(G.position)?[C()]:f.i(T.c)(Z,G,J)}),f.i(T.b)(D.a,z.a,(Z,G,J)=>{const X=Z.position.root==G.sourcePosition.root&&'same'===f.i(W.a)(Z.position.getParentPath(),G.sourcePosition.getParentPath()),Q=G.sourcePosition.offset<=Z.position.offset&&G.sourcePosition.offset+G.howMany>Z.position.offset;return X&&Q?[C()]:f.i(T.c)(Z,G,J)}),f.i(T.b)($.a,$.a,(Z,G,J)=>{const X=Z.position.getParentPath(),Q=G.position.getParentPath();if('same'==f.i(W.a)(X,Q)){if(Z.position.offset==G.position.offset)return[C()];if(Z.position.offsetG._cloneOperation.sourcePosition.offset&&ee._cloneOperation.sourcePosition.offset--,[ee]}const ee=Z.clone();return ee._cloneOperation.position.offset++,ee._moveOperation.sourcePosition.path[ee._moveOperation.sourcePosition.path.length-2]++,ee._moveOperation.targetPosition.path[ee._moveOperation.targetPosition.path.length-2]++,ee._moveOperation.sourcePosition.offset=Z.position.offset-G.position.offset,Z._cloneOperation instanceof V.a&&G._cloneOperation instanceof V.a&&Z._cloneOperation.sourcePosition.offset>G._cloneOperation.sourcePosition.offset&&ee._cloneOperation.sourcePosition.offset--,[ee]}return f.i(T.c)(Z,G,J)}),f.i(T.b)($.a,K.a,(Z,G,J)=>{return'same'===f.i(W.a)(G.position.path,Z.position.getParentPath())?[C()]:f.i(T.c)(Z,G,J)}),f.i(T.b)($.a,U.a,(Z,G,J)=>{const X='same'===f.i(W.a)(Z.position.getParentPath(),G.range.start.getParentPath()),Q=G.range.start.offset=Z.position.offset;if(X&&Q)return[C()];if('same'===f.i(W.a)(Z.position.getParentPath(),G.range.end.getShiftedBy(-1).path)){const ee=Z.clone(),te=S.a.createFromPosition(G.range.start);te.path.push(G.howMany-1);const ae=te.getShiftedBy(1);ee._cloneOperation.position=ae;const ne=S.a.createFromPosition(te);ne.path.push(Z.position.offset),ee._moveOperation.sourcePosition=ne;const oe=S.a.createFromPosition(ae);return oe.path.push(0),ee._moveOperation.targetPosition=oe,[ee]}return f.i(T.c)(Z,G,J)}),f.i(T.b)($.a,I.a,(Z,G)=>{Z=Z.clone();const J=new S.a(Z.position.root,Z.position.path.slice(0,-1));if(Z._cloneOperation instanceof R.a)for(let X of G.operations)if(X.range.containsPosition(J)||X.range.start.isEqual(J)){null===X.newValue?Z._cloneOperation.nodes.getNode(0).removeAttribute(X.key):Z._cloneOperation.nodes.getNode(0).setAttribute(X.key,X.newValue);break}return[Z]}),f.i(T.b)(K.a,$.a,(Z,G,J)=>{if('same'===f.i(W.a)(Z.position.path,G.position.getParentPath())){const X=[G.getReversed(),Z.clone()];return X[1].operations[1].targetPosition.path[0]++,X}return f.i(T.c)(Z,G,J)}),f.i(T.b)(q.a,I.a,(Z,G)=>{const J=[Z.clone()];return G.range.containsPosition(Z.position)&&J.push(w(Z,G)),J}),f.i(T.b)(U.a,$.a,(Z,G,J)=>{const X='same'===f.i(W.a)(Z.range.start.getParentPath(),G.position.getParentPath()),Q=Z.range.start.offset=G.position.offset;if(X&&Q)return[G.getReversed(),Z.clone()];if('same'===f.i(W.a)(G.position.getParentPath(),Z.range.end.getShiftedBy(-1).path)){const ee=Z.clone();return ee._insertOperation.position.offset++,ee._moveOperation.howMany++,ee._moveOperation.targetPosition.path[ee._moveOperation.targetPosition.path.length-2]++,[ee]}return f.i(T.c)(Z,G,J)}),f.i(T.b)(H.a,$.a,(Z,G,J)=>{const X=new S.a(G.position.root,G.position.path.slice(0,-1)),Q=f.i(T.c)(Z,G,J);if(Z.operations[0].position.isEqual(X)){const ee=Z.clone();ee.operations[0].position=Z.operations[0].position.getShiftedBy(1),Q.push(ee)}return Q}),f.i(T.b)($.a,H.a,(Z,G)=>{Z=Z.clone();const J=new S.a(Z.position.root,Z.position.path.slice(0,-1));return Z._cloneOperation instanceof R.a&&G.operations[0].position.isEqual(J)&&(Z._cloneOperation.nodes.getNode(0).name=G.operations[0].newName),[Z]}),f.i(T.b)(Y.a,$.a,(Z,G,J)=>{const X=f.i(T.c)(Z,G,J),Q=G._cloneOperation.position;for(let ee of X)for(let te of ee.operations){const ae=te.sourcePosition.getShiftedBy(te.howMany);ae.isEqual(Q)&&(te.howMany+=1)}return X}),f.i(T.b)($.a,Y.a,(Z,G,J)=>{G=G.clone();const X=Z._cloneOperation.position;for(let Q of G.operations){const ee=Q.sourcePosition.getShiftedBy(Q.howMany);ee.isEqual(X)&&(Q.howMany+=1)}return f.i(T.c)(Z,G,J)})},function(r,u,f){'use strict';function h(O,R,V,F){const I=O.document,N=new E,M=new P.a(R,V,F,I.markers,I.version);O.addDelta(N),N.addOperation(M),I.applyOperation(M)}var w=f(20),C=f(18),T=f(17),P=f(112),S=f(0);class E extends w.a{get type(){return'marker'}get _reverseDeltaClass(){return E}static get className(){return'engine.model.delta.MarkerDelta'}}u.a=E,f.i(T.b)('setMarker',function(O,R){const V='string'==typeof O?O:O.name,F=this.document.markers.get(V);if(!R&&!F)throw new S.a('batch-setMarker-no-range: Range parameter is required when adding a new marker.');const I=F?F.getRange():null;return R?h(this,V,I,R):h(this,V,null,I),this}),f.i(T.b)('removeMarker',function(O){const R='string'==typeof O?O:O.name;if(!this.document.markers.has(R))throw new S.a('batch-removeMarker-no-marker: Trying to remove marker that does not exist.');const V=this.document.markers.get(R).getRange();return h(this,R,V,null),this}),C.a.register(E)},function(r,u,f){'use strict';function h(H){const Y=H.textNode;if(Y){const W=Y.data,Z=H.offset-Y.startOffset;return!f.i(q.a)(W,Z)&&!f.i(q.b)(W,Z)}return!0}function*w(H,Y){for(let W=!1;!W;){if(W=!0,H){const Z=H.next();Z.done||(W=!1,yield{walker:H,value:Z.value})}if(Y){const Z=Y.next();Z.done||(W=!1,yield{walker:Y,value:Z.value})}}}var C=f(348),T=f(349),P=f(2),S=f(1),E=f(357),O=f(17),R=f(352),V=f(353),F=f(358),I=f(35),N=f(354),M=f(96),D=f(7),z=f(0),$=f(4),q=f(275);const U='$graveyard';class K{constructor(){this.version=0,this.schema=new F.a,this.history=new R.a(this),this.markers=new N.a,this.selection=new V.a(this),this._pendingChanges=[],this.roots=new Map,this.selection.on('change:range',()=>{for(let H of this.selection.getRanges())if(!this._validateSelectionRange(H))throw new z.a('document-selection-wrong-position: Range from document selection starts or ends at incorrect position.',{range:H})}),this.createRoot('$root',U)}get graveyard(){return this.getRoot(U)}applyOperation(H){if(H.baseVersion!==this.version)throw new z.a('model-document-applyOperation-wrong-version: Only operations with matching versions can be applied.',{operation:H});let Y=H._execute();this.version++,this.history.addDelta(H.delta),Y&&this.fire('change',H.type,Y,H.delta.batch,H.delta.type)}batch(H){return new O.a(this,H)}createRoot(H='$root',Y='main'){if(this.roots.has(Y))throw new z.a('model-document-createRoot-name-exists: Root with specified name already exists.',{name:Y});const W=new E.a(this,H,Y);return this.roots.set(Y,W),W}destroy(){this.selection.destroy(),this.stopListening()}enqueueChanges(H){if(this._pendingChanges.push(H),1==this._pendingChanges.length){for(;this._pendingChanges.length;)this._pendingChanges[0](),this._pendingChanges.shift();this.fire('changesDone')}}getRoot(H='main'){if(!this.roots.has(H))throw new z.a('model-document-getRoot-root-not-exist: Root with specified name does not exist.',{name:H});return this.roots.get(H)}hasRoot(H){return this.roots.has(H)}getRootNames(){return Array.from(this.roots.keys()).filter((H)=>H!=U)}getNearestSelectionRange(H,Y='both'){if(this.schema.check({name:'$text',inside:H}))return new P.a(H);let W,Z;('both'==Y||'backward'==Y)&&(W=new I.a({startPosition:H,direction:'backward'})),('both'==Y||'forward'==Y)&&(Z=new I.a({startPosition:H}));for(let G of w(W,Z)){const J=G.walker==W?'elementEnd':'elementStart',X=G.value;if(X.type==J&&this.schema.objects.has(X.item.name))return P.a.createOn(X.item);if(this.schema.check({name:'$text',inside:X.nextPosition}))return new P.a(X.nextPosition)}return null}toJSON(){const H=f.i(M.a)(this);return H.selection='[engine.model.LiveSelection]',H}_getDefaultRoot(){for(let H of this.roots.values())if(H!==this.graveyard)return H;return this.graveyard}_getDefaultRange(){const H=this._getDefaultRoot(),Y=new S.a(H,[0]),W=this.getNearestSelectionRange(Y);return W||new P.a(Y)}_validateSelectionRange(H){return h(H.start)&&h(H.end)}}u.a=K,f.i($.a)(K,D.a)},function(r,u,f){'use strict';var h=f(0);u.a=class{constructor(){this._deltas=[],this._historyPoints=new Map}addDelta(C){if(0=T)break;yield S}}}getDelta(C){let T=this._historyPoints.get(C);if(T===void 0)return null;const P=[];for(T;TC&&this._historyPoints.set(E,this._historyPoints.get(E)+S)}}_getIndex(C){let T=this._historyPoints.get(C);if(T===void 0){const P=this._deltas[this._deltas.length-1],S=P.baseVersion+P.operations.length;if(0>C||C>=S)return-1;throw new h.a('model-history-wrong-version: Given base version points to the middle of a delta.')}return T}}},function(r,u,f){'use strict';function h(M){return M instanceof S.a||M instanceof P.a?M.getAttributes():null}var w=f(1),C=f(2),T=f(111),P=f(24),S=f(60),E=f(152),O=f(0),R=f(48),V=f(59);const F='selection:',I=new Set(['addAttribute','removeAttribute','changeAttribute','addRootAttribute','removeRootAttribute','changeRootAttribute']);class N extends V.a{constructor(M){super(),this._document=M,this._attributePriority=new Map,this.listenTo(this._document,'change',(D,z)=>{I.has(z)&&this._updateAttributes(!1)})}get isCollapsed(){const M=this._ranges.length;return!(0!==M)||super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().start}get rangeCount(){return this._ranges.length?this._ranges.length:1}destroy(){for(let M=0;M{D.root==this._document.graveyard&&this._fixGraveyardSelection(D,$),this.fire('change:range',{directChange:!1})}),D}_updateAttributes(M){const D=f.i(E.a)(this._getSurroundingAttributes()),z=f.i(E.a)(this.getAttributes());if(M)this._attributePriority=new Map,this._attrs=new Map;else for(let[q,U]of this._attributePriority)'low'==U&&(this._attrs.delete(q),this._attributePriority.delete(q));this._setAttributesTo(D,!1);const $=[];for(let[q,U]of this.getAttributes())z.has(q)&&z.get(q)===U||$.push(q);for(let[q]of z)this.hasAttribute(q)||$.push(q);0<$.length&&this.fire('change:attribute',{attributeKeys:$,directChange:!1})}static _getStoreAttributeKey(M){return F+M}_setAttribute(M,D,z=!0){const $=z?'normal':'low';if('low'==$&&'normal'==this._attributePriority.get(M))return!1;const q=super.getAttribute(M);return q!==D&&(this._attrs.set(M,D),this._attributePriority.set(M,$),!0)}_removeAttribute(M,D=!0){const z=D?'normal':'low';return'low'==z&&'normal'==this._attributePriority.get(M)?!1:!!super.hasAttribute(M)&&(this._attrs.delete(M),this._attributePriority.set(M,z),!0)}_setAttributesTo(M,D=!0){const z=new Set;for(let[$,q]of this.getAttributes())M.get($)!==q&&this._removeAttribute($,D)&&z.add($);for(let[$,q]of M){const U=this._setAttribute($,q,D);U&&z.add($)}return z}*_getStoredAttributes(){const M=this.getFirstPosition().parent;if(this.isCollapsed&&0===M.childCount)for(let D of M.getAttributeKeys())if(0===D.indexOf(F)){const z=D.substr(F.length);yield[z,M.getAttribute(D)]}}_removeStoredAttribute(M){const D=N._getStoreAttributeKey(M);this._document.batch().removeAttribute(this.anchor.parent,D)}_storeAttribute(M,D){const z=N._getStoreAttributeKey(M);this._document.batch().setAttribute(this.anchor.parent,z,D)}_setStoredAttributesTo(M){const D=this.anchor.parent,z=this._document.batch();for(let[$]of this._getStoredAttributes()){const q=N._getStoreAttributeKey($);z.removeAttribute(D,q)}for(let[$,q]of M){const U=N._getStoreAttributeKey($);z.setAttribute(D,U,q)}}_getSurroundingAttributes(){const M=this.getFirstPosition();let D=null;if(!this.isCollapsed){const z=this.getFirstRange();for(let $ of z)'text'==$.type&&null==D&&(D=$.item.getAttributes())}else{const z=M.textNode?M.textNode:M.nodeBefore,$=M.textNode?M.textNode:M.nodeAfter;if(D=h(z),D||(D=h($)),!D)for(let q=z;q&&!D;)q=q.previousSibling,D=h(q);if(!D)for(let q=$;q&&!D;)q=q.nextSibling,D=h(q);D||(D=this._getStoredAttributes())}return D}_fixGraveyardSelection(M,D){const z=M.start.path,$=D.start.path.length-(z.length-2),q=D.start.path.slice(0,$);q[q.length-1]-=z[1];const U=new w.a(D.root,q);let K=this._document.getNearestSelectionRange(U);K||(K=new C.a(new w.a(U.root,[0])));const H=this._prepareRange(K),Y=this._ranges.indexOf(M);M.detach(),this._ranges.splice(Y,1,H)}}u.a=N},function(r,u,f){'use strict';var h=f(111),w=f(1),C=f(2),T=f(7),P=f(0),S=f(4);class E{constructor(){this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(R){return this._markers.has(R)}get(R){return this._markers.get(R)||null}set(R,V){const F=R instanceof O?R.name:R,I=this._markers.get(F);if(I){const D=I.getRange();if(D.isEqual(V))return I;this.remove(F)}const N=h.a.createFromRange(V),M=new O(F,N);return this._markers.set(F,M),this.fire('add',M),M}remove(R){const V=R instanceof O?R.name:R,F=this._markers.get(V);return!!F&&(this._markers.delete(V),this.fire('remove',F),this._destroyMarker(F),!0)}*getMarkersAtPosition(R){for(let V of this)V.getRange().containsPosition(R)&&(yield V)}destroy(){for(let R of this._markers.values())this._destroyMarker(R);this._markers=null,this.stopListening()}*getMarkersGroup(R){for(let V of this._markers.values())V.name.startsWith(R+':')&&(yield V)}_destroyMarker(R){R.stopListening(),R._liveRange.detach(),R._liveRange=null}}u.a=E,f.i(S.a)(E,T.a);class O{constructor(R,V){this.name=R,this._liveRange=V,this._liveRange.delegate('change').to(this)}getStart(){if(!this._liveRange)throw new P.a('marker-destroyed: Operating on destroyed marker instance.');return w.a.createFromPosition(this._liveRange.start)}getEnd(){if(!this._liveRange)throw new P.a('marker-destroyed: Operating on destroyed marker instance.');return w.a.createFromPosition(this._liveRange.end)}getRange(){if(!this._liveRange)throw new P.a('marker-destroyed: Operating on destroyed marker instance.');return C.a.createFromRange(this._liveRange)}}f.i(S.a)(O,T.a)},function(r,u,f){'use strict';var h=f(74),w=f(39),C=f(112),T=f(28),P=f(75),S=f(34),E=f(113),O=f(40),R=f(114),V=f(115);const F={};F[h.a.className]=h.a,F[w.a.className]=w.a,F[C.a.className]=C.a,F[T.a.className]=T.a,F[P.a.className]=P.a,F[S.a.className]=S.a,F[E.a.className]=E.a,F[O.a.className]=O.a,F[R.a.className]=R.a,F[V.a.className]=V.a;u.a=class{static fromJSON(N,M){return F[N.__className].fromJSON(N,M)}}},function(r,u,f){'use strict';function w($){return[$.clone()]}function C($,q){for(let U=0;U{return new E.a(K,$.key,$.oldValue,$.newValue,$.baseVersion)})},AttributeOperation($,q,U){if($.key===q.key){let K=$.range.getDifference(q.range).map((Y)=>{return new E.a(Y,$.key,$.oldValue,$.newValue,$.baseVersion)});const H=$.range.getIntersection(q.range);return H&&(U?K.push(new E.a(H,q.key,q.newValue,$.newValue,$.baseVersion)):0===K.length&&K.push(new N.a(0))),K}return[$.clone()]},RootAttributeOperation:w,RenameOperation:w,MarkerOperation:w,MoveOperation($,q){const U=M.a.createFromPositionAndShift(q.sourcePosition,q.howMany);let K=[];q instanceof I.a&&q._needsHolderElement&&$.range.root==q.targetPosition.root&&$.range.start.path[0]>=q._holderElementOffset&&($=$.clone(),$.range.start.path[0]++,$.range.end.path[0]++);const H=P($.range.getDifference(U)),Y=$.range.getIntersection(U);return null!==H&&(H.start=H.start._getTransformedByDeletion(q.sourcePosition,q.howMany),H.end=H.end._getTransformedByDeletion(q.sourcePosition,q.howMany),K=H._getTransformedByInsertion(q.getMovedRangeStart(),q.howMany,!0,!1).reverse()),null!==Y&&(Y.start=Y.start._getCombined(q.sourcePosition,q.getMovedRangeStart()),Y.end=Y.end._getCombined(q.sourcePosition,q.getMovedRangeStart()),K.push(Y)),K.map((W)=>{return new E.a(W,$.key,$.oldValue,$.newValue,$.baseVersion)})}},RootAttributeOperation:{InsertOperation:w,AttributeOperation:w,RootAttributeOperation($,q,U){return $.root!==q.root||$.key!==q.key||($.newValue===q.newValue||U)&&$.newValue!==q.newValue?[$.clone()]:[new N.a($.baseVersion)]},RenameOperation:w,MarkerOperation:w,MoveOperation:w},RenameOperation:{InsertOperation($,q){const U=$.clone();return U.position=U.position._getTransformedByInsertion(q.position,q.nodes.maxOffset,!0),[U]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation($,q,U){const K=$.clone();if($.position.isEqual(q.position))if(U)K.oldName=q.newName;else return[new N.a($.baseVersion)];return[K]},MarkerOperation:w,MoveOperation($,q){const U=$.clone(),K=U.position.isEqual(q.sourcePosition);return U.position=U.position._getTransformedByMove(q.sourcePosition,q.targetPosition,q.howMany,!0,K),[U]}},MarkerOperation:{InsertOperation($,q){const U=$.clone();return U.oldRange&&(U.oldRange=U.oldRange._getTransformedByInsertion(q.position,q.nodes.maxOffset,!1,!1)[0]),U.newRange&&(U.newRange=U.newRange._getTransformedByInsertion(q.position,q.nodes.maxOffset,!1,!1)[0]),[U]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation:w,MarkerOperation($,q,U){const K=$.clone();if($.name==q.name)if(U)K.oldRange=q.newRange;else return[new N.a($.baseVersion)];return[K]},MoveOperation($,q){const U=$.clone();if(U.oldRange){const K=U.oldRange._getTransformedByMove(q.sourcePosition,q.targetPosition,q.howMany);U.oldRange=M.a.createFromRanges(K)}if(U.newRange){const K=U.newRange._getTransformedByMove(q.sourcePosition,q.targetPosition,q.howMany);U.newRange=M.a.createFromRanges(K)}return[U]}},MoveOperation:{InsertOperation($,q,U){let K=M.a.createFromPositionAndShift($.sourcePosition,$.howMany);K=K._getTransformedByInsertion(q.position,q.nodes.maxOffset,!1,$.isSticky)[0];let H=new $.constructor(K.start,K.end.offset-K.start.offset,$ instanceof I.a?$.baseVersion:$.targetPosition._getTransformedByInsertion(q.position,q.nodes.maxOffset,!U),$ instanceof I.a?void 0:$.baseVersion);return H.isSticky=$.isSticky,$ instanceof I.a&&(H._needsHolderElement=$._needsHolderElement,H._holderElementOffset=$._holderElementOffset),[H]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation:w,MarkerOperation:w,MoveOperation($,q,U){if(T($,q)&&T(q,$))return[q.getReversed()];if($ instanceof I.a&&q instanceof I.a){const ee=$.targetPosition.path[0],te=q.targetPosition.path[0];(ee>te||ee==te&&U)&&($=$.clone(),$.targetPosition.path[0]++)}$ instanceof I.a&&!(q instanceof I.a)?U=!0:!($ instanceof I.a)&&q instanceof I.a&&(U=!1);const K=M.a.createFromPositionAndShift($.sourcePosition,$.howMany),H=M.a.createFromPositionAndShift(q.sourcePosition,q.howMany);let Y=[],W=P(K.getDifference(H));W&&(W.start=W.start._getTransformedByMove(q.sourcePosition,q.targetPosition,q.howMany,!$.isSticky,!1),W.end=W.end._getTransformedByMove(q.sourcePosition,q.targetPosition,q.howMany,$.isSticky,!1),Y.push(W));const Z=K.getIntersection(H);let G=f.i(D.a)($.sourcePosition.getParentPath(),q.sourcePosition.getParentPath()),J=K.containsPosition(q.targetPosition)||K.start.isEqual(q.targetPosition)&&$.isSticky||K.end.isEqual(q.targetPosition)&&$.isSticky,X=H.containsRange(K)&&(H.containsPosition($.targetPosition)||H.start.isEqual($.targetPosition)||H.end.isEqual($.targetPosition));if(null!==Z&&('extension'===G||'same'===G&&U||X)&&!J&&(Z.start=Z.start._getCombined(q.sourcePosition,q.getMovedRangeStart()),Z.end=Z.end._getCombined(q.sourcePosition,q.getMovedRangeStart()),W&&K.start.isBefore(H.start)?Y.push(Z):Y.unshift(Z)),0===Y.length)return $ instanceof I.a?($=$.clone(),$.howMany=0,$.sourcePosition=q.targetPosition,[$]):[new N.a($.baseVersion)];let Q=$.targetPosition._getTransformedByMove(q.sourcePosition,q.targetPosition,q.howMany,!U,q.isSticky||X);return Y.reverse().map((ee,te)=>{let ae=new $.constructor(ee.start,ee.end.offset-ee.start.offset,$ instanceof I.a?$.baseVersion:Q,$ instanceof I.a?void 0:$.baseVersion);return ae.isSticky=$.isSticky,$ instanceof I.a&&(ae._needsHolderElement=$._needsHolderElement&&0===te,ae._holderElementOffset=$._holderElementOffset),ae})}}}},function(r,u,f){'use strict';var h=f(5);class w extends h.a{constructor(C,T,P='main'){super(T),this._doc=C,this.rootName=P}get document(){return this._doc}is(C,T){return T?'rootElement'==C&&T==this.name||super.is(C,T):'rootElement'==C||super.is(C)}toJSON(){return this.rootName}}u.a=w},function(r,u,f){'use strict';function h(V,F,I){for(let N=I.length-1,M=F.length-1;0<=N&&0<=M;){const D=F[M];if(!V.hasItem(D))return!1;const z=V._extensionChains.get(D);if(z.includes(I[N]))N--,M--;else return!1}return!0}var w=f(1),C=f(5),T=f(96),P=f(11),S=f(149),E=f(0);class O{constructor(){this.objects=new Set,this.limits=new Set,this._items=new Map,this._extensionChains=new Map,this.registerItem('$root'),this.registerItem('$block'),this.registerItem('$inline'),this.registerItem('$text','$inline'),this.allow({name:'$block',inside:'$root'}),this.allow({name:'$inline',inside:'$block'}),this.registerItem('$clipboardHolder','$root'),this.allow({name:'$inline',inside:'$clipboardHolder'})}allow(V){this._getItem(V.name).allow(O._normalizeQueryPath(V.inside),V.attributes)}disallow(V){this._getItem(V.name).disallow(O._normalizeQueryPath(V.inside),V.attributes)}requireAttributes(V,F){this._getItem(V).requireAttributes(F)}check(V){if(!this.hasItem(V.name))return!1;f.i(P.a)(V.attributes)?0===V.attributes.length&&V.attributes.push(void 0):V.attributes=[V.attributes];const F=O._normalizeQueryPath(V.inside),I=this._extensionChains.get(V.name).map((N)=>{return this._getItem(N)});if(!this._getItem(V.name)._checkRequiredAttributes(V.attributes))return!1;for(let N of V.attributes)for(let M of I)if(M._hasMatchingPath('disallow',F,N))return!1;for(let N of V.attributes){let M=!1;for(let D of I)if(D._hasMatchingPath('allow',F,N)){M=!0;break}if(!M)return!1}return!0}hasItem(V){return this._items.has(V)}registerItem(V,F){if(this.hasItem(V))throw new E.a('model-schema-item-exists: Item with specified name already exists in schema.');if(!!F&&!this.hasItem(F))throw new E.a('model-schema-no-item: Item with specified name does not exist in schema.');this._items.set(V,new R(this));const I=this.hasItem(F)?this._extensionChains.get(F).concat(V):[V];this._extensionChains.set(V,I)}itemExtends(V,F){if(!this.hasItem(V)||!this.hasItem(F))throw new E.a('model-schema-no-item: Item with specified name does not exist in schema.');const I=this._extensionChains.get(V);return I.some((N)=>N==F)}_getItem(V){if(!this.hasItem(V))throw new E.a('model-schema-no-item: Item with specified name does not exist in schema.');return this._items.get(V)}static _normalizeQueryPath(V){let F=[];if(f.i(P.a)(V))for(let I of V)I instanceof C.a?F.push(I.name):f.i(S.a)(I)&&F.push(I);else if(V instanceof w.a){for(let I=V.parent;null!==I;)F.push(I.name),I=I.parent;F.reverse()}else f.i(S.a)(V)&&(F=V.split(' '));return F}}u.a=O;class R{constructor(V){this._schema=V,this._allowed=[],this._disallowed=[],this._requiredAttributes=[]}allow(V,F){this._addPath('_allowed',V,F)}disallow(V,F){this._addPath('_disallowed',V,F)}requireAttributes(V){this._requiredAttributes.push(V)}_addPath(V,F,I){F=F.slice(),f.i(P.a)(I)||(I=[I]);for(let N of I)this[V].push({path:F,attribute:N})}_getPaths(V,F){const I='allow'===V?this._allowed:this._disallowed,N=[];for(let M of I)M.attribute===F&&N.push(M.path);return N}_checkRequiredAttributes(V){let F=!0;for(let I of this._requiredAttributes){F=!0;for(let N of I)if(-1==V.indexOf(N)){F=!1;break}if(F)break}return F}_hasMatchingPath(V,F,I){const N=this._getPaths(V,I);for(const M of N)if(h(this._schema,F,M))return!0;return!1}toJSON(){const V=f.i(T.a)(this);return V._schema='[model.Schema]',V}}},function(r,u,f){'use strict';var h=f(63),w=f(367),C=f(169),T=f(173),P=f(61),S=f(48),E=f(172),O=f(365),R=f(362),V=f(363),F=f(361),I=f(4),N=f(31);class M{constructor(){this.domRoots=new Map,this.selection=new h.a,this.domConverter=new C.a,this.roots=new Map,this.set('isFocused',!1),this.renderer=new w.a(this.domConverter,this.selection),this.renderer.bind('isFocused').to(this,'isFocused'),this._observers=new Map,this.addObserver(E.a),this.addObserver(O.a),this.addObserver(R.a),this.addObserver(V.a),this.addObserver(F.a),f.i(P.h)(this),this.on('render',()=>{this.disableObservers(),this.renderer.render(),this.enableObservers()})}addObserver(D){let z=this._observers.get(D);if(z)return z;z=new D(this),this._observers.set(D,z);for(let[$,q]of this.domRoots)z.observe(q,$);return z.enable(),z}getObserver(D){return this._observers.get(D)}createRoot(D,z='main'){const $='string'==typeof D?D:D.tagName,q=new T.a($.toLowerCase(),z);return q.document=this,this.roots.set(z,q),q.on('change:children',(U,K)=>this.renderer.markToSync('children',K)),q.on('change:attributes',(U,K)=>this.renderer.markToSync('attributes',K)),q.on('change:text',(U,K)=>this.renderer.markToSync('text',K)),this.domConverter.isElement(D)&&this.attachDomRoot(D,z),q}attachDomRoot(D,z='main'){const $=this.getRoot(z);this.domRoots.set(z,D),this.domConverter.bindElements(D,$),this.renderer.markToSync('children',$),this.renderer.domDocuments.add(D.ownerDocument);for(let q of this._observers.values())q.observe(D,z)}getRoot(D='main'){return this.roots.get(D)}getDomRoot(D='main'){return this.domRoots.get(D)}render(){this.fire('render')}focus(){if(!this.isFocused){const D=this.selection.editableElement;D?(this.domConverter.focus(D),this.render()):S.a.warn('view-focus-no-selection: There is no selection in any editable to focus.')}}disableObservers(){for(let D of this._observers.values())D.disable()}enableObservers(){for(let D of this._observers.values())D.enable()}destroy(){for(let D of this._observers.values())D.destroy()}}u.a=M,f.i(I.a)(M,N.a)},function(r,u,f){'use strict';var h=f(62);class w extends h.a{constructor(C){super(C),this.domEventType='click'}onDomEvent(C){this.fire(C.type,C)}}u.a=w},function(r,u,f){'use strict';function h(E){return E==T.b.arrowright||E==T.b.arrowleft||E==T.b.arrowup||E==T.b.arrowdown}var w=f(52),C=f(63),T=f(22),P=f(143);class S extends w.a{constructor(E){super(E),this._fireSelectionChangeDoneDebounced=f.i(P.a)((O)=>this.document.fire('selectionChangeDone',O),200)}observe(){const E=this.document;E.on('keydown',(O,R)=>{const V=E.selection;V.isFake&&h(R.keyCode)&&this.isEnabled&&(R.preventDefault(),this._handleSelectionMove(R.keyCode))},{priority:'lowest'})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(E){const O=this.document.selection,R=C.a.createFromSelection(O);R.setFake(!1),(E==T.b.arrowleft||E==T.b.arrowup)&&R.collapseToStart(),(E==T.b.arrowright||E==T.b.arrowdown)&&R.collapseToEnd();const V={oldSelection:O,newSelection:R,domSelection:null};this.document.fire('selectionChange',V),this._fireSelectionChangeDoneDebounced(V)}}u.a=S},function(r,u,f){'use strict';var h=f(62);class w extends h.a{constructor(C){super(C),this.domEventType=['focus','blur'],this.useCapture=!0,C.on('focus',()=>{C.isFocused=!0,this._renderTimeoutId=setTimeout(()=>C.render(),0)}),C.on('blur',(T,P)=>{const S=C.selection.editableElement;(null===S||S===P.target)&&(C.isFocused=!1,C.render())})}onDomEvent(C){this.fire(C.type,C)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}u.a=w},function(r,u,f){'use strict';var h=f(62),w=f(22);class C extends h.a{constructor(T){super(T),this.domEventType='keydown'}onDomEvent(T){this.fire('keydown',T,{keyCode:T.keyCode,altKey:T.altKey,ctrlKey:T.ctrlKey||T.metaKey,shiftKey:T.shiftKey,get keystroke(){return f.i(w.c)(this)}})}}u.a=C},function(r,u,f){'use strict';var h=f(62);class w extends h.a{constructor(C){super(C),this.domEventType='mousedown'}onDomEvent(C){this.fire(C.type,C)}}u.a=w},function(r,u,f){'use strict';var h=f(52),w=f(172),C=f(48),T=f(143);class P extends h.a{constructor(S){super(S),this.mutationObserver=S.getObserver(w.a),this.document=S,this.selection=S.selection,this.domConverter=S.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=f.i(T.a)((E)=>this.document.fire('selectionChangeDone',E),200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._loopbackCounter=0}observe(S){const E=S.ownerDocument;this._documents.has(E)||(this.listenTo(E,'selectionchange',()=>{this._handleSelectionChange(E)}),this._documents.add(E))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionChange(S){if(this.isEnabled&&this.document.isFocused){this.mutationObserver.flush();const E=S.defaultView.getSelection(),O=this.domConverter.domSelectionToView(E);if(!this.selection.isEqual(O)){if(60<++this._loopbackCounter)return void C.a.warn('selectionchange-infinite-loop: Selection change observer detected an infinite rendering loop.');const R={oldSelection:this.selection,newSelection:O,domSelection:E};this.document.fire('selectionChange',R),this._fireSelectionChangeDoneDebounced(R)}}}_clearInfiniteLoop(){this._loopbackCounter=0}}u.a=P},function(r,u,f){'use strict';function w(I){const N=I.document;I.removeClass('ck-placeholder'),I.removeAttribute('data-placeholder'),F.has(N)&&F.get(N).delete(I)}function C(I){const N=F.get(I);for(let[M,D]of N)T(M,D)}function T(I,N){const M=I.document;if(M){const D=M.selection,z=D.anchor;return N&&!N()?void I.removeClass('ck-placeholder'):M.isFocused||I.childCount?void(!I.childCount&&z&&z.parent!==I?I.addClass('ck-placeholder'):I.removeClass('ck-placeholder')):void I.addClass('ck-placeholder')}}var P=f(45),S=f(7),E=f(0),O=f(319),R=f.n(O);u.a=function(I,N,M){const D=I.document;if(!D)throw new E.a('view-placeholder-element-is-detached: Provided element is not placed in document.');w(I),F.has(D)||(F.set(D,new Map),V.listenTo(D,'render',()=>C(D),{priority:'high'})),I.setAttribute('data-placeholder',N),F.get(D).set(I,M),T(I,M)};const V={};f.i(P.a)(V,S.a);const F=new WeakMap},function(r,u,f){'use strict';function h(D,z){return!D.isCollapsed&&w(D).isEqual(w(z))}function w(D){const z=P.a.createFromSelection(D),$=z.getRanges();let q=[];for(let U of $)q.push(U.getTrimmed());return z.setRanges(q,z.isBackward),z}var C=f(29),T=f(25),P=f(63),S=f(61),E=f(4),O=f(189),R=f(423),V=f(427),F=f(48),I=f(31),N=f(0);class M{constructor(D,z){this.domDocuments=new Set,this.domConverter=D,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=z,this._inlineFiller=null,this.isFocused=!1,this._fakeSelectionContainer=null}markToSync(D,z){if('text'===D)this.domConverter.getCorrespondingDom(z.parent)&&this.markedTexts.add(z);else{if(!this.domConverter.getCorrespondingDom(z))return;if('attributes'===D)this.markedAttributes.add(z);else if('children'===D)this.markedChildren.add(z);else throw new N.a('view-renderer-unknown-type: Unknown type passed to Renderer.markToSync.')}}render(){let D;this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?D=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(D=this.selection.getFirstPosition(),this.markedChildren.add(D.parent));for(let z of this.markedTexts)!this.markedChildren.has(z.parent)&&this.domConverter.getCorrespondingDom(z.parent)&&this._updateText(z,{inlineFillerPosition:D});for(let z of this.markedAttributes)this._updateAttrs(z);for(let z of this.markedChildren)this._updateChildren(z,{inlineFillerPosition:D});this._updateSelection(),this._updateFocus(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear(),this._inlineFiller=this._getInlineFillerNode(D)}_getInlineFillerNode(D){if(!D)return void(this._inlineFiller=null);const z=this.domConverter.viewPositionToDom(D);if(!z||!f.i(S.c)(z.parent))throw new N.a('view-renderer-cannot-find-filler: Cannot find filler node by its position.');return z.parent}_getInlineFillerPosition(){const D=this.selection.getFirstPosition();return D.parent.is('text')?T.a.createBefore(this.selection.getFirstPosition().parent):D}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const D=this.selection.getFirstPosition(),z=this.domConverter.viewPositionToDom(D);return z&&this.domConverter.isText(z.parent)&&f.i(S.c)(z.parent)}_removeInlineFiller(){const D=this._inlineFiller;if(!f.i(S.c)(D))throw new N.a('view-renderer-filler-was-lost: The inline filler node was lost.');f.i(S.f)(D)?D.parentNode.removeChild(D):D.data=D.data.substr(S.d),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const D=this.selection.getFirstPosition(),z=D.parent,$=D.offset;if(!this.domConverter.getCorrespondingDomElement(z.root))return!1;if(!z.is('element'))return!1;if($===z.getFillerOffset())return!1;const q=D.nodeBefore,U=D.nodeAfter;return q instanceof C.a||U instanceof C.a?!1:!0}_updateText(D,z){const $=this.domConverter.getCorrespondingDom(D),q=this.domConverter.viewToDom(D,$.ownerDocument),U=$.data;let K=q.data;const H=z.inlineFillerPosition;H&&H.parent==D.parent&&H.offset==D.index&&(K=S.i+K),U!=K&&($.data=K)}_updateAttrs(D){const z=this.domConverter.getCorrespondingDom(D),$=Array.from(z.attributes).map((U)=>U.name),q=D.getAttributeKeys();for(let U of q)z.setAttribute(U,D.getAttribute(U));for(let U of $)D.hasAttribute(U)||z.removeAttribute(U)}_updateChildren(D,z){function $(J,X){if(J===X)return!0;return q.isText(J)&&q.isText(X)?J.data===X.data:f.i(S.e)(J,q.blockFiller)&&f.i(S.e)(X,q.blockFiller)}const q=this.domConverter,U=q.getCorrespondingDom(D);if(U){const K=U.ownerDocument,H=z.inlineFillerPosition,Y=U.childNodes,W=Array.from(q.viewChildrenToDom(D,K,{bind:!0}));if(H&&H.parent==D){const J=W[H.offset];this.domConverter.isText(J)?J.data=S.i+J.data:W.splice(H.offset,0,K.createTextNode(S.i))}const Z=f.i(O.a)(Y,W,$);let G=0;for(let J of Z)'insert'===J?(f.i(R.a)(U,G,W[G]),G++):'delete'===J?(this.domConverter.unbindDomElement(Y[G]),f.i(V.a)(Y[G])):G++}}_updateSelection(){if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const D=this.domConverter.getCorrespondingDomElement(this.selection.editableElement);this.isFocused&&D&&(this.selection.isFake?this._updateFakeSelection(D):(this._removeFakeSelection(),this._updateDomSelection(D)))}_updateFakeSelection(D){const z=D.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=z.createElement('div'),this._fakeSelectionContainer.style.position='fixed',this._fakeSelectionContainer.style.top=0,this._fakeSelectionContainer.style.left='-9999px',this._fakeSelectionContainer.appendChild(z.createTextNode('\xA0'))),this._fakeSelectionContainer.parentElement||D.appendChild(this._fakeSelectionContainer);const $=this.selection.fakeSelectionLabel||'\xA0';this._fakeSelectionContainer.firstChild.data=$;const q=z.getSelection();q.removeAllRanges();const U=new Range;U.selectNodeContents(this._fakeSelectionContainer),q.addRange(U),this.domConverter.bindFakeSelection(this._fakeSelectionContainer,this.selection)}_updateDomSelection(D){const z=D.ownerDocument.defaultView.getSelection(),$=z&&this.domConverter.domSelectionToView(z);if(!($&&this.selection.isEqual($))){if($&&h($,this.selection)){const K={oldSelection:$,currentSelection:this.selection};return void F.a.warn('renderer-skipped-selection-rendering: The selection was not rendered due to its similarity to the current one.',K)}const q=this.domConverter.viewPositionToDom(this.selection.anchor),U=this.domConverter.viewPositionToDom(this.selection.focus);z.collapse(q.parent,q.offset),z.extend(U.parent,U.offset)}}_removeDomSelection(){for(let D of this.domDocuments){const z=D.getSelection();if(z.rangeCount){const $=D.activeElement,q=this.domConverter.getCorrespondingViewElement($);$&&q&&D.getSelection().removeAllRanges()}}}_removeFakeSelection(){const D=this._fakeSelectionContainer;D&&D.remove()}_updateFocus(){if(this.isFocused){const D=this.selection.editableElement;D&&this.domConverter.focus(D)}}}u.a=M,f.i(E.a)(M,I.a)},function(r,u,f){'use strict';var h=f(0);class w{constructor(C,T,P){if(this.textNode=C,0>T||T>C.data.length)throw new h.a('view-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.');if(0>P||T+P>C.data.length)throw new h.a('view-textproxy-wrong-length: Given length value is incorrect.');this.data=C.data.substring(T,T+P),this.offsetInText=T}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(C){return'textProxy'==C}getAncestors(C={includeNode:!1,parentFirst:!1}){const T=[];for(let P=C.includeNode?this.textNode:this.parent;null!==P;)T[C.parentFirst?'push':'unshift'](P),P=P.parent;return T}}u.a=w},function(r,u,f){'use strict';function h(S,E,O,R){const V=O.isCollapsed,F=O.getFirstRange(),I=F.start.parent,N=F.end.parent;if(!(R.limits.has(I.name)||R.limits.has(N.name))){if(I.root==I)return void(V||S.deleteContent(O,E));if(V)w(E,O,F.start);else{const M=F.start.isAtStart&&F.end.isAtEnd;S.deleteContent(O,E,{merge:M}),M||(I==N?w(E,O,O.focus):O.collapse(N))}}}function w(S,E,O){if(O.isAtEnd){const R=O.parent,V=new R.constructor(R.name,R.getAttributes());S.insert(T.a.createAfter(O.parent),V)}else S.split(O);E.collapse(O.parent.nextSibling)}var C=f(12),T=f(1);class P extends C.a{_doExecute(){const S=this.editor.document,E=S.batch();S.enqueueChanges(()=>{h(this.editor.data,E,S.selection,S.schema),this.fire('afterExecute',{batch:E})})}}u.a=P},function(r,u,f){'use strict';var h=f(52),w=f(118),C=f(22);class T extends h.a{constructor(P){super(P),P.on('keydown',(S,E)=>{this.isEnabled&&E.keyCode==C.b.enter&&P.fire('enter',new w.a(P,E.domEvent))})}observe(){}}u.a=T},function(r,u,f){'use strict';var h=f(2),w=f(12),C=f(59),T=f(1),P=f(81);class S extends w.a{constructor(E,O){super(E),Object.assign(this,O),this.set('value',!1),this.listenTo(E.document,'changesDone',()=>{this.refreshValue(),this.refreshState()})}_doExecute(E={}){const O=this.editor,R=O.document,V=this.value;R.enqueueChanges(()=>{const F=E.batch||R.batch();for(let I of R.selection.getSelectedBlocks())if(!V)I.is(this.modelElement)||F.rename(I,this.modelElement);else if(I.is(this.modelElement)){const N=new C.a;N.addRange(h.a.createIn(I)),O.execute('paragraph',{selection:N,batch:F})}})}refreshValue(){const E=f.i(P.a)(this.editor.document.selection.getSelectedBlocks());this.value=!!E&&E.is(this.modelElement)}_checkEnabled(){const E=f.i(P.a)(this.editor.document.selection.getSelectedBlocks());return!!E&&this.editor.document.schema.check({name:this.modelElement,inside:T.a.createBefore(E)})}}u.a=S},function(r,u,f){'use strict';function C(E,O,R,V){const F=E.name.split(':'),I=F[0]+':'+F[1];if(R.consume(O.item,I)){const N=V.mapper.toViewElement(O.item),M=N.getChild(0);'removeAttribute'==F[0]?M.removeAttribute(O.attributeKey):M.setAttribute(O.attributeKey,O.attributeNewValue)}}var T=f(5),P=f(1),S=f(13);u.b=function(){return(E,O,R,V)=>{const F=O.input;if(R.test(F,{name:!0,class:'image'})&&V.schema.check({name:'image',inside:O.context,attributes:'src'})){const I=F.getChild(0);if(I&&'img'==I.name&&R.test(I,{name:!0,attribute:'src'})){R.consume(F,{name:!0,class:'image'}),R.consume(I,{name:!0,attribute:'src'});const N=new T.a('image',{src:I.getAttribute('src')});R.consume(I,{attribute:['alt']})&&N.setAttribute('alt',I.getAttribute('alt')),O.context.push(N);const M=V.convertChildren(F,R,O),D=P.a.createAt(N,'end');S.a.insert(D,M),O.context.pop(),O.output=N}}}},u.a=function(E,O){for(let R of E)R.on(`addAttribute:${O}:image`,C),R.on(`changeAttribute:${O}:image`,C),R.on(`removeAttribute:${O}:image`,C)}},function(r,u,f){'use strict';function h($,q,U,K){if('insert'===q){const H=new S.a({boundaries:U.range,ignoreElementEnd:!0});for(let Y of H){const W=Y.item;'elementStart'==Y.type&&f.i(M.b)(W)&&!f.i(D.c)(W)&&K.document.enqueueChanges(()=>{f.i(D.c)(W)||K.insert(F.a.createAt(W,'end'),new E.a('caption'))})}}}function w($,q=!0){return(U,K,H,Y)=>{const W=K.item;if((W.childCount||q)&&f.i(M.b)(W.parent)){if(!H.consume(K.item,'insert'))return;const Z=Y.mapper.toViewElement(K.range.start.parent),G=$ instanceof R.a?$.clone(!0):$();W.childCount||G.addClass('ck-hidden'),C(G,K.item,Z,Y.mapper)}}}function C($,q,U,K){const H=I.a.createAt(U,'end');V.a.insert(H,$),K.bindElements(q,$)}function T($){const q=$.getAncestors({includeNode:!0}),U=q.find((K)=>'caption'==K.name);return U&&U.parent&&'image'==U.parent.name?U:null}var P=f(3),S=f(35),E=f(5),O=f(41),R=f(21),V=f(78),F=f(1),I=f(25),N=f(50),M=f(42),D=f(374);class z extends P.a{init(){const $=this.editor,q=$.document,U=$.editing.view,K=q.schema,H=$.data,Y=$.editing,W=$.t;this._createCaption=f.i(D.a)(U,W('Enter image caption')),K.registerItem('caption'),K.allow({name:'$inline',inside:'caption'}),K.allow({name:'caption',inside:'image'}),K.limits.add('caption'),q.on('change',h),f.i(N.a)().for(H.viewToModel).from(D.b).toElement('caption'),H.modelToView.on('insert:caption',w(new O.a('figcaption'),!1)),Y.modelToView.on('insert:caption',w(this._createCaption)),Y.modelToView.on('insert',(Z,G)=>this._fixCaptionVisibility(G.item),{priority:'high'}),Y.modelToView.on('remove',(Z,G)=>this._fixCaptionVisibility(G.sourcePosition.parent),{priority:'high'}),this.listenTo(U,'render',()=>this._updateCaptionVisibility(),{priority:'high'})}_updateCaptionVisibility(){const $=this.editor.editing.mapper,q=this.editor.editing.view.selection,U=q.getSelectedElement();let K;if(this._lastSelectedCaption&&!this._lastSelectedCaption.childCount&&this._lastSelectedCaption.addClass('ck-hidden'),U&&f.i(M.a)(U)){const H=$.toModelElement(U),Y=f.i(D.c)(H);K=$.toViewElement(Y)}f.i(D.d)(q.editableElement)&&(K=q.editableElement),K&&(K.removeClass('ck-hidden'),this._lastSelectedCaption=K)}_fixCaptionVisibility($){const q=T($),U=this.editor.editing.mapper;if(q){const K=U.toViewElement(q);K&&(q.childCount?K.removeClass('ck-hidden'):K.addClass('ck-hidden'))}}}u.a=z},function(r,u,f){'use strict';var P=f(5),S=f(76),E=f(366),O=f(153);u.a=function(V,F){return()=>{const I=new S.a('figcaption');return I.document=V,I.setCustomProperty(R,!0),f.i(E.a)(I,F),f.i(O.c)(I)}},u.d=function(V){return!!V.getCustomProperty(R)},u.c=function(V){for(let F of V.getChildren())if(F instanceof P.a&&'caption'==F.name)return F;return null},u.b=function(V){const F=V.parent;return'figcaption'==V.name&&F&&'figure'==F.name&&F.hasClass('image')?{name:!0}:null};const R=Symbol('imageCaption')},function(r,u,f){'use strict';function C(O,R,V,F){const I=R.input,N=R.output;if(V.test(I,{class:O.className})&&f.i(E.b)(N)){const M=[...N.getAttributeKeys(),'imageStyle'];F.schema.check({name:'image',inside:R.context,attributes:M})&&(V.consume(I,{class:O.className}),N.setAttribute('imageStyle',O.value))}}function T(O,R){for(let V of R)if(V.value===O)return V}function P(O,R,V){return R&&('changeAttribute'==O||'removeAttribute'==O)&&(V.removeClass(R.className),!0)}function S(O,R,V){return R&&('addAttribute'==O||'changeAttribute'==O)&&(V.addClass(R.className),!0)}var E=f(42);u.a=function(O){return(R,V,F,I)=>{const N=R.name.split(':')[0],M=N+':imageStyle';if(F.test(V.item,M)){const D=T(V.attributeNewValue,O),z=T(V.attributeOldValue,O),$=I.mapper.toViewElement(V.item);(P(N,z,$)||S(N,D,$))&&F.consume(V.item,M)}}},u.b=function(O){const R=O.filter((V)=>null!==V.value);return(V,F,I,N)=>{for(let M of R)C(M,F,I,N)}}},function(r,u,f){'use strict';var h=f(12),w=f(42);class C extends h.a{constructor(T,P){super(T),this.set('value',!1),this.style=P,this.listenTo(T.document,'changesDone',()=>{this._updateValue(),this.refreshState()})}_updateValue(){const T=this.editor.document,P=T.selection.getSelectedElement();return P?void(null===this.style.value?this.value=!P.hasAttribute('imageStyle'):this.value=P.getAttribute('imageStyle')==this.style.value):void(this.value=!1)}_checkEnabled(){const T=this.editor.document.selection.getSelectedElement();return f.i(w.b)(T)}_doExecute(T={}){if(this.value)return;const P=this.editor,S=P.document,E=S.selection,O=E.getSelectedElement();S.enqueueChanges(()=>{const R=T.batch||S.batch();R.setAttribute(O,'imageStyle',this.style.value)})}}u.a=C},function(r,u,f){'use strict';var h=f(3),w=f(376),C=f(176),T=f(375),P=f(294),S=f.n(P),E=f(295),O=f.n(E);class R extends h.a{static get requires(){return[C.a]}init(){const V=this.editor,F=V.t,I=V.document,N=I.schema,M=V.data,D=V.editing;V.config.define('image.styles',[{name:'imageStyleFull',title:F('Full size image'),icon:S.a,value:null},{name:'imageStyleSide',title:F('Side image'),icon:O.a,value:'side',className:'image-style-side'}]);const z=V.config.get('image.styles');N.allow({name:'image',attributes:'imageStyle',inside:'$root'});const $=f.i(T.a)(z);D.modelToView.on('addAttribute:imageStyle:image',$),M.modelToView.on('addAttribute:imageStyle:image',$),D.modelToView.on('changeAttribute:imageStyle:image',$),M.modelToView.on('changeAttribute:imageStyle:image',$),D.modelToView.on('removeAttribute:imageStyle:image',$),M.modelToView.on('removeAttribute:imageStyle:image',$),M.viewToModel.on('element:figure',f.i(T.b)(z),{priority:'low'});for(let q of z)V.commands.set(q.name,new w.a(V,q))}}u.a=R},function(r,u,f){'use strict';var h=f(3),w=f(26),C=f(380),T=f(396),P=f(182),S=f(154),E=f(381),O=f(177),R=f(293),V=f.n(R),F=f(322),I=f.n(F);class N extends h.a{static get requires(){return[C.a]}static get pluginName(){return'image/imagetextalternative'}init(){this._createButton();const M=this.editor.config.get('image.defaultToolbar');return M&&(M.length&&M.push('|'),M.push('imageTextAlternative')),this._createBalloonPanel().then((D)=>{this.balloonPanel=D,this.form=D.content.get(0)})}_createButton(){const M=this.editor,D=M.commands.get('imageTextAlternative'),z=M.t;M.ui.componentFactory.add('imageTextAlternative',($)=>{const q=new w.a($);return q.set({label:z('Change image text alternative'),icon:V.a,tooltip:!0}),q.bind('isEnabled').to(D,'isEnabled'),this.listenTo(q,'execute',()=>this._showBalloonPanel()),q})}_createBalloonPanel(){const M=this.editor,D=new O.a(M),z=new E.a(M.locale);this.listenTo(z,'submit',()=>{M.execute('imageTextAlternative',{newValue:z.lebeledInput.inputView.element.value}),this._hideBalloonPanel()});const $=M.plugins.get(S.a);return $&&this.listenTo(D,'change:isVisible',()=>{D.isVisible?($.hide(),$.isEnabled=!1):($.show(),$.isEnabled=!0)}),this.listenTo(z,'cancel',()=>this._hideBalloonPanel()),f.i(T.a)({emitter:D,activator:()=>D.isVisible,callback:()=>this._hideBalloonPanel()}),f.i(P.a)({emitter:D,activator:()=>D.isVisible,contextElement:D.element,callback:()=>this._hideBalloonPanel()}),Promise.all([D.content.add(z),M.ui.view.body.add(D)]).then(()=>D)}_showBalloonPanel(){const M=this.editor,D=M.commands.get('imageTextAlternative');this.form.lebeledInput.value=D.value||'',this.balloonPanel.attach(),this.form.lebeledInput.select()}_hideBalloonPanel(){const M=this.editor;this.balloonPanel.detach(),M.editing.view.focus()}}u.a=N},function(r,u,f){'use strict';var h=f(12),w=f(42);class C extends h.a{constructor(T){super(T),this.set('value',!1),this.listenTo(T.document,'changesDone',()=>{this._updateValue(),this.refreshState()})}_updateValue(){const T=this.editor.document,P=T.selection.getSelectedElement();this.value=f.i(w.b)(P)&&P.hasAttribute('alt')&&P.getAttribute('alt')}_checkEnabled(){const T=this.editor.document.selection.getSelectedElement();return f.i(w.b)(T)}_doExecute(T){const P=this.editor,S=P.document,E=S.selection.getSelectedElement();S.enqueueChanges(()=>{const O=T.batch||S.batch();O.setAttribute(E,'alt',T.newValue)})}}u.a=C},function(r,u,f){'use strict';var h=f(379),w=f(3);class C extends w.a{init(){this.editor.commands.set('imageTextAlternative',new h.a(this.editor))}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(26),C=f(6),T=f(185),P=f(184),S=f(183);class E extends h.a{constructor(O){super(O);const R=this.locale.t;this.lebeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(R('Save')),this.saveButtonView.type='submit',this.cancelButtonView=this._createButton(R('Cancel'),'cancel'),C.a.extend(this.saveButtonView.template,{attributes:{class:['ck-button-action']}}),this.template=new C.a({tag:'form',attributes:{class:['cke-text-alternative-form']},children:[this.lebeledInput,{tag:'div',attributes:{class:['cke-text-alternative-form__actions']},children:[this.saveButtonView,this.cancelButtonView]}]}),f.i(S.a)({view:this})}_createButton(O,R){const V=new w.a(this.locale);return V.label=O,V.withText=!0,R&&V.delegate('execute').to(this,R),V}_createLabeledInputView(){const O=this.locale.t,R=new T.a(this.locale,P.a);return R.label=O('Text alternative'),R}}u.a=E},function(r,u,f){'use strict';var h=f(12),w=f(24),C=f(2),T=f(101),P=f(159),S=f(178);class E extends h.a{constructor(O){super(O),this.set('value',void 0),this.listenTo(this.editor.document.selection,'change:attribute',()=>{this.value=this.editor.document.selection.getAttribute('linkHref')})}_checkEnabled(){const O=this.editor.document;return f.i(P.a)('linkHref',O.selection,O.schema)}_doExecute(O){const R=this.editor.document,V=R.selection;R.enqueueChanges(()=>{const F=R.batch();if(V.isCollapsed){const I=V.getFirstPosition(),N=I.parent;if(V.hasAttribute('linkHref')){const M=f.i(S.a)(V.getFirstPosition(),V.getAttribute('linkHref'));F.setAttribute(M,'linkHref',O),V.setRanges([M])}else if(R.schema.check({name:'$text',attributes:'linkHref',inside:N.name})){const M=new w.a(O,{linkHref:O});F.insert(I,M),V.setRanges([C.a.createOn(M)])}}else{const I=f.i(T.a)('linkHref',V.getRanges(),R.schema);for(let N of I)F.setAttribute(N,'linkHref',O)}})}}u.a=E},function(r,u,f){'use strict';var h=f(3),w=f(49),C=f(50),T=f(179),P=f(382),S=f(385);class E extends h.a{init(){const O=this.editor,R=O.data,V=O.editing;O.document.schema.allow({name:'$inline',attributes:'linkHref'}),f.i(w.a)().for(R.modelToView,V.modelToView).fromAttribute('linkHref').toElement((F)=>new T.a('a',{href:F})),f.i(C.a)().for(R.viewToModel).fromElement('a').toAttribute((F)=>({key:'linkHref',value:F.getAttribute('href')})),O.commands.set('link',new P.a(O)),O.commands.set('unlink',new S.a(O))}}u.a=E},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(120),T=f(26),P=f(185),S=f(184),E=f(183),O=f(66),R=f(119),V=f(67);class F extends h.a{constructor(I){super(I);const N=I.t;this.focusTracker=new O.a,this.keystrokes=new V.a,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(N('Save')),this.saveButtonView.type='submit',this.cancelButtonView=this._createButton(N('Cancel'),'cancel'),this.unlinkButtonView=this._createButton(N('Unlink'),'unlink'),this._focusables=new C.a,this._focusCycler=new R.a({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:'shift + tab',focusNext:'tab'}}),w.a.extend(this.saveButtonView.template,{attributes:{class:['ck-button-action']}}),this.template=new w.a({tag:'form',attributes:{class:['ck-link-form']},children:[this.urlInputView,{tag:'div',attributes:{class:['ck-link-form__actions']},children:[this.saveButtonView,this.cancelButtonView,this.unlinkButtonView]}]}),f.i(E.a)({view:this});const M=[this.urlInputView,this.saveButtonView,this.cancelButtonView,this.unlinkButtonView];M.forEach((D)=>{this._focusables.add(D),this.focusTracker.add(D.element)})}init(){return this.keystrokes.listenTo(this.element),super.init()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const I=this.locale.t,N=new P.a(this.locale,S.a);return N.label=I('Link URL'),N}_createButton(I,N){const M=new T.a(this.locale);return M.label=I,M.withText=!0,N&&M.delegate('execute').to(this,N),M}}u.a=F},function(r,u,f){'use strict';var h=f(12),w=f(178);class C extends h.a{constructor(T){super(T),this.listenTo(T.document.selection,'change:attribute',()=>this.refreshState())}_doExecute(){const T=this.editor.document,P=T.selection;T.enqueueChanges(()=>{const S=P.isCollapsed?[f.i(w.a)(P.getFirstPosition(),P.getAttribute('linkHref'))]:P.getRanges(),E=T.batch();for(let O of S)E.removeAttribute(O,'linkHref')})}_checkEnabled(){return this.editor.document.selection.hasAttribute('linkHref')}}u.a=C},function(r,u,f){'use strict';function N(te,ae,ne){const oe=te.nodeBefore;let ie=te.nodeAfter;if(ie&&'listItem'==ie.name){const re=oe&&oe.is('listItem')?oe.getAttribute('indent')+1:0;let se=ie.getAttribute('indent')-re;const le=[];for(;ie&&'listItem'==ie.name&&ie.getAttribute('indent')>re;){se>ie.getAttribute('indent')&&(se=ie.getAttribute('indent'));const de=ie.getAttribute('indent')-se;le.push({item:ie,indent:de}),ie=ie.nextSibling}0{for(let de of le.reverse())ne.setAttribute(de.item,'indent',de.indent)})}}function M(te,ae,ne,oe){let ie=te[ae?'nodeBefore':'nodeAfter'];if(!ie||!ie.is('listItem')||0===ie.getAttribute('indent'))return;const re=K(ie,!ae);if(!re||re==ie)return;const se=re.getAttribute('indent'),le=re.getAttribute('type');ne.enqueueChanges(()=>{for(;ie&&ie.is('listItem')&&ie.getAttribute('indent')>=se;)ie.getAttribute('type')!=le&&ie.getAttribute('indent')==se&&oe.setAttribute(ie,'type',le),ie=ie[ae?'previousSibling':'nextSibling']})}function D(te,ae){const ne='numbered'==te.getAttribute('type')?'ol':'ul',oe=new H.a,ie=new G.a(ne,null);return ie.appendChildren(oe),ae.bindElements(te,oe),oe}function z(te,ae){const ne=ae.getNext?'nextSibling':'previousSibling',oe=ae.getNext?'nodeAfter':'nodeBefore',ie=!!ae.checkAllSiblings,re=!!ae.sameIndent,se=!!ae.biggerIndent,le=!!ae.smallerIndent,de=!!ae.isMapped,ce=te instanceof Y.a?te.getAttribute('indent'):ae.indent;for(let ue=te instanceof Y.a?te[ne]:te[oe],pe;ue&&'listItem'==ue.name;){if(pe=ue.getAttribute('indent'),re&&ce==pe||se&&cepe){if(!de||ae.mapper.toViewElement(ue))return ue;ue=ue[ne];continue}if(!ie)return null;ue=ue[ne]}return null}function $(te,ae){return te&&ae&&('ul'==te.name||'ol'==te.name)&&te.name==ae.name?ee.a.mergeContainers(J.a.createAfter(te)):null}function q(te,ae,ne,oe){const ie=ae.parent;let re,se=z(te,{sameIndent:!0,smallerIndent:!0,checkAllSiblings:!0});if(se&&se.getAttribute('indent')==te.getAttribute('indent')){let de=ne.toViewElement(se);re=ee.a.breakContainer(J.a.createAfter(de))}else se=te.previousSibling,re=se&&'listItem'==se.name?se.getAttribute('indent')=ne;)te=te[oe],te.getAttribute('indent')==ne&&(ie=te);return ie}var H=f(389),Y=f(5),W=f(1),Z=f(13),G=f(41),J=f(25),X=f(36),Q=f(53),ee=f(78);u.e=function(te,ae,ne,oe){if(ne.test(ae.item,'insert')&&ne.test(ae.item,'addAttribute:type')&&ne.test(ae.item,'addAttribute:indent')){ne.consume(ae.item,'insert'),ne.consume(ae.item,'addAttribute:type'),ne.consume(ae.item,'addAttribute:indent');const ie=ae.item,re=D(ie,oe.mapper);q(ie,re,oe.mapper)}},u.f=function(te,ae,ne,oe){if(!ne.consume(ae.item,'changeAttribute:type'))return;const ie=oe.mapper.toViewElement(ae.item);ee.a.breakContainer(J.a.createBefore(ie)),ee.a.breakContainer(J.a.createAfter(ie));let re=ie.parent;const se='numbered'==ae.attributeNewValue?'ol':'ul';re=ee.a.rename(re,se),$(re,re.nextSibling),$(re.previousSibling,re)},u.g=function(te,ae,ne,oe){if(ne.consume(ae.item,'remove')){const ie=oe.mapper.toViewPosition(ae.sourcePosition),re=ie.nodeAfter.is('li')?ie.nodeAfter:ie.nodeAfter.getChild(0);ee.a.breakContainer(J.a.createBefore(re)),ee.a.breakContainer(J.a.createAfter(re));const se=re.parent,le=se.previousSibling,de=X.a.createOn(se);ee.a.remove(de),le&&le.nextSibling&&$(le,le.nextSibling),U(ae.item.getAttribute('indent')+1,ae.sourcePosition,de.start,re,oe.mapper),'$graveyard'==ae.item.root.rootName&&oe.mapper.unbindModelElement(ae.item)}},u.i=function(te,ae,ne,oe){if(!ne.consume(ae.item,'changeAttribute:indent'))return;const ie=oe.mapper.toViewElement(ae.item);ee.a.breakContainer(J.a.createBefore(ie)),ee.a.breakContainer(J.a.createAfter(ie));const re=ie.parent,se=re.previousSibling,le=X.a.createOn(re);ee.a.remove(le);let de;se&&se.nextSibling&&(de=$(se,se.nextSibling)),de||(de=le.start),U(ae.attributeOldValue+1,ae.range.start,le.start,ie,oe.mapper),q(ae.item,ie,oe.mapper,de)},u.d=function(te,ae,ne,oe){if('listItem'!=ae.item.name){let ie=oe.mapper.toViewPosition(ae.range.start);const re=[];for(;('ul'==ie.parent.name||'ol'==ie.parent.name)&&(ie=ee.a.breakContainer(ie),'li'==ie.parent.name);){const se=ie,le=J.a.createAt(ie.parent,'end');if(!se.isEqual(le)){const de=ee.a.remove(new X.a(se,le));re.push(de)}ie=J.a.createAfter(ie.parent)}if(0se.is('ul')||se.is('ol')),re=new Q.a({startPosition:J.a.createAt(oe,0)});for(let se of re)if('elementStart'==se.type&&se.item.is('li')){ae.viewPosition=se.previousPosition;break}else if('elementEnd'==se.type&&se.item==ie){ae.viewPosition=se.nextPosition;break}}},u.c=function(te,ae){const ne=ae.viewPosition,oe=ne.parent,ie=ae.mapper;if('ul'==oe.name||'ol'==oe.name){if(!ne.isAtEnd){const re=ie.toModelElement(ne.nodeAfter);ae.modelPosition=W.a.createBefore(re)}else{const re=ie.toModelElement(ne.nodeBefore),se=ie.getModelLength(ne.nodeBefore);ae.modelPosition=W.a.createBefore(re).getShiftedBy(se)}te.stop()}else if('li'==oe.name&&ne.nodeBefore&&('ul'==ne.nodeBefore.name||'ol'==ne.nodeBefore.name)){const re=ie.toModelElement(oe);let se=1,le=ne.nodeBefore;for(;le&&(le.is('ul')||le.is('ol'));)se+=ie.getModelLength(le),le=le.previousSibling;ae.modelPosition=W.a.createBefore(re).getShiftedBy(se),te.stop()}},u.a=function(te){return(ae,ne,oe,ie)=>{if('remove'==ne)N(oe.sourcePosition,te,ie),M(oe.sourcePosition,!1,te,ie);else if('move'==ne)N(oe.sourcePosition,te,ie),M(oe.sourcePosition,!1,te,ie),N(oe.range.start,te,ie),M(oe.range.start,!1,te,ie),N(oe.range.end,te,ie),M(oe.range.end,!0,te,ie);else if('rename'==ne&&'listItem'==oe.oldName&&'listItem'!=oe.newName){const re=oe.element;te.enqueueChanges(()=>{ie.removeAttribute(re,'indent').removeAttribute(re,'type')});const se=W.a.createAfter(oe.element);N(se,te,ie)}else'insert'==ne&&(N(oe.range.start,te,ie),M(oe.range.start,!1,te,ie),N(oe.range.end,te,ie),M(oe.range.end,!0,te,ie))}}},function(r,u,f){'use strict';function h(S,E){const O=w(S,!1);if(O)return void E.setAttribute(S,'type',O.getAttribute('type'));const R=w(S,!0);R&&E.setAttribute(S,'type',R.getAttribute('type'))}function w(S,E){for(let O=S[E?'nextSibling':'previousSibling'];O&&O.is('listItem')&&O.getAttribute('indent')>=S.getAttribute('indent');){if(O.getAttribute('indent')==S.getAttribute('indent'))return O;O=O[E?'nextSibling':'previousSibling']}return null}var C=f(12),T=f(81);class P extends C.a{constructor(S,E){super(S),this._indentBy='forward'==E?1:-1,this.listenTo(S.document,'changesDone',()=>{this.refreshState()})}_doExecute(){const S=this.editor.document,E=S.batch();let O=Array.from(S.selection.getSelectedBlocks());S.enqueueChanges(()=>{const R=O[O.length-1];for(let V=R.nextSibling;V&&'listItem'==V.name&&V.getAttribute('indent')>R.getAttribute('indent');)O.push(V),V=V.nextSibling;0>this._indentBy&&(O=O.reverse());for(let F of O){const I=F.getAttribute('indent')+this._indentBy;0>I?E.rename(F,'paragraph'):E.setAttribute(F,'indent',I)}0>this._indentBy&&(O=O.reverse());for(let F of O)h(F,E)})}_checkEnabled(){const S=f.i(T.a)(this.editor.document.selection.getSelectedBlocks());if(!S||!S.is('listItem'))return!1;if(0=E;){if(R.getAttribute('indent')==E)return R.getAttribute('type')==O;R=R.previousSibling}return!1}return!0}}u.a=P},function(r,u,f){'use strict';function h(S,E,O){const R=E?S[0]:S[S.length-1];if(R.is('listItem'))for(let V=R[E?'previousSibling':'nextSibling'],F=R.getAttribute('indent');V&&V.is('listItem')&&V.getAttribute('indent')>=O;)F>V.getAttribute('indent')&&(F=V.getAttribute('indent')),V.getAttribute('indent')==F&&S[E?'unshift':'push'](V),V=V[E?'previousSibling':'nextSibling']}var w=f(12),C=f(1),T=f(81);class P extends w.a{constructor(S,E){super(S),this.type='bulleted'==E?'bulleted':'numbered',this.set('value',!1),this.listenTo(S.document,'changesDone',()=>{this.refreshValue(),this.refreshState()})}refreshValue(){const S=f.i(T.a)(this.editor.document.selection.getSelectedBlocks());this.value=S&&S.is('listItem')&&S.getAttribute('type')==this.type}_doExecute(S={}){const E=this.editor.document,O=Array.from(E.selection.getSelectedBlocks()),R=!0===this.value;E.enqueueChanges(()=>{const V=S.batch||E.batch();if(R){let F=O[O.length-1].nextSibling,I=_NumberPOSITIVE_INFINITY,N=[];for(;F&&'listItem'==F.name&&0!==F.getAttribute('indent');){const M=F.getAttribute('indent');M{this.refreshValue(),this.refreshState()})}_doExecute(P={}){const S=this.editor.document;S.enqueueChanges(()=>{const E=P.batch||S.batch(),O=(P.selection||S.selection).getSelectedBlocks();for(let R of O)R.is('paragraph')||E.rename(R,'paragraph')})}refreshValue(){const P=f.i(C.a)(this.editor.document.selection.getSelectedBlocks());this.value=!!P&&P.is('paragraph')}_checkEnabled(){const P=f.i(C.a)(this.editor.document.selection.getSelectedBlocks());return!!P&&this.editor.document.schema.check({name:'paragraph',inside:w.a.createBefore(P)})}}u.a=T},function(r,u,f){'use strict';var h=f(3),w=f(392),C=f(393);class T extends h.a{static get pluginName(){return'typing/delete'}init(){const P=this.editor,S=P.editing.view;S.addObserver(C.a),P.commands.set('forwardDelete',new w.a(P,'forward')),P.commands.set('delete',new w.a(P,'backward')),this.listenTo(S,'delete',(E,O)=>{P.execute('forward'==O.direction?'forwardDelete':'delete',{unit:O.unit}),O.preventDefault()})}}u.a=T},function(r,u,f){'use strict';var h=f(12),w=f(59),C=f(181),T=f(188);class P extends h.a{constructor(S,E){super(S),this.direction=E,this._buffer=new C.a(S.document,S.config.get('typing.undoStep'))}_doExecute(S={}){const E=this.editor.document,O=this.editor.data;E.enqueueChanges(()=>{this._buffer.lock();const R=w.a.createFromSelection(E.selection);if(R.isCollapsed&&O.modifySelection(R,{direction:this.direction,unit:S.unit}),R.isCollapsed)return;let V=0;R.getFirstRange().getMinimalFlatRanges().forEach((F)=>{V+=f.i(T.a)(F.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),O.deleteContent(R,this._buffer.batch,{merge:!0}),this._buffer.input(V),E.selection.setRanges(R.getRanges(),R.isBackward),this._buffer.unlock()})}}u.a=P},function(r,u,f){'use strict';var h=f(52),w=f(118),C=f(22);class T extends h.a{constructor(P){super(P),P.on('keydown',(S,E)=>{const O={};if(E.keyCode==C.b.delete)O.direction='forward',O.unit='character';else if(E.keyCode==C.b.backspace)O.direction='backward',O.unit='codePoint';else return;O.unit=E.altKey?'word':O.unit,P.fire('delete',new w.a(P,E.domEvent,O))})}observe(){}}u.a=T},function(r,u,f){'use strict';function h(M){return!!M.ctrlKey||N.includes(M.keyCode)}function w(M,D){return M instanceof S.a&&D instanceof S.a?M.data===D.data:M===D}var C=f(3),T=f(2),P=f(25),S=f(29),E=f(189),O=f(418),R=f(22),V=f(395);class F extends C.a{static get pluginName(){return'typing/input'}init(){const M=this.editor,D=M.editing.view,z=new V.a(M,M.config.get('typing.undoStep')||20);M.commands.set('input',z),this.listenTo(D,'keydown',($,q)=>{this._handleKeydown(q,z.buffer)},{priority:'lowest'}),this.listenTo(D,'mutations',($,q,U)=>{this._handleMutations(q,U)})}_handleKeydown(M,D){const z=this.editor.document;h(M)||z.selection.isCollapsed||(D.lock(),z.enqueueChanges(()=>{this.editor.data.deleteContent(z.selection,D.batch)}),D.unlock())}_handleMutations(M,D){new I(this.editor).handle(M,D)}}u.a=F;class I{constructor(M){this.editor=M,this.editing=this.editor.editing}handle(M,D){for(let z of M)this._handleTextMutation(z,D),this._handleTextNodeInsertion(z)}_handleTextMutation(M,D){if('text'!=M.type)return;const z=M.newText.replace(/\u00A0/g,' '),$=M.oldText.replace(/\u00A0/g,' '),q=f.i(E.a)($,z);let U=null,K=null;for(let Q=0;Q=M;M++)N.push(M)},function(r,u,f){'use strict';var h=f(12),w=f(181);class C extends h.a{constructor(T,P){super(T),this._buffer=new w.a(T.document,P)}destroy(){super.destroy(),this._buffer.destroy(),this._buffer=null}get buffer(){return this._buffer}_doExecute(T={}){const P=this.editor.document,S=T.text||'',E=S.length,O=T.range||P.selection.getFirstRange(),R=T.resultRange;P.enqueueChanges(()=>{const V=O.isCollapsed;this._buffer.lock(),V||this._buffer.batch.remove(O),this._buffer.batch.weakInsert(O.start,S),R?this.editor.data.model.selection.setRanges([R]):V&&this.editor.data.model.selection.collapse(O.start.getShiftedBy(E)),this._buffer.unlock(),this._buffer.input(E)})}}u.a=C},function(r,u,f){'use strict';var w=f(22);u.a=function({emitter:C,activator:T,callback:P}){C.listenTo(document,'keydown',(S,{keyCode:E})=>{E==w.b.esc&&T()&&P()})}},function(r,u,f){'use strict';var h=f(0);u.a=class{constructor(C){this.editor=C,this._components=new Map}add(C,T){if(this._components.get(C))throw new h.a('componentfactory-item-exists: The item already exists in the component factory.',{name:C});this._components.set(C,T)}create(C){const T=this._components.get(C);if(!T)throw new h.a('componentfactory-item-missing: There is no such UI component in the factory.',{name:C});return T(this.editor.locale)}}},function(r,u,f){'use strict';var w=f(26),C=f(400),T=f(399);u.a=function(P,S){const E=new w.a(S);E.bind('label','isOn','isEnabled','withText','keystroke','tooltip').to(P);const O=new T.a(S);return new C.a(S,E,O)}},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T){super(T);const P=this.bindTemplate;this.set('isVisible',!1),this.children=this.createCollection(),this.template=new w.a({tag:'div',attributes:{class:['ck-reset','ck-dropdown__panel',P.if('isVisible','ck-dropdown__panel-visible')]},children:this.children})}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(66),T=f(67);class P extends h.a{constructor(S,E,O){super(S),w.a.extend(E.template,{attributes:{class:['ck-dropdown__button']}}),this.buttonView=E,this.panelView=O,this.set('isOpen',!1),this.focusTracker=new C.a,this.keystrokes=new T.a,this.template=new w.a({tag:'div',attributes:{class:['ck-dropdown']},children:[E,O]}),this.listenTo(E,'execute',()=>this.isOpen=!this.isOpen),O.bind('isVisible').to(this,'isOpen')}init(){this.keystrokes.listenTo(this.element),this.focusTracker.add(this.element);const S=(E,O)=>{this.isOpen&&(this.buttonView.focus(),this.isOpen=!1,O())};return this.keystrokes.set('arrowdown',(E,O)=>{this.isOpen||(this.isOpen=!0,O())}),this.keystrokes.set('arrowright',(E,O)=>{this.isOpen&&O()}),this.keystrokes.set('arrowleft',S),this.keystrokes.set('esc',S),super.init()}focus(){this.buttonView.focus()}}u.a=P},function(r,u,f){'use strict';function w(S){S.listenTo(document,'click',(E,{target:O})=>{S.element==O||S.element.contains(O)||(S.isOpen=!1)})}var C=f(409),T=f(408),P=f(398);u.a=function(S,E){const O=f.i(P.a)(S,E),R=O.listView=new C.a(E);return R.items.bindTo(S.items).using((V)=>{const F=new T.a(E);return F.bind(...Object.keys(V)).to(V),F}),R.items.delegate('execute').to(O),O.panelView.children.add(R),O.on('change:isOpen',(V,F,I)=>{I?w(O):O.stopListening(document)}),O.on('execute',()=>{O.isOpen=!1}),O.keystrokes.set('arrowdown',(V,F)=>{O.isOpen&&(R.focus(),F())}),O.keystrokes.set('arrowup',(V,F)=>{O.isOpen&&(R.focusLast(),F())}),O}},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T,P){super(T);const S=this.bindTemplate;P&&(this.element=this.editableElement=P),this.template=new w.a({tag:'div',attributes:{class:[S.to('isFocused',(E)=>E?'ck-focused':'ck-blurred'),'ck-editor__editable'],contenteditable:S.to('isReadOnly',(E)=>!E)}}),this.set('isReadOnly',!1),this.set('isFocused',!1),this.externalElement=P}init(){return this.externalElement?this.template.apply(this.externalElement):this.editableElement=this.element,super.init()}destroy(){return this.externalElement&&this.template.revert(this.externalElement),super.destroy()}}u.a=C},function(r,u,f){'use strict';var h=f(402),w=f(6);class C extends h.a{constructor(T,P){super(T,P);const S=this.bindTemplate,E=this.t;this.set('name',null);w.a.extend(this.template,{attributes:{role:'textbox','aria-label':S.to('name',(R)=>{return E('Rich Text Editor, %0',[R])}),class:'ck-editor__editable_inline'}})}}u.a=C},function(r,u,f){'use strict';var h=f(405),w=f(71),C=f(6);class T extends h.a{constructor(P){super(P);const S=this.t,E=f.i(w.a)();this.set('width',null),this.set('height',null),this.top=this.createCollection(),this.main=this.createCollection(),this.template=new C.a({tag:'div',attributes:{class:['ck-reset','ck-editor','ck-rounded-corners'],role:'application',dir:'ltr',lang:P.lang,'aria-labelledby':`cke-editor__aria-label_${E}`},children:[{tag:'span',attributes:{id:`cke-editor__aria-label_${E}`,class:'cke-voice-label'},children:[S('Rich Text Editor')]},{tag:'div',attributes:{class:'ck-editor__top ck-reset_all',role:'presentation'},children:this.top},{tag:'div',attributes:{class:'ck-editor__main',role:'presentation'},children:this.main}]})}}u.a=T},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T){super(T),this.body=this.createCollection()}init(){return Promise.resolve().then(()=>this._renderBodyCollection()).then(()=>super.init())}destroy(){return this._bodyCollectionContainer.remove(),super.destroy()}_renderBodyCollection(){const T=this._bodyCollectionContainer=new w.a({tag:'div',attributes:{class:['ck-body','ck-rounded-corners','ck-reset_all']},children:this.body}).render();document.body.appendChild(T)}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(){super();const T=this.bindTemplate;this.set('content'),this.set('viewBox','0 0 20 20'),this.template=new w.a({tag:'svg',ns:'http://www.w3.org/2000/svg',attributes:{class:'ck-icon',viewBox:T.to('viewBox')}}),this.on('change:content',(P,S,E)=>{for(const O=new DOMParser().parseFromString(E.trim(),'image/svg+xml').firstChild;0{this.focusTracker.add(O.element)}),this.items.on('remove',(E,O)=>{this.focusTracker.remove(O.element)})}init(){return this.keystrokes.listenTo(this.element),super.init()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}u.a=S},function(r,u,f){'use strict';var h=f(45),w=f(4),C=f(31);class T{constructor(P,S){S&&f.i(h.a)(this,S),P&&this.set(P)}}u.a=T,f.i(w.a)(T,C.a)},function(r,u){'use strict';u.a=function({origin:w,originKeystrokeHandler:C,originFocusTracker:T,toolbar:P}){T.add(P.element),C.set('Alt+F10',(S,E)=>{T.isFocused&&!P.focusTracker.isFocused&&(P.focus(),E())}),P.keystrokes.set('Esc',(S,E)=>{P.focusTracker.isFocused&&(w.focus(),E())})}},function(r,u,f){'use strict';var h=f(65),w=f(6),C=f(187),T=f(191);const P=f.i(T.a)('px');class S extends C.a{constructor(E){super(E);const O=this.bindTemplate;this.set('isActive',!1),this.set('isSticky',!1),this.set('limiterElement',null),this.set('limiterOffset',50),this.set('_marginLeft',null),this.set('_isStickyToTheLimiter',!1),w.a.extend(this.template,{attributes:{class:[O.if('isSticky','ck-toolbar_sticky'),O.if('_isStickyToTheLimiter','ck-toolbar_sticky_bottom-limit')],style:{width:O.to('isSticky',(R)=>{return R?P(this._elementPlaceholder.getBoundingClientRect().width):null}),bottom:O.to('_isStickyToTheLimiter',(R)=>{return R?P(this.limiterOffset):null}),marginLeft:O.to('_marginLeft')}}}),this._elementPlaceholder=new w.a({tag:'div',attributes:{class:['ck-toolbar__placeholder'],style:{display:O.to('isSticky',(R)=>R?'block':'none'),height:O.to('isSticky',(R)=>{return R?P(this._toolbarRect.height):null})}}}).render()}init(){super.init(),this.element.parentNode.insertBefore(this._elementPlaceholder,this.element),this.listenTo(h.a.window,'scroll',()=>{this._checkIfShouldBeSticky()}),this.listenTo(this,'change:isActive',()=>{this._checkIfShouldBeSticky()})}destroy(){return super.destroy().then(()=>{this._elementPlaceholder.remove()})}_checkIfShouldBeSticky(){const E=this._limiterRect=this.limiterElement.getBoundingClientRect(),O=this._toolbarRect=this.element.getBoundingClientRect();this.isSticky=this.isActive&&0>E.top&&this._toolbarRect.height+this.limiterOffset{const P=T.batch.deltas[T.batch.deltas.length-1],S=P.baseVersion+P.operations.length,E=Array.from(this.editor.document.history.getDeltas(S)).filter((O)=>{return!this._createdBatches.has(O.batch)});this._restoreSelection(T.selection.ranges,T.selection.isBackward,E),this._redo(T.batch)}),this.refreshState()}_redo(T){const P=this.editor.document,S=P.batch();this._createdBatches.add(S);const E=T.deltas.slice();E.reverse();for(let O of E){const R=O.baseVersion+O.operations.length;let V=[O.getReversed()];for(let F of P.history.getDeltas(R))this._createdBatches.has(F.batch)||(V=f.i(w.a)(V,[F],!0).deltasA);for(let F of V){F.baseVersion=P.version,S.addDelta(F);for(let I of F.operations)P.applyOperation(I)}}}}u.a=C},function(r,u,f){'use strict';var h=f(121),w=f(108);class C extends h.a{_doExecute(T=null){let P=T?this._stack.findIndex((E)=>E.batch==T):this._stack.length-1;const S=this._stack.splice(P,1)[0];this.editor.document.enqueueChanges(()=>{const E=this._undo(S.batch),O=this.editor.document.history.getDeltas(S.batch.baseVersion);this._restoreSelection(S.selection.ranges,S.selection.isBackward,O),this.fire('revert',S.batch,E)}),this.refreshState()}_getItemIndexFromBaseVersion(T){for(let P=0;P{this._batchRegistry.has(O)||'transparent'==O.type||(this._redoCommand._createdBatches.has(O)?this._undoCommand.addBatch(O):!this._undoCommand._createdBatches.has(O)&&(this._undoCommand.addBatch(O),this._redoCommand.clearStack()),this._batchRegistry.add(O))},{priority:'highest'}),this.listenTo(this._undoCommand,'revert',(P,S,E)=>{this._redoCommand.addBatch(E)})}}u.a=T},function(r,u,f){'use strict';var h=f(99);u.a=class{constructor(C,T){this._config={},T&&this.define(T),C&&this._setObjectToTarget(this._config,C)}set(C,T){this._setToTarget(this._config,C,T)}define(C,T){this._setToTarget(this._config,C,T,!0)}get(C){return this._getFromSource(this._config,C)}_setToTarget(C,T,P,S=!1){if(f.i(h.a)(T))return void this._setObjectToTarget(C,T,S);const E=T.split('.');T=E.pop();for(let O of E)f.i(h.a)(C[O])||(C[O]={}),C=C[O];return f.i(h.a)(P)?(f.i(h.a)(C[T])||(C[T]={}),C=C[T],void this._setObjectToTarget(C,P,S)):void(S&&'undefined'!=typeof C[T]||(C[T]=P))}_getFromSource(C,T){const P=T.split('.');T=P.pop();for(let S of P){if(!f.i(h.a)(C[S])){C=null;break}C=C[S]}return C?C[T]:void 0}_setObjectToTarget(C,T,P){Object.keys(T).forEach((S)=>{this._setToTarget(C,S,T[S],P)})}}},function(r,u){'use strict';u.a=function(w,C){function T(){O&&(S.push(O),O=null)}function P(R){return O&&O.type==R}const S=[];let E=0,O;return w.forEach((R)=>{'equal'==R?(T(),E++):'insert'==R?(P('insert')?O.values.push(C[E]):(T(),O={type:'insert',index:E,values:[C[E]]}),E++):P('delete')?O.howMany++:(T(),O={type:'delete',index:E,howMany:1})}),T(),S}},function(r,u,f){'use strict';var w=f(190);u.a=function(C,T){const P=f.i(w.a)(C),S=f.i(w.a)(T);let E=0;for(;P[E]==S[E]&&P[E];)E++;return 0==E?null:P[E-1]}},function(r,u){'use strict';u.a=function(w){return w instanceof HTMLTextAreaElement?w.value:w.innerHTML}},function(r,u,f){'use strict';var w=f(65);u.a=function(C){for(;C&&'html'!=C.tagName.toLowerCase();){if('static'!=w.a.window.getComputedStyle(C).position)return C;C=C.parentElement}return null}},function(r,u){'use strict';u.a=function(w){let C=0;for(;w.previousSibling;)w=w.previousSibling,C++;return C}},function(r,u){'use strict';u.a=function(w,C,T){w.insertBefore(T,w.childNodes[C]||null)}},function(r,u){'use strict';u.a=function(w){return'[object Range]'==Object.prototype.toString.apply(w)}},function(r,u,f){'use strict';function w(O,R,V){const{left:F,top:I,name:N}=O(R,V);return[N,V.clone().moveTo(F,I)]}function C(O,R,V,F,I){let N=0,M=0,D,z;const $=V.getArea();return O.some((q)=>{function U(){M=W,N=Y,D=H,z=K}const[K,H]=w(q,R,V);let Y,W;if(F)if(I){const Z=F.getIntersection(I);Y=Z?Z.getIntersectionArea(H):0}else Y=F.getIntersectionArea(H);return I&&(W=I.getIntersectionArea(H)),I&&!F?W>M&&U():!I&&F?Y>N&&U():W>M&&Y>=N?U():W>=M&&Y>N&&U(),Y===$}),D?[z,D]:null}function T({left:O,top:R}){const{scrollX:V,scrollY:F}=P.a.window;return{left:O+V,top:R+F}}var P=f(65),S=f(426),E=f(421);u.a=function({element:O,target:R,positions:V,limiter:F,fitInViewport:I}){const N=f.i(E.a)(O.parentElement),M=new S.a(O),D=new S.a(R);let z,$;if(!F&&!I)[$,z]=w(V[0],D,M);else{const K=F&&new S.a(F),H=I&&S.a.getViewportRect();[$,z]=C(V,D,M,K,H)||w(V[0],D,M)}let{left:q,top:U}=T(z);if(N){const K=T(new S.a(N)),H=P.a.window.getComputedStyle(N);q-=K.left,U-=K.top,q+=N.scrollLeft,U+=N.scrollTop,q-=parseInt(H.borderLeftWidth,10),U-=parseInt(H.borderTopWidth,10)}return{left:q,top:U,name:$}}},function(r,u,f){'use strict';var h=f(65),w=f(424),C=f(517);const T=['top','right','bottom','left','width','height'];class P{constructor(S){(f.i(C.a)(S)||f.i(w.a)(S))&&(S=S.getBoundingClientRect()),T.forEach((E)=>this[E]=S[E])}clone(){return new P(this)}moveTo(S,E){return this.top=E,this.right=S+this.width,this.bottom=E+this.height,this.left=S,this}moveBy(S,E){return this.top+=E,this.right+=S,this.left+=S,this.bottom+=E,this}getIntersection(S){const E={top:_Mathmax(this.top,S.top),right:_Mathmin(this.right,S.right),bottom:_Mathmin(this.bottom,S.bottom),left:_Mathmax(this.left,S.left)};return E.width=E.right-E.left,E.height=E.bottom-E.top,0>E.width||0>E.height?null:new P(E)}getIntersectionArea(S){const E=this.getIntersection(S);return E?E.getArea():0}getArea(){return this.width*this.height}static getViewportRect(){const{innerWidth:S,innerHeight:E}=h.a.window;return new P({top:0,right:S,bottom:E,left:0,width:S,height:E})}}u.a=P},function(r,u){'use strict';u.a=function(w){const C=w.parentNode;C&&C.removeChild(w)}},function(r,u){'use strict';u.a=function(w,C){w instanceof HTMLTextAreaElement&&(w.value=C),w.innerHTML=C}},function(r,u){'use strict';u.a=class{constructor(){this._replacedElements=[]}replace(w,C){this._replacedElements.push({element:w,newElement:C}),w.style.display='none',C&&w.parentNode.insertBefore(C,w.nextSibling)}restore(){this._replacedElements.forEach(({element:w,newElement:C})=>{w.style.display='',C&&C.remove()}),this._replacedElements=[]}}},function(r,u){'use strict';const w=navigator.userAgent.toLowerCase(),C={mac:function(T){return-1=C?w:C)),w}},function(r,u,f){'use strict';var w=f(15),C=Object.create;u.a=function(T){return f.i(w.a)(T)?C(T):{}}},function(r,u,f){'use strict';var w=f(16),C=f(527);u.a=function(T,P,S,E){var O=T.length;for(S=f.i(w.a)(S),0>S&&(S=-S>O?0:O+S),E=void 0===E||E>O?O:f.i(w.a)(E),0>E&&(E+=O),E=S>E?0:f.i(C.a)(E);ST?P:0,f.i(w.a)(T,P)?C[T]:void 0}},function(r,u,f){'use strict';var w=f(127);u.a=function(C){return function(T){return f.i(w.a)(T,C)}}},function(r,u,f){'use strict';var w=f(68),C=f(89),T=f(38),P=f(55),S=f(15),E=f(56);u.a=function(O,R,V,F){R=f.i(P.a)(R,O)?[R]:f.i(C.a)(R);for(var I=-1,N=R.length,D=O,z;null!=D&&++IT||O&&R&&F&&!V&&!I||S&&R&&F||!P&&F||!E)return 1;if(!S&&!O&&!I&&CO?void 0:R,O=1),P=Object(P);++EE)return!1;var O=S.length-1;return E==O?S.pop():T.call(S,E,1),!0}},function(r,u,f){'use strict';var w=f(86);u.a=function(C){var T=this.__data__,P=f.i(w.a)(T,C);return 0>P?void 0:T[P][1]}},function(r,u,f){'use strict';var w=f(86);u.a=function(C){return-1S?P.push([C,T]):P[S][1]=T,this}},function(r,u,f){'use strict';var w=f(433),C=f(82),T=f(192);u.a=function(){this.__data__={hash:new w.a,map:new(T.a||C.a),string:new w.a}}},function(r,u,f){'use strict';var w=f(90);u.a=function(C){return f.i(w.a)(this,C)['delete'](C)}},function(r,u,f){'use strict';var w=f(90);u.a=function(C){return f.i(w.a)(this,C).get(C)}},function(r,u,f){'use strict';var w=f(90);u.a=function(C){return f.i(w.a)(this,C).has(C)}},function(r,u,f){'use strict';var w=f(90);u.a=function(C,T){return f.i(w.a)(this,C).set(C,T),this}},function(r,u,f){'use strict';var w=f(127),C=f(37);u.a=function(T,P){return 1==P.length?T:f.i(w.a)(T,f.i(C.a)(P,0,-1))}},function(r,u){'use strict';u.a=function(C){return this.__data__.set(C,'__lodash_hash_undefined__'),this}},function(r,u){'use strict';u.a=function(w){return this.__data__.has(w)}},function(r,u){'use strict';u.a=function(w){var C=-1,T=Array(w.size);return w.forEach(function(P){T[++C]=[P,P]}),T}},function(r,u,f){'use strict';var w=f(82);u.a=function(){this.__data__=new w.a}},function(r,u){'use strict';u.a=function(w){return this.__data__['delete'](w)}},function(r,u){'use strict';u.a=function(w){return this.__data__.get(w)}},function(r,u){'use strict';u.a=function(w){return this.__data__.has(w)}},function(r,u,f){'use strict';var w=f(82),C=f(122);u.a=function(P,S){var E=this.__data__;return E instanceof w.a&&E.__data__.length==200&&(E=this.__data__=new C.a(E.__data__)),E.set(P,S),this}},function(r,u,f){'use strict';var h=f(521),w=f(529),C=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,T=/\\(\\)?/g,P=f.i(h.a)(function(S){var E=[];return f.i(w.a)(S).replace(C,function(O,R,V,F){E.push(V?F.replace(T,'$1'):R||O)}),E});u.a=P},function(r,u,f){'use strict';var h=f(212),w=f(213),C=f(214),T=f(215),P=f(216),S=f(217),E=f(144),O=f(145),R=f(218),V=f(219),F=f(220),I=f(221),N=f(222),M=f(223),D=f(224),z=f(225),$=f(226),q=f(227),U=f(146),K=f(230),H=f(231),Y=f(232),W=f(233),Z=f(234),G=f(236),J=f(19),X=f(237),Q=f(238),ee=f(239),te=f(150),ae=f(240),ne=f(241),oe=f(242),ie=f(243),re=f(244),se=f(245),le=f(246),de=f(247),ce=f(248),ue=f(249),pe=f(250),me=f(251),ge=f(252),fe=f(253),he=f(254),be=f(255),_e=f(256),ke=f(257),ye=f(258),we=f(260),ve=f(261),xe=f(262),Ce=f(263),Ae=f(264),Te=f(265),Pe=f(100),Se=f(151),Ee=f(266),Oe=f(267),Re=f(268),Ve=f(269),Fe=f(270),Ie=f(271),Be=f(272),Ne=f(273);u.a={chunk:h.a,compact:w.a,concat:C.a,difference:T.a,differenceBy:P.a,differenceWith:S.a,drop:E.a,dropRight:O.a,dropRightWhile:R.a,dropWhile:V.a,fill:F.a,findIndex:I.a,findLastIndex:N.a,first:M.a,flatten:D.a,flattenDeep:z.a,flattenDepth:$.a,fromPairs:q.a,head:U.a,indexOf:K.a,initial:H.a,intersection:Y.a,intersectionBy:W.a,intersectionWith:Z.a,join:G.a,last:J.a,lastIndexOf:X.a,nth:Q.a,pull:ee.a,pullAll:te.a,pullAllBy:ae.a,pullAllWith:ne.a,pullAt:oe.a,remove:ie.a,reverse:re.a,slice:se.a,sortedIndex:le.a,sortedIndexBy:de.a,sortedIndexOf:ce.a,sortedLastIndex:ue.a,sortedLastIndexBy:pe.a,sortedLastIndexOf:me.a,sortedUniq:ge.a,sortedUniqBy:fe.a,tail:he.a,take:be.a,takeRight:_e.a,takeRightWhile:ke.a,takeWhile:ye.a,union:we.a,unionBy:ve.a,unionWith:xe.a,uniq:Ce.a,uniqBy:Ae.a,uniqWith:Te.a,unzip:Pe.a,unzipWith:Se.a,without:Ee.a,xor:Oe.a,xorBy:Re.a,xorWith:Ve.a,zip:Fe.a,zipObject:Ie.a,zipObjectDeep:Be.a,zipWith:Ne.a}},function(r,u,f){'use strict';var h=f(212),w=f(213),C=f(214),T=f(215),P=f(216),S=f(217),E=f(144),O=f(145),R=f(218),V=f(219),F=f(220),I=f(221),N=f(222),M=f(223),D=f(224),z=f(225),$=f(226),q=f(227),U=f(146),K=f(230),H=f(231),Y=f(232),W=f(233),Z=f(234),G=f(236),J=f(19),X=f(237),Q=f(238),ee=f(239),te=f(150),ae=f(240),ne=f(241),oe=f(242),ie=f(243),re=f(244),se=f(245),le=f(246),de=f(247),ce=f(248),ue=f(249),pe=f(250),me=f(251),ge=f(252),fe=f(253),he=f(254),be=f(255),_e=f(256),ke=f(257),ye=f(258),we=f(260),ve=f(261),xe=f(262),Ce=f(263),Ae=f(264),Te=f(265),Pe=f(100),Se=f(151),Ee=f(266),Oe=f(267),Re=f(268),Ve=f(269),Fe=f(270),Ie=f(271),Be=f(272),Ne=f(273),Me=f(510);f.d(u,'a',function(){return Me.a})},function(r,u,f){'use strict';var h=f(68),w=f(139),C=f(470),T=f(97),P=f(93),S=f(520),E=Object.prototype,O=E.propertyIsEnumerable,R=!O.call({valueOf:1},'valueOf'),V=f.i(C.a)(function(F,I){if(R||f.i(P.a)(I)||f.i(T.a)(I))return void f.i(w.a)(I,f.i(S.a)(I),F);for(var N in I)f.i(h.a)(F,N,I[N])});u.a=V},function(r,u,f){'use strict';var w=f(197);u.a=function(C,T){return f.i(w.a)(C,!0,!0,T)}},function(r,u){'use strict';u.a=function(w){return function(){return w}}},function(r,u,f){'use strict';var w=f(447),C=f(478);u.a=function(T,P){return null!=T&&f.i(C.a)(T,P,w.a)}},function(r,u,f){'use strict';(function(h){var w=f(514),C=f(30),T={'function':!0,object:!0},P=T[typeof exports]&&exports&&!exports.nodeType?exports:void 0,S=T[typeof h]&&h&&!h.nodeType?h:void 0,E=S&&S.exports===P?P:void 0,O=E?C.a.Buffer:void 0,R=O?function(V){return V instanceof O}:f.i(w.a)(!1);u.a=R}).call(u,f(158)(r))},function(r,u,f){'use strict';var w=f(46),C=f(99);u.a=function(T){return!!T&&1===T.nodeType&&f.i(w.a)(T)&&!f.i(C.a)(T)}},function(r,u,f){'use strict';var w=f(130);u.a=function(C,T){return f.i(w.a)(C,T)}},function(r,u,f){'use strict';var w=f(98),C=f(46),Q={};Q['[object Float32Array]']=Q['[object Float64Array]']=Q['[object Int8Array]']=Q['[object Int16Array]']=Q['[object Int32Array]']=Q['[object Uint8Array]']=Q['[object Uint8ClampedArray]']=Q['[object Uint16Array]']=Q['[object Uint32Array]']=!0,Q['[object Arguments]']=Q['[object Array]']=Q['[object ArrayBuffer]']=Q['[object Boolean]']=Q['[object DataView]']=Q['[object Date]']=Q['[object Error]']=Q['[object Function]']=Q['[object Map]']=Q['[object Number]']=Q['[object Object]']=Q['[object RegExp]']=Q['[object Set]']=Q['[object String]']=Q['[object WeakMap]']=!1;var ee=Object.prototype,te=ee.toString;u.a=function(ae){return f.i(C.a)(ae)&&f.i(w.a)(ae.length)&&!!Q[te.call(ae)]}},function(r,u,f){'use strict';var w=f(452),C=f(207),T=f(38),P=f(93),S=Object.prototype,E=S.hasOwnProperty;u.a=function(O){for(var R=-1,V=f.i(P.a)(O),F=f.i(w.a)(O),I=F.length,N=f.i(C.a)(O),D=N||[],z=D.length,$;++RP?-1:1;return S*1.7976931348623157e308}return P===P?P:0}},function(r,u,f){'use strict';var w=f(443),C=f(16);u.a=function(P){return P?f.i(w.a)(f.i(C.a)(P),0,4294967295):0}},function(r,u,f){'use strict';var h=f(472),w=f(70),C=f.i(h.a)(w.a);u.a=C},function(r,u,f){'use strict';var w=f(459);u.a=function(C){return null==C?'':f.i(w.a)(C)}},function(r,u,f){'use strict';var h=f(534);u.a=class{constructor(C){this.lang=C||'en',this.t=(...T)=>this._t(...T)}_t(C,T){let P=f.i(h.a)(this.lang,C);return T&&(P=P.replace(/\%(\d+)/g,(S,E)=>{return E{$&&$.hasClass(F.d)&&$.removeClass(F.d);const Y=H.viewSelection,W=Y.getSelectedElement();W&&f.i(F.b)(W)&&(Y.setFake(!0,{label:f.i(F.e)(W)}),W.addClass(F.d),$=W)},{priority:'low'}),z.addObserver(P.a),this.listenTo(z,'mousedown',(...q)=>this._onMousedown(...q)),this.listenTo(z,'keydown',(...q)=>this._onKeydown(...q),{priority:'high'})}_onMousedown(z,$){const q=this.editor,U=q.editing.view;let K=$.target;if(C(K))return;if(!f.i(F.b)(K)&&(K=K.findAncestor(F.b),!K))return;$.preventDefault(),U.isFocused||U.focus();const H=q.editing.mapper.toModelElement(K);q.document.enqueueChanges(()=>{this._setSelectionOverElement(H)})}_onKeydown(z,$){const q=$.keyCode,U=q==I.b.delete||q==I.b.arrowdown||q==I.b.arrowright;(w(q)&&this._handleDelete(U)||h(q)&&this._handleArrowKeys(U))&&($.preventDefault(),z.stop())}_handleDelete(z){const $=this.editor.document,q=$.selection;if(!q.isCollapsed)return;const U=this._getObjectElementNextToSelection(z);if(U)return $.enqueueChanges(()=>{const K=q.anchor.parent;if(K.isEmpty){const H=$.batch();H.remove(K)}this._setSelectionOverElement(U)}),!0}_handleArrowKeys(z){const $=this.editor.document,q=$.schema,U=$.selection,K=U.getSelectedElement();if(K&&q.objects.has(K.name)){const Y=z?U.getLastPosition():U.getFirstPosition(),W=$.getNearestSelectionRange(Y,z?'forward':'backward');return W&&$.enqueueChanges(()=>{U.setRanges([W])}),!0}if(!U.isCollapsed)return;const H=this._getObjectElementNextToSelection(z);if(H instanceof O.a&&$.schema.objects.has(H.name))return $.enqueueChanges(()=>{this._setSelectionOverElement(H)}),!0}_setSelectionOverElement(z){this.editor.document.selection.setRanges([S.a.createOn(z)])}_getObjectElementNextToSelection(z){const $=this.editor.document,q=$.schema,U=$.selection,K=this.editor.data,H=E.a.createFromSelection(U);K.modifySelection(H,{direction:z?'forward':'backward'});const Y=z?H.focus.nodeBefore:H.focus.nodeAfter;return Y instanceof O.a&&q.objects.has(Y.name)?Y:null}}u.a=D}])}); +var _Mathpow=Math.pow,_NumberPOSITIVE_INFINITY=Number.POSITIVE_INFINITY,_Mathfloor=Math.floor,_StringfromCharCode=String.fromCharCode,_Mathmax=Math.max,_Mathmin=Math.min;(function(u,f){if('object'==typeof exports&&'object'==typeof module)module.exports=f();else if('function'==typeof define&&define.amd)define([],f);else{var h=f();for(var w in h)('object'==typeof exports?exports:u)[w]=h[w]}})(this,function(){return function(r){function u(h){if(f[h])return f[h].exports;var w=f[h]={i:h,l:!1,exports:{}};return r[h].call(w.exports,w,w.exports,u),w.l=!0,w.exports}var f={};return u.m=r,u.c=f,u.i=function(h){return h},u.d=function(h,w,C){u.o(h,w)||Object.defineProperty(h,w,{configurable:!1,enumerable:!0,get:C})},u.n=function(h){var w=h&&h.__esModule?function(){return h['default']}:function(){return h};return u.d(w,'a',w),w},u.o=function(h,w){return Object.prototype.hasOwnProperty.call(h,w)},u.p='',u(u.s=331)}([function(r,u){'use strict';class h extends Error{constructor(w,C){C&&(w+=' '+JSON.stringify(C)),super(w),this.name='CKEditorError',this.data=C}static isCKEditorError(w){return w instanceof h}}u.a=h},function(r,u,f){'use strict';var h=f(37),w=f(19),C=f(65),T=f(0),P=f(24);class E{constructor(S,O){if(!S.is('element')&&!S.is('documentFragment'))throw new T.a('model-position-root-invalid: Position root invalid.');if(!(O instanceof Array)||0===O.length)throw new T.a('model-position-path-incorrect: Position path must be an Array with at least one item.',{path:O});O=S.getPath().concat(O),S=S.root,this.root=S,this.path=O}get offset(){return f.i(w.a)(this.path)}set offset(S){this.path[this.path.length-1]=S}get parent(){let S=this.root;for(let O=0;OR?0:R,O}isAfter(S){return'after'==this.compareWith(S)}isBefore(S){return'before'==this.compareWith(S)}isEqual(S){return'same'==this.compareWith(S)}isTouching(S){let O=null,R=null,V=this.compareWith(S);switch(V){case'same':return!0;case'before':O=E.createFromPosition(this),R=E.createFromPosition(S);break;case'after':O=E.createFromPosition(S),R=E.createFromPosition(this);break;default:return!1;}for(let F=O.parent;O.path.length+R.path.length;){if(O.isEqual(R))return!0;if(O.path.length>R.path.length){if(O.offset!==F.maxOffset)return!1;O.path=O.path.slice(0,-1),F=F.parent,O.offset++}else{if(0!==R.offset)return!1;R.path=R.path.slice(0,-1)}}}_getTransformedByDeletion(S,O){let R=E.createFromPosition(this);if(this.root!=S.root)return R;if('same'==f.i(C.a)(S.getParentPath(),this.getParentPath())){if(S.offsetthis.offset)return null;R.offset-=O}}else if('prefix'==f.i(C.a)(S.getParentPath(),this.getParentPath())){const V=S.path.length-1;if(S.offset<=this.path[V]){if(S.offset+O>this.path[V])return null;R.path[V]-=O}}return R}_getTransformedByInsertion(S,O,R){let V=E.createFromPosition(this);if(this.root!=S.root)return V;if('same'==f.i(C.a)(S.getParentPath(),this.getParentPath()))(S.offsetE+1;){let R=O.maxOffset-S.offset;0!=R&&P.push(new T(S,S.getShiftedBy(R))),S.path=S.path.slice(0,-1),S.offset++,O=O.parent}for(;S.path.length<=this.end.path.length;){let R=this.end.path[S.path.length-1],V=R-S.offset;0!=V&&P.push(new T(S,S.getShiftedBy(V))),S.offset=R,S.path.push(0)}return P}getWalker(P={}){return P.boundaries=this,new w.a(P)}*getItems(P={}){P.boundaries=this,P.ignoreElementEnd=!0;const E=new w.a(P);for(let S of E)yield S.item}*getPositions(P={}){P.boundaries=this;const E=new w.a(P);yield E.position;for(let S of E)yield S.nextPosition}getTransformedByDelta(P){let E=[T.createFromRange(this)];const S=new Set(['insert','move','remove','reinsert']);for(let O of P.operations)if(S.has(O.type))for(let R=0;RR.start.isAfter(V.start)?1:-1);const S=P.indexOf(E),O=new this(E.start,E.end);for(let R=S-1;0<=R&&P[R].end.isEqual(O.start);R++)O.start=h.a.createFromPosition(P[R].start);for(let R=S+1;R{Object.getOwnPropertyNames(T).concat(Object.getOwnPropertySymbols(T)).forEach((P)=>{if(!(P in w.prototype)){const E=Object.getOwnPropertyDescriptor(T,P);E.enumerable=!1,Object.defineProperty(w.prototype,P,E)}})})}},function(r,u,f){'use strict';function h(S){return'string'==typeof S?[new T.a(S)]:(f.i(P.a)(S)||(S=[S]),Array.from(S).map((O)=>'string'==typeof O?new T.a(O):O))}var w=f(59),C=f(74),T=f(24),P=f(48);class E extends w.a{constructor(S,O,R){super(O),this.name=S,this._children=new C.a,R&&this.insertChildren(0,R)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(S,O=null){return O?'element'==S&&O==this.name:'element'==S||S==this.name}getChild(S){return this._children.getNode(S)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(S){return this._children.getNodeIndex(S)}getChildStartOffset(S){return this._children.getNodeStartOffset(S)}clone(S=!1){const O=S?Array.from(this._children).map((R)=>R.clone(!0)):null;return new E(this.name,this.getAttributes(),O)}offsetToIndex(S){return this._children.offsetToIndex(S)}appendChildren(S){this.insertChildren(this.childCount,S)}insertChildren(S,O){O=h(O);for(let R of O)R.parent=this;this._children.insertNodes(S,O)}removeChildren(S,O=1){const R=this._children.removeNodes(S,O);for(let V of R)V.parent=null;return R}getNodeByPath(S){let O=this;for(const R of S)O=O.getChild(R);return O}toJSON(){let S=super.toJSON();if(S.name=this.name,0{return ce instanceof ie?ce.getValue(de):ce})}function C(le,de,{node:ce}){let ue=w(le,ce);ue=1==le.length&&le[0]instanceof se?ue[0]:ue.reduce(M,''),z(ue)?de.remove():de.set(ue)}function T(le){return{set(de){le.textContent=de},remove(){le.textContent=''}}}function P(le,de,ce){return{set(ue){le.setAttributeNS(ce,de,ue)},remove(){le.removeAttributeNS(ce,de)}}}function E(le,de){return{set(ce){le.style[de]=ce},remove(){le.style[de]=null}}}function S(le){const de=f.i(ee.a)(le,(ce)=>{if(ce&&(ce instanceof ie||$(ce)||U(ce)||K(ce)))return ce});return de}function O(le){if('string'==typeof le?le=F(le):le.text&&I(le),le.on&&(le.eventListeners=V(le.on),delete le.on),!le.text){le.attributes&&R(le.attributes);const de=new J.a;if(le.children)if(K(le.children))de.add(le.children);else for(let ce of le.children)$(ce)||U(ce)?de.add(ce):de.add(new oe(ce));le.children=de}return le}function R(le){for(let de in le)le[de].value&&(le[de].value=[].concat(le[de].value)),N(le,de)}function V(le){for(let de in le)N(le,de);return le}function F(le){return{text:[le]}}function I(le){Array.isArray(le.text)||(le.text=[le.text])}function N(le,de){Array.isArray(le[de])||(le[de]=[le[de]])}function M(le,de){return z(de)?le:z(le)?de:`${le} ${de}`}function D(le,de){for(let ce in de)le[ce]?le[ce].push(...de[ce]):le[ce]=de[ce]}function q(le,de){if(de.attributes&&(!le.attributes&&(le.attributes={}),D(le.attributes,de.attributes)),de.eventListeners&&(!le.eventListeners&&(le.eventListeners={}),D(le.eventListeners,de.eventListeners)),de.text&&le.text.push(...de.text),de.children&&de.children.length){if(le.children.length!=de.children.length)throw new Y.a('ui-template-extend-children-mismatch: The number of children in extended definition does not match.');let ce=0;for(let ue of de.children)q(le.children.get(ce++),ue)}}function z(le){return!le&&0!==le}function U(le){return le instanceof Q.a}function $(le){return le instanceof oe}function K(le){return le instanceof X.a}function W(){return{children:[],bindings:[],attributes:{}}}function H(le){return'class'==le||'style'==le}var Y=f(0),G=f(4),Z=f(7),J=f(80),Q=f(9),X=f(120),ee=f(524),te=f(14),ae=f(40);class oe{constructor(le){Object.assign(this,O(S(le))),this._isRendered=!1,this._revertData=null}render(){const le=this._renderNode({intoFragment:!0});return this._isRendered=!0,le}apply(le){return this._revertData=W(),this._renderNode({node:le,isApplying:!0,revertData:this._revertData}),le}revert(le){if(!this._revertData)throw new Y.a('ui-template-revert-not-applied: Attempting reverting a template which has not been applied yet.');this._revertTemplateFromNode(le,this._revertData)}static bind(le,de){return{to(ce,ue){return new re({eventNameOrFunction:ce,attribute:ce,observable:le,emitter:de,callback:ue})},if(ce,ue,me){return new se({observable:le,emitter:de,attribute:ce,valueIfTrue:ue,callback:me})}}}static extend(le,de){le._isRendered&&ae.a.warn('template-extend-render: Attempting to extend a template which has already been rendered.'),q(le,O(S(de)))}_renderNode(le){let de;if(de=le.node?this.tag&&this.text:this.tag?this.text:!this.text,de)throw new Y.a('ui-template-wrong-syntax: Node definition must have either "tag" or "text" when rendering new Node.');return this.text?this._renderText(le):this._renderElement(le)}_renderElement(le){let de=le.node;return de||(de=le.node=document.createElementNS(this.ns||'http://www.w3.org/1999/xhtml',this.tag)),this._renderAttributes(le),this._renderElementChildren(le),this._setUpListeners(le),de}_renderText(le){let de=le.node;return de?le.revertData.text=de.textContent:de=le.node=document.createTextNode(''),h(this.text)?this._bindToObservable({schema:this.text,updater:T(de),data:le}):de.textContent=this.text.join(''),de}_renderAttributes(le){let de,ce,ue,me;if(this.attributes){const pe=le.node,ge=le.revertData;for(de in this.attributes)if(ue=pe.getAttribute(de),ce=this.attributes[de],ge&&(ge.attributes[de]=ue),me=f.i(te.a)(ce[0])&&ce[0].ns?ce[0].ns:null,h(ce)){const fe=me?ce[0].value:ce;ge&&H(de)&&fe.unshift(ue),this._bindToObservable({schema:fe,updater:P(pe,de,me),data:le})}else'style'==de&&'string'!=typeof ce[0]?this._renderStyleAttribute(ce[0],le):(ge&&ue&&H(de)&&ce.unshift(ue),ce=ce.map((fe)=>fe?fe.value||fe:fe).reduce((fe,he)=>fe.concat(he),[]).reduce(M,''),z(ce)||pe.setAttributeNS(me,de,ce))}}_renderStyleAttribute(le,de){const ce=de.node;for(let ue in le){const me=le[ue];h(me)?this._bindToObservable({schema:[me],updater:E(ce,ue),data:de}):ce.style[ue]=me}}_renderElementChildren(le){const de=le.node,ce=le.intoFragment?document.createDocumentFragment():de,ue=le.isApplying;let me=0;for(let pe of this.children)if(K(pe)){if(!ue){pe.setParent(de);for(let ge of pe)ce.appendChild(ge.element)}}else if(U(pe))ue||ce.appendChild(pe.element);else if(ue){const ge=le.revertData,fe=W();ge.children.push(fe),pe._renderNode({node:ce.childNodes[me++],isApplying:!0,revertData:fe})}else ce.appendChild(pe.render());le.intoFragment&&de.appendChild(ce)}_setUpListeners(le){if(this.eventListeners)for(let de in this.eventListeners){const ce=this.eventListeners[de].map((ue)=>{const[me,pe]=de.split('@');return ue.activateDomEventListener(me,pe,le)});le.revertData&&le.revertData.bindings.push(ce)}}_bindToObservable({schema:le,updater:de,data:ce}){const ue=ce.revertData;C(le,de,ce);const me=le.filter((pe)=>!z(pe)).filter((pe)=>pe.observable).map((pe)=>pe.activateAttributeListener(le,de,ce));ue&&ue.bindings.push(me)}_revertTemplateFromNode(le,de){for(let ce of de.bindings)for(let ue of ce)ue();if(de.text)return void(le.textContent=de.text);for(let ce in de.attributes){const ue=de.attributes[ce];null===ue?le.removeAttribute(ce):le.setAttribute(ce,ue)}for(let ce=0;ceC(le,de,ce);return this.emitter.listenTo(this.observable,'change:'+this.attribute,ue),()=>{this.emitter.stopListening(this.observable,'change:'+this.attribute,ue)}}}class re extends ie{activateDomEventListener(le,de,ce){const ue=(me,pe)=>{(!de||pe.target.matches(de))&&('function'==typeof this.eventNameOrFunction?this.eventNameOrFunction(pe):this.observable.fire(this.eventNameOrFunction,pe))};return this.emitter.listenTo(ce.node,le,ue),()=>{this.emitter.stopListening(ce.node,le,ue)}}}class se extends ie{getValue(le){const de=super.getValue(le);return!z(de)&&(this.valueIfTrue||!0)}}},function(r,u,f){'use strict';function w(q,z){q[M]||(q[M]=z||f.i(F.a)())}function C(q){return q[M]}function T(q){return q._events||Object.defineProperty(q,'_events',{value:{}}),q._events}function P(){return{callbacks:[],childEvents:[]}}function E(q,z){const U=T(q);if(U[z])return;let $=z,K=null;const W=[];for(;''!==$&&!U[$];)U[$]=P(),W.push(U[$]),K&&U[$].childEvents.push(K),K=$,$=$.substr(0,$.lastIndexOf(':'));if(''!==$){for(let H of W)H.callbacks=U[$].callbacks.slice();U[$].childEvents.push(K)}}function S(q,z){const U=T(q)[z];if(!U)return[];let $=[U.callbacks];for(let K=0,W;K{this._delegations||(this._delegations=new Map);for(let $ of q){let K=this._delegations.get($);K?K.set(z,U):this._delegations.set($,new Map([[z,U]]))}}}},stopDelegating(q,z){if(this._delegations)if(!q)this._delegations.clear();else if(!z)this._delegations.delete(q);else{const U=this._delegations.get(q);U&&U.delete(z)}}};u.a=D},function(r,u,f){'use strict';var w=f(197),C=f(15),P=_Mathmax;u.a=function(E,S){if('function'!=typeof E)throw new TypeError('Expected a function');return S=P(void 0===S?E.length-1:f.i(C.a)(S),0),function(){for(var O=arguments,R=-1,V=P(O.length-S,0),F=Array(V);++R{I.locale=V})}get element(){return this._element?this._element:this.template?(this._addTemplateChildren(),this._element=this.template.render()):null}set element(V){this._element=V}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=C.a.bind(this,this)}createCollection(){const V=new w.a;return this._viewCollections.add(V),V}addChildren(V){return f.i(O.a)(V)||(V=[V]),Promise.all(V.map((F)=>this._unboundChildren.add(F)))}init(){if(this.ready)throw new h.a('ui-view-init-reinit: This View has already been initialized.');return Promise.resolve().then(()=>{return Promise.all(this._viewCollections.map((V)=>V.init()))}).then(()=>{this.ready=!0})}destroy(){return this.stopListening(),Promise.all(this._viewCollections.map((V)=>V.destroy())).then(()=>{this._unboundChildren.clear(),this._viewCollections.clear(),this.element=this.template=this.locale=this.t=this._viewCollections=this._unboundChildren=null})}_addTemplateChildren(){const V=(F)=>{if(F.children)for(let I of F.children)I instanceof R?this.addChildren(I):V(I)};V(this.template)}}u.a=R,f.i(S.a)(R,T.a),f.i(S.a)(R,P.a)},function(r,u,f){'use strict';var w=f(464),C=f(465),T=f(231),P=f(12),E=f(534);u.a=function(S){return'function'==typeof S?S:null==S?T.a:'object'==typeof S?f.i(P.a)(S)?f.i(C.a)(S[0],S[1]):f.i(w.a)(S):f.i(E.a)(S)}},function(r,u,f){'use strict';function h(P,E){E.isEnabled=!1}var w=f(33),C=f(4);class T{constructor(P){this.editor=P,this.set('isEnabled',!0),this._checkEnabled&&this.on('refreshState',(E,S)=>{S.isEnabled=this._checkEnabled()})}destroy(){this.stopListening()}refreshState(){const P={isEnabled:!0};this.fire('refreshState',P),this.isEnabled=P.isEnabled}_execute(P){this.isEnabled&&this._doExecute(P)}_disable(){this.on('refreshState',h),this.refreshState()}_enable(){this.off('refreshState',h),this.refreshState()}_doExecute(){}}u.a=T,f.i(C.a)(T,w.a)},function(r,u){'use strict';var h=Array.isArray;u.a=h},function(r,u,f){'use strict';var w=f(97),C=f(51);u.a=function(T){return f.i(C.a)(T)&&f.i(w.a)(T)}},function(r,u){'use strict';u.a=function(w){var C=typeof w;return!!w&&('object'==C||'function'==C)}},function(r,u,f){'use strict';var w=f(536);u.a=function(C){var T=f.i(w.a)(C),P=T%1;return T===T?P?T-P:T:0}},function(r,u,f){'use strict';var w=f(0);u.b=function(T,P){if(C.prototype[T])throw new w.a('model-batch-register-taken: This batch method name is already taken.',{name:T});C.prototype[T]=P};class C{constructor(T,P='default'){this.document=T,this.deltas=[],this.type=P}get baseVersion(){return 0Y+G.offsetSize,0),W=U.parent;O(U);const H=U.index;return W.insertChildren(H,$),S(W,H+$.length),S(W,H),new N.a(U,U.getShiftedBy(K))},remove:w,move:function(U,$){if(!U.isFlat)throw new q.a('model-writer-move-range-not-flat: Trying to move a range that starts and ends in different element.');const K=this.remove(U);return $=$._getTransformedByDeletion(U.start,U.end.offset-U.start.offset),this.insert($,K)},setAttribute:function(U,$,K){O(U.start),O(U.end);for(let W of U.getItems()){let H=W.is('textProxy')?W.textNode:W;null===K?H.removeAttribute($):H.setAttribute($,K),S(H.parent,H.index)}S(U.end.parent,U.end.index)},removeAttribute:function(U,$){this.setAttribute(U,$,null)},normalizeNodes:E}},function(r,u){'use strict';u.a=function(w){var C=w?w.length:0;return C?w[C-1]:void 0}},function(r,u,f){'use strict';var h=f(96),w=f(17);class C{constructor(){this.batch=null,this.operations=[]}get baseVersion(){return 0O?'ck-enabled':'ck-disabled'),S.if('isVisible','ck-hidden',(O)=>!O),S.to('isOn',(O)=>O?'ck-on':'ck-off'),S.if('withText','ck-button_with-text')],type:S.to('type',(O)=>O?O:'button'),'data-ck-tooltip':[S.to('_tooltipString')],tabindex:S.to('tabindex')},children:[{tag:'span',attributes:{class:['ck-button__label']},children:[{text:S.to('label')}]}],on:{mousedown:S.to((O)=>{O.preventDefault()}),click:S.to((O)=>{this.isEnabled?this.fire('execute'):O.preventDefault()})}})}init(){let E=Promise.resolve();if(this.icon&&!this.iconView){const S=this.iconView=new C.a;S.bind('content').to(this,'icon'),this.element.insertBefore(S.element,this.element.firstChild),E=E.then(()=>this.addChildren(S))}return E.then(()=>super.init())}focus(){this.element.focus()}_getTooltipString(E,S,O){if(E){if('string'==typeof E)return E;if(O&&(O=f.i(T.b)(O)),E instanceof Function)return E(S,O);if(!0===E)return`${S}${O?` (${O})`:''}`}return!1}}u.a=P},function(r,u,f){'use strict';function h(R){let V;if('string'!=typeof R)V=R.keyCode+(R.altKey?O.alt:0)+(R.ctrlKey?O.ctrl:0)+(R.shiftKey?O.shift:0);else if(V=O[R.toLowerCase()],!V)throw new E.a('keyboard-unknown-key: Unknown key name.',{key:R});return V}function P(R){return R.split(/\s*\+\s*/)}var E=f(0),S=f(441);u.c=h,u.a=function(R){return'string'==typeof R&&(R=P(R)),R.map((V)=>'string'==typeof V?h(V):V).reduce((V,F)=>F+V,0)},u.b=function(R){const V=P(R);return S.a.mac&&'ctrl'==V[0].toLowerCase()?'\u2318'+(V[1]||''):R};const O=function(){const R={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,esc:27,tab:9,ctrl:1114112,cmd:1114112,shift:2228224,alt:4456448};for(let V=65;90>=V;V++){const F=_StringfromCharCode(V);R[F.toLowerCase()]=V}for(let V=48;57>=V;V++)R[V-48]=V;for(let V=112;123>=V;V++)R['f'+(V-111)]=V;return R}();u.d=O},function(r,u,f){'use strict';function h(T,P,E,S,O){var R=-1,V=T.length;for(E||(E=C.a),O||(O=[]);++RF.add(M))}function C(F){return'string'==typeof F?[new P.a(F)]:(f.i(S.a)(F)||(F=[F]),Array.from(F).map((I)=>'string'==typeof I?new P.a(I):I))}var T=f(78),P=f(31),E=f(277),S=f(48),O=f(99),R=f(171);class V extends T.a{constructor(F,I,N){if(super(),this.name=F,this._attrs=f.i(O.a)(I)?f.i(E.a)(I):new Map(I),this._children=[],N&&this.insertChildren(0,N),this._classes=new Set,this._attrs.has('class')){const M=this._attrs.get('class');w(this._classes,M),this._attrs.delete('class')}this._styles=new Map,this._attrs.has('style')&&(h(this._styles,this._attrs.get('style')),this._attrs.delete('style')),this._customProperties=new Map}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}is(F,I=null){return I?'element'==F&&I==this.name:'element'==F||F==this.name}clone(F=!1){const I=[];if(F)for(let M of this.getChildren())I.push(M.clone(F));const N=new this.constructor(this.name,this._attrs,I);return N._classes=new Set(this._classes),N._styles=new Map(this._styles),N._customProperties=new Map(this._customProperties),N.getFillerOffset=this.getFillerOffset,N}appendChildren(F){return this.insertChildren(this.childCount,F)}getChild(F){return this._children[F]}getChildIndex(F){return this._children.indexOf(F)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){0this._classes.add(I))}removeClass(...F){this._fireChange('attributes',this),F.forEach((I)=>this._classes.delete(I))}hasClass(...F){for(let I of F)if(!this._classes.has(I))return!1;return!0}getClassNames(){return this._classes.keys()}setStyle(F,I){if(this._fireChange('attributes',this),f.i(O.a)(F)){const N=Object.keys(F);for(let M of N)this._styles.set(M,F[M])}else this._styles.set(F,I)}getStyle(F){return this._styles.get(F)}getStyleNames(){return this._styles.keys()}hasStyle(...F){for(let I of F)if(!this._styles.has(I))return!1;return!0}removeStyle(...F){this._fireChange('attributes',this),F.forEach((I)=>this._styles.delete(I))}findAncestor(...F){const I=new R.a(...F);for(let N=this.parent;N;){if(I.match(N))return N;N=N.parent}return null}setCustomProperty(F,I){this._customProperties.set(F,I)}getCustomProperty(F){return this._customProperties.get(F)}removeCustomProperty(F){return this._customProperties.delete(F)}*getCustomProperties(){yield*this._customProperties.entries()}}u.a=V},function(r,u,f){'use strict';var h=f(54),w=f(65),C=f(0),T=f(77);class P{constructor(E,S){this.parent=E,this.offset=S}get nodeAfter(){return this.parent.is('text')?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is('text')?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const E=this.parent.is('text')?this.parent.data.length:this.parent.childCount;return this.offset===E}get root(){return this.parent.root}get editableElement(){let E=this.parent;for(;!(E instanceof T.a);)if(E.parent)E=E.parent;else return null;return E}getShiftedBy(E){let S=P.createFromPosition(this),O=S.offset+E;return S.offset=0>O?0:O,S}getLastMatchingPosition(E,S={}){S.startPosition=this;const O=new h.a(S);return O.skip(E),O.position}getAncestors(){return this.parent.is('documentFragment')?[this.parent]:this.parent.getAncestors({includeNode:!0})}isEqual(E){return this.parent==E.parent&&this.offset==E.offset}isBefore(E){return'before'==this.compareWith(E)}isAfter(E){return'after'==this.compareWith(E)}compareWith(E){if(this.isEqual(E))return'same';if(this.parent===E.parent)return 0>this.offset-E.offset?'before':'after';const S=this.getAncestors(),O=E.getAncestors(),R=f.i(w.a)(S,O);let V;switch(R){case 0:return'different';case'prefix':V=S.length-1;break;case'extension':V=O.length-1;break;default:V=R-1;}const F=S[V],I=S[V+1],N=O[V+1];if(F===this.parent){const D=this.offset-N.index;return 0>=D?'before':'after'}if(F===E.parent){const D=I.index-E.offset;return 0>D?'before':'after'}const M=I.index-N.index;return 0>M?'before':'after'}static createAt(E,S){if(E instanceof P)return this.createFromPosition(E);let O=E;if('end'==S)S=O.is('text')?O.data.length:O.childCount;else{if('before'==S)return this.createBefore(O);if('after'==S)return this.createAfter(O);S||(S=0)}return new P(O,S)}static createAfter(E){if(E.is('textProxy'))return new P(E.textNode,E.offsetInText+E.data.length);if(!E.parent)throw new C.a('view-position-after-root: You can not make position after root.',{root:E});return new P(E.parent,E.index+1)}static createBefore(E){if(E.is('textProxy'))return new P(E.textNode,E.offsetInText);if(!E.parent)throw new C.a('view-position-before-root: You can not make position before root.',{root:E});return new P(E.parent,E.index)}static createFromPosition(E){return new this(E.parent,E.offset)}}u.a=P},function(r,u){'use strict';u.a=function(w,C){for(var T=-1,P=w.length,E=Array(P);++TO.maxOffset)throw new T.a('move-operation-nodes-do-not-exist: The nodes which should be moved do not exist.');else if(O===R&&V=V&&this.targetPosition.path[N]{if(W.attrs.length&&W.attrs.length!==K)throw new V.a('observable-bind-to-attrs-length: The number of attributes must match.');W.attrs.length||(W.attrs=this._bindAttrs)}),this._to=U.to,U.callback&&(this._bindings.get($[0]).callback=U.callback),O(this._observable,this._to),E(this),this._bindAttrs.forEach((W)=>{S(this._observable,W)})}function C(z){return z.every((U)=>'string'==typeof U)}function T(...z){if(!z.length)throw new V.a('observable-bind-to-parse-error: Invalid argument syntax in `to()`.');const U={to:[]};let $;return'function'==typeof z[z.length-1]&&(U.callback=z.pop()),z.forEach((K)=>{if('string'==typeof K)$.attrs.push(K);else if('object'==typeof K)$={observable:K,attrs:[]},U.to.push($);else throw new V.a('observable-bind-to-parse-error: Invalid argument syntax in `to()`.')}),U}function P(z,U,$,K){const W=z[M],H=W.get($),Y=H||{};Y[K]||(Y[K]=new Set),Y[K].add(U),H||W.set($,Y)}function E(z){let U;z._bindings.forEach(($,K)=>{z._to.forEach((W)=>{U=W.attrs[$.callback?0:z._bindAttrs.indexOf(K)],$.to.push([W.observable,U]),P(z._observable,$,W.observable,U)})})}function S(z,U){const $=z[D],K=$.get(U);let W;K.callback?W=K.callback.apply(z,K.to.map((H)=>H[0][H[1]])):(W=K.to[0],W=W[0][W[1]]),z.hasOwnProperty(U)?z[U]=W:z.set(U,W)}function O(z,U){U.forEach(($)=>{const K=z[M];let W;K.get($.observable)||z.listenTo($.observable,'change',(H,Y)=>{W=K.get($.observable)[Y],W&&W.forEach((G)=>{S(z,G.attr)})})})}var R=f(7),V=f(0),F=f(50),I=f(14);const N=Symbol('attributes'),M=Symbol('boundObservables'),D=Symbol('boundAttributes'),q={set(z,U){if(f.i(I.a)(z))return void Object.keys(z).forEach((K)=>{this.set(K,z[K])},this);h(this);const $=this[N];if(z in this&&!$.has(z))throw new V.a('observable-set-cannot-override: Cannot override an existing property.');Object.defineProperty(this,z,{enumerable:!0,configurable:!0,get(){return $.get(z)},set(K){const W=$.get(z);W===K&&$.has(z)||($.set(z,K),this.fire('change:'+z,z,K,W))}}),this[z]=U},bind(...z){if(!z.length||!C(z))throw new V.a('observable-bind-wrong-attrs: All attributes must be strings.');if(new Set(z).size!==z.length)throw new V.a('observable-bind-duplicate-attrs: Attributes must be unique.');h(this);const U=this[D];z.forEach((K)=>{if(U.has(K))throw new V.a('observable-bind-rebind: Cannot bind the same attribute more that once.')});const $=new Map;return z.forEach((K)=>{const W={attr:K,to:[]};U.set(K,W),$.set(K,W)}),{to:w,_observable:this,_bindAttrs:z,_to:[],_bindings:$}},unbind(...z){if(!(N in this))return;const U=this[D],$=this[M];if(z.length){if(!C(z))throw new V.a('observable-unbind-wrong-attrs: Attributes must be strings.');z.forEach((K)=>{const W=U.get(K);let H,Y,G,Z;W.to.forEach((J)=>{H=J[0],Y=J[1],G=$.get(H),Z=G[Y],Z.delete(W),Z.size||delete G[Y],Object.keys(G).length||($.delete(H),this.stopListening(H,'change'))}),U.delete(K)})}else $.forEach((K,W)=>{this.stopListening(W,'change')}),$.clear(),U.clear()}};u.a=q,f.i(F.a)(q,R.a)},function(r,u,f){'use strict';function h(V,F,I,N){if(f.i(O.a)(V)){for(let q of V)h(q,F,I,N);return}const M=Array.from(V.getAttributeKeys());M.push(F.key);const D={name:V.name||'$text',attributes:M,inside:I.context};N.schema.check(D)&&V.setAttribute(F.key,F.value)}var C=f(171),T=f(5),P=f(1),E=f(18),S=f(0),O=f(48);u.a=function(){return new R};class R{constructor(){this._dispatchers=[],this._from=[]}for(...V){return this._dispatchers=V,this}fromElement(V){return this.from({name:V})}fromAttribute(V,F=/.*/){let I={};'style'===V||'class'===V?I[V]=F:(I.attribute={},I.attribute[V]=F);const N=new C.a(I);return this._from.push({matcher:N,consume:!1,priority:null,attributeKey:V}),this}from(V){return V instanceof C.a||(V=new C.a(V)),this._from.push({matcher:V,consume:!1,priority:null}),this}consuming(V){let F=this._from[this._from.length-1];return F.consume=V,this}withPriority(V){let F=this._from[this._from.length-1];return F.priority=V,this}toElement(V){this._setCallback(function(I){return(N,M,D,q)=>{let z=I.matcher.matchAll(M.input);if(z)for(let U of z){const $=V instanceof Function?V(M.input):new T.a(V);if(!$)continue;const K=Array.from($.getAttributeKeys());if(!q.schema.check({name:$.name,attributes:K,inside:M.context}))continue;if(!D.consume(M.input,I.consume||U.match))continue;M.context.push($);const W=q.convertChildren(M.input,D,M),H=P.a.createAt($,'end');E.a.insert(H,W),M.context.pop(),M.output=$;break}}},'normal')}toAttribute(V,F){this._setCallback(function(N){return(M,D,q,z)=>{let U=N.matcher.matchAll(D.input);if(U)for(let $ of U){if(!q.consume(D.input,N.consume||$.match))continue;D.output||(D.output=z.convertChildren(D.input,q,D));let K;if(!(V instanceof Function))K={key:V,value:F?F:D.input.getAttribute(N.attributeKey)};else if(K=V(D.input),!K)return;h(D.output,K,D,z);break}}},'low')}toMarker(V){this._setCallback(function(I){return(N,M,D)=>{const q=I.matcher.matchAll(M.input);if(!q)return;let z;if(z=V instanceof Function?V(M.input):new T.a('$marker',{'data-name':M.input.getAttribute('data-name')}),'$marker'!=z.name||'string'!=typeof z.getAttribute('data-name'))throw new S.a('build-view-converter-invalid-marker: Invalid model element to mark marker range.');for(const U of q)if(D.consume(M.input,I.consume||U.match)){M.output=z;break}}},'normal')}_setCallback(V,F){for(let I of this._from){const N=I.matcher.getElementName(),M=N?'element:'+N:'element',D=V(I),q=null===I.priority?F:I.priority;for(let z of this._dispatchers)z.on(M,D,{priority:q})}}}},function(r,u,f){'use strict';function h(S){return'string'==typeof S?[new T.a(S)]:(f.i(P.a)(S)||(S=[S]),Array.from(S).map((O)=>'string'==typeof O?new T.a(O):O))}var w=f(74),C=f(5),T=f(24),P=f(48);class E{constructor(S){this.markers=new Map,this._children=new w.a,S&&this.insertChildren(0,S)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(S){return'documentFragment'==S}getChild(S){return this._children.getNode(S)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(S){return this._children.getNodeIndex(S)}getChildStartOffset(S){return this._children.getNodeStartOffset(S)}getPath(){return[]}offsetToIndex(S){return this._children.offsetToIndex(S)}appendChildren(S){this.insertChildren(this.childCount,S)}insertChildren(S,O){O=h(O);for(let R of O)R.parent=this;this._children.insertNodes(S,O)}removeChildren(S,O=1){const R=this._children.removeNodes(S,O);for(let V of R)V.parent=null;return R}toJSON(){let S=[];for(let O of this._children)S.push(O.toJSON());return S}static fromJSON(S){let O=[];for(let R of S)R.name?O.push(C.a.fromJSON(R)):O.push(T.a.fromJSON(R));return new E(O)}}u.a=E},function(r,u,f){'use strict';var h=f(96);class w{constructor(C){this.baseVersion=C}toJSON(){const C=f.i(h.a)(this,!0);return C.__className=this.constructor.className,delete C.delta,C}static get className(){return'engine.model.operation.Operation'}static fromJSON(C){return new this(C.baseVersion)}}u.a=w},function(r,u,f){'use strict';function h(O,R,V,F,I){return{done:!1,value:{type:O,item:R,previousPosition:V,nextPosition:F,length:I}}}var w=f(24),C=f(61),T=f(5),P=f(1),E=f(0);class S{constructor(O={}){if(!O.boundaries&&!O.startPosition)throw new E.a('model-tree-walker-no-start-position: Neither boundaries nor starting position have been defined.');const R=O.direction||'forward';if('forward'!=R&&'backward'!=R)throw new E.a('model-tree-walker-unknown-direction: Only `backward` and `forward` direction allowed.',{direction:R});this.direction=R,this.boundaries=O.boundaries||null,this.position=O.startPosition?P.a.createFromPosition(O.startPosition):P.a.createFromPosition(this.boundaries['backward'==this.direction?'end':'start']),this.singleCharacters=!!O.singleCharacters,this.shallow=!!O.shallow,this.ignoreElementEnd=!!O.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(O){let R,V,F,I;do F=this.position,I=this._visitedParent,({done:R,value:V}=this.next());while(!R&&O(V));R||(this.position=F,this._visitedParent=I)}next(){return'forward'==this.direction?this._next():this._previous()}_next(){const O=this.position,R=P.a.createFromPosition(this.position),V=this._visitedParent;if(null===V.parent&&R.offset===V.maxOffset)return{done:!0};if(V===this._boundaryEndParent&&R.offset==this.boundaries.end.offset)return{done:!0};const F=R.textNode?R.textNode:R.nodeAfter;if(F instanceof T.a)return this.shallow?R.offset++:(R.path.push(0),this._visitedParent=F),this.position=R,h('elementStart',F,O,R,1);if(F instanceof w.a){let I,N;if(this.singleCharacters)I=1;else{let D=F.endOffset;this._boundaryEndParent==V&&this.boundaries.end.offsetD&&(D=this.boundaries.start.offset),I=R.offset-D}N=R.offset-F.startOffset;const M=new C.a(F,N-I,I);return R.offset-=I,this.position=R,h('text',M,O,R,I)}return R.path.pop(),this.position=R,this._visitedParent=V.parent,h('elementStart',V,O,R,1)}}u.a=S},function(r,u){'use strict';u.a=function(w,C,T){var P=-1,E=w.length;0>C&&(C=-C>E?0:E+C),T=T>E?E:T,0>T&&(T+=E),E=C>T?0:T-C>>>0,C>>>=0;for(var S=Array(E);++PV.clone(!0)));return new O(this.position,R,this.baseVersion)}getReversed(){return new T.a(this.position,this.nodes.maxOffset,this.baseVersion+1)}_execute(){const R=this.nodes;this.nodes=new C.a([...R].map((F)=>F.clone(!0)));const V=P.a.insert(this.position,R);return{range:V}}static get className(){return'engine.model.operation.InsertOperation'}static fromJSON(R,V){let F=[];for(let I of R.nodes)I.name?F.push(S.a.fromJSON(I)):F.push(E.a.fromJSON(I));return new O(w.a.fromJSON(R.position,V),F,R.baseVersion)}}u.a=O},function(r,u,f){'use strict';var h=f(30),w=f(1),C=f(5),T=f(113);class P extends h.a{constructor(E,S,O){const R=E.root.document.graveyard,V=new w.a(R,[R.maxOffset,0]);super(E,S,V,O),this._needsHolderElement=!0}get type(){return'remove'}get _holderElementOffset(){return this.targetPosition.path[0]}set _holderElementOffset(E){this.targetPosition.path[0]=E}getReversed(){return new T.a(this.targetPosition,this.howMany,this.sourcePosition,this.baseVersion+1)}clone(){let E=new P(this.sourcePosition,this.howMany,this.baseVersion);return E.targetPosition=w.a.createFromPosition(this.targetPosition),E}_execute(){if(this._needsHolderElement){const E=this.targetPosition.root,S=new C.a('$graveyardHolder');E.insertChildren(this._holderElementOffset,S),this.sourcePosition.root==E&&this.sourcePosition.path[0]>=this._holderElementOffset&&this.sourcePosition.path[0]++}return super._execute()}static get className(){return'engine.model.operation.RemoveOperation'}static fromJSON(E,S){let O=w.a.fromJSON(E.sourcePosition,S);const R=new P(O,E.howMany,E.baseVersion);return R.targetPosition=w.a.fromJSON(E.targetPosition,S),R._needsHolderElement=E._needsHolderElement,R}}u.a=P},function(r,u,f){'use strict';function h(){return 0===this.childCount?0:null}var w=f(25);class C extends w.a{constructor(T,P,E){super(T,P,E),this.getFillerOffset=h}is(T,P=null){return P?'containerElement'==T&&P==this.name||super.is(T,P):'containerElement'==T||super.is(T)}}u.a=C},function(r,u,f){'use strict';function h(P){return P.item.is('attributeElement')||P.item.is('uiElement')}var w=f(26),C=f(54);class T{constructor(P,E=null){this.start=w.a.createFromPosition(P),this.end=E?w.a.createFromPosition(E):w.a.createFromPosition(P)}*[Symbol.iterator](){yield*new C.a({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let P=this.start.getLastMatchingPosition(h,{direction:'backward'}),E=this.end.getLastMatchingPosition(h);return P.parent.is('text')&&P.isAtStart&&(P=w.a.createBefore(P.parent)),E.parent.is('text')&&E.isAtEnd&&(E=w.a.createAfter(E.parent)),new T(P,E)}getTrimmed(){let P=this.start.getLastMatchingPosition(h),E=this.end.getLastMatchingPosition(h,{direction:'backward'}),S=P.nodeAfter,O=E.nodeBefore;return S&&S.is('text')&&(P=new w.a(S,0)),O&&O.is('text')&&(E=new w.a(O,O.data.length)),new T(P,E)}isEqual(P){return this==P||this.start.isEqual(P.start)&&this.end.isEqual(P.end)}containsPosition(P){return P.isAfter(this.start)&&P.isBefore(this.end)}containsRange(P){return this.containsPosition(P.start)&&this.containsPosition(P.end)}getDifference(P){const E=[];return this.isIntersecting(P)?(this.containsPosition(P.start)&&E.push(new T(this.start,P.start)),this.containsPosition(P.end)&&E.push(new T(P.end,this.end))):E.push(T.createFromRange(this)),E}getIntersection(P){if(this.isIntersecting(P)){let E=this.start,S=this.end;return this.containsPosition(P.start)&&(E=P.start),this.containsPosition(P.end)&&(S=P.end),new T(E,S)}return null}getWalker(P={}){return P.boundaries=this,new C.a(P)}*getItems(P={}){P.boundaries=this,P.ignoreElementEnd=!0;const E=new C.a(P);for(let S of E)yield S.item}*getPositions(P={}){P.boundaries=this;const E=new C.a(P);yield E.position;for(let S of E)yield S.nextPosition}isIntersecting(P){return this.start.isBefore(P.end)&&this.end.isAfter(P.start)}static createFromParentsAndOffsets(P,E,S,O){return new this(new w.a(P,E),new w.a(S,O))}static createFromRange(P){return new this(P.start,P.end)}static createFromPositionAndShift(P,E){const S=P,O=P.getShiftedBy(E);return 0=200){var U=V?null:f.i(E.a)(R);if(U)return f.i(S.a)(U);D=!1,N=P.a,z=new w.a}else z=V?[]:q;outer:for(;++Ih(q,N));return M.forEach((q)=>N.add(q)),D}var C=f(1),T=f(5),P=f(3),E=f(7),S=f(0),O=f(4),R=f(152),V=f(541);class F{constructor(I,N){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,I&&this.setRanges(I,N)}get anchor(){if(0{if(!(D instanceof P.a))throw new S.a('model-selection-added-not-range: Trying to add an object that is not an instance of Range.');return this._ranges.every((q)=>{return!q.isEqual(D)})});if(I.length!==this._ranges.length||M){this._removeAllRanges();for(let D of I)this._pushRange(D);this._lastRangeBackward=!!N,this.fire('change:range',{directChange:!0})}}setTo(I){this.setRanges(I.getRanges(),I.isBackward)}collapse(I,N){const M=C.a.createAt(I,N),D=new P.a(M,M);this.setRanges([D])}collapseToStart(){const I=this.getFirstPosition();null!==I&&this.setRanges([new P.a(I,I)])}collapseToEnd(){const I=this.getLastPosition();null!==I&&this.setRanges([new P.a(I,I)])}setFocus(I,N){if(null===this.anchor)throw new S.a('model-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.');const M=C.a.createAt(I,N);if('same'!=M.compareWith(this.focus)){const D=this.anchor;this._ranges.length&&this._popRange(),'before'==M.compareWith(D)?this.addRange(new P.a(M,D),!0):this.addRange(new P.a(D,M))}}getAttribute(I){return this._attrs.get(I)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(I){return this._attrs.has(I)}clearAttributes(){if(0T||T>C.offsetSize)throw new h.a('model-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.');if(0>P||T+P>C.offsetSize)throw new h.a('model-textproxy-wrong-length: Given length value is incorrect.');this.data=C.data.substring(T,T+P),this.offsetInText=T}get startOffset(){return null===this.textNode.startOffset?null:this.textNode.startOffset+this.offsetInText}get offsetSize(){return this.data.length}get endOffset(){return null===this.startOffset?null:this.startOffset+this.offsetSize}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(C){return'textProxy'==C}getPath(){const C=this.textNode.getPath();return 0{const M=N.createElement('br');return M.dataset.ckeFiller=!0,M};u.a=(N)=>N.createTextNode('\xA0');const V=7;u.d=V;let F='';for(let N=0;N{this.listenTo(T,E,(S,O)=>{this.isEnabled&&this.onDomEvent(O)},{useCapture:this.useCapture})})}fire(T,P,E){this.isEnabled&&this.document.fire(T,new w.a(this.document,P,E))}}u.a=C},function(r,u,f){'use strict';var h=f(0),w=f(45),C=f(26),T=f(4),P=f(7),E=f(25);class S{constructor(O,R){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel='',O&&this.setRanges(O,R)}setFake(O=!0,R={}){this._isFake=O,this._fakeSelectionLabel=O?R.label||'':'',this.fire('change')}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const O=this._ranges[this._ranges.length-1],R=this._lastRangeBackward?O.end:O.start;return C.a.createFromPosition(R)}get focus(){if(!this._ranges.length)return null;const O=this._ranges[this._ranges.length-1],R=this._lastRangeBackward?O.start:O.end;return C.a.createFromPosition(R)}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}addRange(O,R){if(!(O instanceof w.a))throw new h.a('view-selection-invalid-range: Invalid Range.');this._pushRange(O),this._lastRangeBackward=!!R,this.fire('change')}*getRanges(){for(let O of this._ranges)yield w.a.createFromRange(O)}getFirstRange(){let O=null;for(let R of this._ranges)(!O||R.start.isBefore(O.start))&&(O=R);return O?w.a.createFromRange(O):null}getLastRange(){let O=null;for(let R of this._ranges)(!O||R.end.isAfter(O.end))&&(O=R);return O?w.a.createFromRange(O):null}getFirstPosition(){const O=this.getFirstRange();return O?C.a.createFromPosition(O.start):null}getLastPosition(){const O=this.getLastRange();return O?C.a.createFromPosition(O.end):null}isEqual(O){if(this.isFake!=O.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=O.fakeSelectionLabel)return!1;if(this.rangeCount!=O.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(O.anchor)||!this.focus.isEqual(O.focus))return!1;for(let R of this._ranges){let V=!1;for(let F of O._ranges)if(R.isEqual(F)){V=!0;break}if(!V)return!1}return!0}removeAllRanges(){this._ranges.length&&(this._ranges=[],this.fire('change'))}setRanges(O,R){this._ranges=[];for(let V of O){if(!(V instanceof w.a))throw new h.a('view-selection-invalid-range: Invalid Range.');this._pushRange(V)}this._lastRangeBackward=!!R,this.fire('change')}setTo(O){this._isFake=O._isFake,this._fakeSelectionLabel=O._fakeSelectionLabel,this.setRanges(O.getRanges(),O.isBackward)}collapse(O,R){const V=C.a.createAt(O,R),F=new w.a(V,V);this.setRanges([F])}collapseToStart(){const O=this.getFirstPosition();null!==O&&this.setRanges([new w.a(O,O)])}collapseToEnd(){const O=this.getLastPosition();null!==O&&this.setRanges([new w.a(O,O)])}setFocus(O,R){if(null===this.anchor)throw new h.a('view-selection-setFocus-no-ranges: Cannot set selection focus if there are no ranges in selection.');const V=C.a.createAt(O,R);if('same'!=V.compareWith(this.focus)){const F=this.anchor;this._ranges.pop(),'before'==V.compareWith(F)?this.addRange(new w.a(V,F),!0):this.addRange(new w.a(F,V))}}getSelectedElement(){if(1!==this.rangeCount)return null;const O=this.getFirstRange(),R=O.start.nodeAfter,V=O.end.nodeBefore;return R instanceof E.a&&R==V?R:null}static createFromSelection(O){const R=new S;return R.setTo(O),R}_pushRange(O){for(let R of this._ranges)if(O.isIntersecting(R))throw new h.a('view-selection-range-intersects: Trying to add a range that intersects with another range from selection.',{addedRange:O,intersectingRange:R});this._ranges.push(w.a.createFromRange(O))}}u.a=S,f.i(T.a)(S,P.a)},function(r,u){'use strict';u.a=function(w,C){const T=_Mathmin(w.length,C.length);for(let P=0;Pthis._focus(E),{useCapture:!0}),this.listenTo(E,'blur',()=>this._blur(),{useCapture:!0}),this._elements.add(E)}remove(E){E===this.focusedElement&&this._blur(E),this._elements.has(E)&&(this.stopListening(E),this._elements.delete(E))}_focus(E){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=E,this.isFocused=!0}_blur(){this._nextEventLoopTimeout=setTimeout(()=>{this.focusedElement=null,this.isFocused=!1},0)}}u.a=P,f.i(T.a)(P,h.a),f.i(T.a)(P,w.a)},function(r,u,f){'use strict';var h=f(81),w=f(22);u.a=class{constructor(){this._listener=Object.create(h.a),this._keystrokes=new Map}listenTo(T){this._listener.listenTo(T,'keydown',(P,E)=>{this.press(E)})}set(T,P){const E=f.i(w.a)(T),S=this._keystrokes.get(E);S?S.push(P):this._keystrokes.set(E,[P])}press(T){const P=f.i(w.c)(T),E=this._keystrokes.get(P);if(!E)return!1;for(let S of E)S(T,()=>{T.preventDefault(),T.stopPropagation()});return!0}destroy(){this._keystrokes=new Map,this._listener.stopListening()}}},function(r,u,f){'use strict';var w=f(58),C=Object.prototype,T=C.hasOwnProperty;u.a=function(P,E,S){var O=P[E];T.call(P,E)&&f.i(w.a)(O,S)&&(S!==void 0||E in P)||(P[E]=S)}},function(r,u,f){'use strict';var w=f(83),C=f(125),T=f(126),P=f(27),E=f(134),S=f(136);u.a=function(R,V,F,I){var N=-1,M=C.a,D=!0,q=R.length,z=[],U=V.length;if(!q)return z;F&&(V=f.i(P.a)(V,f.i(E.a)(F))),I?(M=T.a,D=!1):V.length>=200&&(M=S.a,D=!1,V=new w.a(V));outer:for(;++NC;C++)w+=_Mathfloor(65536*(1+Math.random())).toString(16).substring(1);return w}},function(r,u,f){'use strict';function h(M,D,q,z){if(q.test(D.input,{name:D.input.name})&&C(D.input,D.context,z.schema,!1)){D.context.push('paragraph');const U=z.convertItem(D.input,q,D);D.context.pop(),D.output=U}}function w(M,D,q,z){if(!D.output)return;const U=I.paragraphLikeElements.has(D.input.name)&&!D.output.is('element'),$=D.input.is('documentFragment')||D.input.is('element')&&D.output.is('element')||U;if(!$)return;const K=D.output.is('element');K&&D.context.push(D.output);let W=null;for(let H=0;H{D.insert(R.a.createAt(M),new O.a('paragraph'))})}N.clear()}var E=f(399),S=f(2),O=f(5),R=f(1),V=f(41),F=f(34);class I extends S.a{static get pluginName(){return'paragraph/paragraph'}init(){const M=this.editor,D=M.document,q=M.data,z=M.editing;M.commands.set('paragraph',new E.a(M)),D.schema.registerItem('paragraph','$block'),f.i(V.a)().for(q.modelToView,z.modelToView).fromElement('paragraph').toElement('p'),f.i(F.a)().for(q.viewToModel).fromElement('p').toElement('paragraph'),q.viewToModel.on('element',h,{priority:'low'}),q.viewToModel.on('text',h,{priority:'lowest'}),q.viewToModel.on('element',w,{priority:'lowest'}),q.viewToModel.on('documentFragment',w,{priority:'lowest'}),D.on('change',(U,$,K,W)=>T(D,W)),D.on('changesDone',P,{priority:'lowest'}),M.on('dataReady',()=>{T(D,D.batch('transparent')),P()},{priority:'lowest'})}}u.a=I,I.paragraphLikeElements=new Set(['blockquote','dd','div','dt','h1','h2','h3','h4','h5','h6','li','p','td']);const N=new Map},function(r,u,f){'use strict';var h=f(59),w=f(0);class C{constructor(T){this._nodes=[],T&&this.insertNodes(0,T)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce((T,P)=>T+P.offsetSize,0)}getNode(T){return this._nodes[T]||null}getNodeIndex(T){const P=this._nodes.indexOf(T);return-1==P?null:P}getNodeStartOffset(T){const P=this.getNodeIndex(T);return null===P?null:this._nodes.slice(0,P).reduce((E,S)=>E+S.offsetSize,0)}indexToOffset(T){if(T==this._nodes.length)return this.maxOffset;const P=this._nodes[T];if(!P)throw new w.a('model-nodelist-index-out-of-bounds: Given index cannot be found in the node list.');return this.getNodeStartOffset(P)}offsetToIndex(T){let P=0;for(let E of this._nodes){if(T>=P&&TT.toJSON())}}u.a=C},function(r,u,f){'use strict';var h=f(36),w=f(3),C=f(0),T=f(18),P=f(528);class E extends h.a{constructor(S,O,R,V,F){super(F),this.range=w.a.createFromRange(S),this.key=O,this.oldValue=R===void 0?null:R,this.newValue=V===void 0?null:V}get type(){return null===this.oldValue?'addAttribute':null===this.newValue?'removeAttribute':'changeAttribute'}clone(){return new E(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new E(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_execute(){for(let S of this.range.getItems()){if(null!==this.oldValue&&!f.i(P.a)(S.getAttribute(this.key),this.oldValue))throw new C.a('attribute-operation-wrong-old-value: Changed node has different attribute value than operation\'s old attribute value.',{item:S,key:this.key,value:this.oldValue});if(null===this.oldValue&&null!==this.newValue&&S.hasAttribute(this.key))throw new C.a('attribute-operation-attribute-exists: The attribute with given key already exists.',{node:S,key:this.key});if(f.i(P.a)(this.oldValue,this.newValue))return}return T.a.setAttribute(this.range,this.key,this.newValue),{range:this.range,key:this.key,oldValue:this.oldValue,newValue:this.newValue}}static get className(){return'engine.model.operation.AttributeOperation'}static fromJSON(S,O){return new E(w.a.fromJSON(S.range,O),S.key,S.oldValue,S.newValue,S.baseVersion)}}u.a=E},function(r,u,f){'use strict';var h=f(36);class w extends h.a{clone(){return new w(this.baseVersion)}getReversed(){return new w(this.baseVersion+1)}_execute(){}static get className(){return'engine.model.operation.NoOperation'}}u.a=w},function(r,u,f){'use strict';var h=f(44),w=f(0),C=f(4),T=f(33);const P=Symbol('document');class E extends h.a{constructor(S,O,R){super(S,O,R),this.set('isReadOnly',!1),this.set('isFocused',!1)}get document(){return this.getCustomProperty(P)}set document(S){if(this.getCustomProperty(P))throw new w.a('view-editableelement-document-already-set: View document is already set.');this.setCustomProperty(P,S),this.bind('isFocused').to(S,'isFocused',(O)=>O&&S.selection.editableElement==this),this.listenTo(S,'render',()=>{this.isFocused=S.isFocused&&S.selection.editableElement==this},{priority:'high'})}}u.a=E,f.i(C.a)(E,T.a)},function(r,u,f){'use strict';var h=f(0),w=f(7),C=f(4);class T{constructor(){this.parent=null}get index(){let P;if(!this.parent)return null;if(-1==(P=this.parent.getChildIndex(this)))throw new h.a('view-node-not-found-in-parent: The node\'s parent does not contain this node.');return P}get nextSibling(){const P=this.index;return null!==P&&this.parent.getChild(P+1)||null}get previousSibling(){const P=this.index;return null!==P&&this.parent.getChild(P-1)||null}get root(){let P=this;for(;P.parent;)P=P.parent;return P}get document(){return this.parent instanceof T?this.parent.document:null}getAncestors(P={includeNode:!1,parentFirst:!1}){const E=[];for(let S=P.includeNode?this:this.parent;S;)E[P.parentFirst?'push':'unshift'](S),S=S.parent;return E}remove(){this.parent.removeChildren(this.index)}_fireChange(P,E){this.fire('change:'+P,E),this.parent&&this.parent._fireChange(P,E)}}u.a=T,f.i(C.a)(T,w.a)},function(r,u,f){'use strict';function C(me){const pe=me.offset,ge=me.parent;if(ge.is('text'))return me;if(ge.is('attributeElement')&&0===ge.childCount){const be=ge.parent,_e=ge.index;return ge.remove(),C(new X.a(be,_e))}const fe=ge.getChild(pe-1),he=ge.getChild(pe);if(!fe||!he)return me;if(fe.is('text')&&he.is('text'))return W(fe,he);if(fe.is('attributeElement')&&he.is('attributeElement')&&fe.isSimilar(he)){const be=fe.childCount;return fe.appendChildren(he.getChildren()),he.remove(),C(new X.a(fe,be))}return me}function E(me,pe){pe=f.i(de.a)(pe)?[...pe]:[pe],Z(pe);const ge=M(me);if(!ge)throw new se.a('view-writer-invalid-position-container');const fe=q(me,!0),he=ge.insertChildren(fe.offset,pe),be=fe.getShiftedBy(he),_e=C(fe);if(0===he)return new ie.a(_e,_e);_e.isEqual(fe)||be.offset--;const ke=C(be);return new ie.a(_e,ke)}function S(me){if(Q(me),me.isCollapsed)return new le.a;const{start:pe,end:ge}=D(me,!0),fe=pe.parent,he=ge.offset-pe.offset,be=fe.removeChildren(pe.offset,he),_e=C(pe);return me.start=_e,me.end=X.a.createFromPosition(_e),new le.a(be)}function R(me,pe){let ge;if(pe.isAfter(me.end)){pe=q(pe,!0);const fe=pe.parent,he=fe.childCount;me=D(me,!0),ge=S(me),pe.offset+=fe.childCount-he}else ge=S(me);return E(pe,ge)}function V(me,pe){if(!(pe instanceof te.a))throw new se.a('view-writer-wrap-invalid-attribute');if(Q(me),me.isCollapsed)return me;if(me.end.isEqual(me.start.getShiftedBy(1))){const ye=me.start.nodeAfter;if(ye instanceof te.a&&H(pe,ye))return me}if(G(me)&&H(pe,me.start.parent)){const ye=me.start.parent.parent,ve=me.start.parent.index;return ie.a.createFromParentsAndOffsets(ye,ve,ye,ve+1)}const{start:ge,end:fe}=D(me,!0),he=ge.parent,be=z(he,ge.offset,fe.offset,pe),_e=U(he,be.start.offset,be.end.offset,pe),ke=C(_e.start);ke.isEqual(_e.start)||_e.end.offset--;const we=C(_e.end);return new ie.a(ke,we)}function M(me){let pe=me.parent;for(;!J(pe);){if(!pe)return;pe=pe.parent}return pe}function D(me,pe=!1){const ge=me.start,fe=me.end;if(Q(me),me.isCollapsed){const ke=q(me.start,pe);return new ie.a(ke,ke)}const he=q(fe,pe),be=he.parent.childCount,_e=q(ge,pe);return he.offset+=he.parent.childCount-be,new ie.a(_e,he)}function q(me,pe=!1){const ge=me.offset,fe=me.parent;if(me.parent.is('emptyElement'))throw new se.a('view-writer-cannot-break-empty-element');if(me.parent.is('uiElement'))throw new se.a('view-writer-cannot-break-ui-element');if(!pe&&fe.is('text')&&J(fe.parent))return X.a.createFromPosition(me);if(J(fe))return X.a.createFromPosition(me);if(fe.is('text'))return q(K(me),pe);const he=fe.childCount;if(ge==he){const be=new X.a(fe.parent,fe.index+1);return q(be,pe)}if(0===ge){const be=new X.a(fe.parent,fe.index);return q(be,pe)}const be=fe.index+1,_e=fe.clone();fe.parent.insertChildren(be,_e);const ke=fe.childCount-ge,we=fe.removeChildren(ge,ke);_e.appendChildren(we);const ye=new X.a(fe.parent,be);return q(ye,pe)}function z(me,pe,ge,fe){let he=pe;const be=[];for(;hepe instanceof ge))throw new se.a('view-writer-insert-invalid-node');pe.is('text')||Z(pe.getChildren())}}function J(me){return me&&(me.is('containerElement')||me.is('documentFragment'))}function Q(me){const pe=M(me.start),ge=M(me.end);if(!pe||!ge||pe!==ge)throw new se.a('view-writer-invalid-range-container')}var X=f(26),ee=f(44),te=f(116),ae=f(170),ne=f(174),oe=f(31),ie=f(45),re=f(54),se=f(0),le=f(117),de=f(48);u.a={breakAttributes:function(me){return me instanceof X.a?q(me):D(me)},breakContainer:function(me){const pe=me.parent;if(!pe.is('containerElement'))throw new se.a('view-writer-break-non-container-element: Trying to break an element which is not a container element.');if(!pe.parent)throw new se.a('view-writer-break-root: Trying to break root element.');if(me.isAtStart)return X.a.createBefore(pe);if(!me.isAtEnd){const ge=pe.clone(!1);E(X.a.createAfter(pe),ge);const fe=new ie.a(me,X.a.createAt(pe,'end')),he=new X.a(ge,0);R(fe,he)}return X.a.createAfter(pe)},mergeAttributes:C,mergeContainers:function(me){const pe=me.nodeBefore,ge=me.nodeAfter;if(!pe||!ge||!pe.is('containerElement')||!ge.is('containerElement'))throw new se.a('view-writer-merge-containers-invalid-position: Element before and after given position cannot be merged.');const fe=pe.getChild(pe.childCount-1),he=fe instanceof oe.a?X.a.createAt(fe,'end'):X.a.createAt(pe,'end');return R(ie.a.createIn(ge),X.a.createAt(pe,'end')),S(ie.a.createOn(ge)),he},insert:E,remove:S,clear:function(me,pe){Q(me);const ge=me.getWalker({direction:'backward',ignoreElementEnd:!0});for(const fe of ge){const he=fe.item;let be;if(he.is('element')&&pe.isSimilar(he))be=ie.a.createOn(he);else if(!fe.nextPosition.isAfter(me.start)&&(he.is('text')||he.is('textProxy'))){const _e=he.getAncestors().find((ke)=>{return ke.is('element')&&pe.isSimilar(ke)});_e&&(be=ie.a.createIn(_e))}be&&(be.end.isAfter(me.end)&&(be.end=me.end),be.start.isBefore(me.start)&&(be.start=me.start),S(be))}},move:R,wrap:V,wrapPosition:function(me,pe){if(!(pe instanceof te.a))throw new se.a('view-writer-wrap-invalid-attribute');if(pe.isSimilar(me.parent))return $(X.a.createFromPosition(me));me.parent.is('text')&&(me=K(me));const ge=new te.a;ge.priority=_NumberPOSITIVE_INFINITY,ge.isSimilar=()=>!1,me.parent.insertChildren(me.offset,ge);const fe=new ie.a(me,me.getShiftedBy(1));V(fe,pe);const he=new X.a(ge.parent,ge.index);ge.remove();const be=he.nodeBefore,_e=he.nodeAfter;return be instanceof oe.a&&_e instanceof oe.a?W(be,_e):$(he)},unwrap:function(me,pe){if(!(pe instanceof te.a))throw new se.a('view-writer-unwrap-invalid-attribute');if(Q(me),me.isCollapsed)return me;if(me.end.isEqual(me.start.getShiftedBy(1))){const we=me.start.nodeAfter;if(!pe.isSimilar(we)&&we instanceof te.a&&Y(pe,we))return me}const{start:ge,end:fe}=D(me,!0),he=ge.parent,be=z(he,ge.offset,fe.offset,pe),_e=C(be.start);_e.isEqual(be.start)||be.end.offset--;const ke=C(be.end);return new ie.a(_e,ke)},rename:function(me,pe){const ge=new ee.a(pe,me.getAttributes());return E(X.a.createAfter(me),ge),R(ie.a.createIn(me),X.a.createAt(ge)),S(ie.a.createOn(me)),ge},breakViewRangePerContainer:function(me){const pe=[],ge=new re.a({boundaries:me});let fe=me.start;for(let he of ge)he.item.is('containerElement')&&(fe.isEqual(he.previousPosition)||pe.push(new ie.a(fe,he.previousPosition)),fe=he.nextPosition);return pe.push(new ie.a(fe,me.end)),pe}};const ue=[oe.a,te.a,ee.a,ae.a,ne.a]},function(r,u,f){'use strict';var h=f(7),w=f(0),C=f(72),T=f(4);class P{constructor(E){this._items=[],this._itemMap=new Map,this._idProperty=E&&E.idProperty||'id',this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap}get length(){return this._items.length}add(E,S){let O;const R=this._idProperty;if(R in E){if(O=E[R],'string'!=typeof O)throw new w.a('collection-add-invalid-id');if(this.get(O))throw new w.a('collection-add-item-already-exists')}else E[R]=O=f.i(C.a)();if(void 0===S)S=this._items.length;else if(S>this._items.length||0>S)throw new w.a('collection-add-item-invalid-index');return this._items.splice(S,0,E),this._itemMap.set(O,E),this.fire('add',E,S),this}get(E){let S;if('string'==typeof E)S=this._itemMap.get(E);else if('number'==typeof E)S=this._items[E];else throw new w.a('collection-get-invalid-arg: Index or id must be given.');return S||null}getIndex(E){let S;return S='string'==typeof E?this._itemMap.get(E):E,this._items.indexOf(S)}remove(E){let V=!1,S,O,R;const F=this._idProperty;if('string'==typeof E?(O=E,R=this._itemMap.get(O),V=!R,R&&(S=this._items.indexOf(R))):'number'==typeof E?(S=E,R=this._items[S],V=!R,R&&(O=R[F])):(R=E,O=R[F],S=this._items.indexOf(R),V=-1==S||!this._itemMap.get(O)),V)throw new w.a('collection-remove-404: Item not found.');this._items.splice(S,1),this._itemMap.delete(O);const I=this._bindToInternalToExternalMap.get(R);return this._bindToInternalToExternalMap.delete(R),this._bindToExternalToInternalMap.delete(I),this.fire('remove',R),R}map(E,S){return this._items.map(E,S)}find(E,S){return this._items.find(E,S)}filter(E,S){return this._items.filter(E,S)}clear(){for(this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);this.length;)this.remove(0)}bindTo(E){if(this._bindToCollection)throw new w.a('collection-bind-to-rebind: The collection cannot be bound more than once.');return this._bindToCollection=E,{as:(S)=>{this._setUpBindToBinding((O)=>new S(O))},using:(S)=>{'function'==typeof S?this._setUpBindToBinding((O)=>S(O)):this._setUpBindToBinding((O)=>O[S])}}}_setUpBindToBinding(E){const S=this._bindToCollection,O=(R,V,F)=>{const I=S._bindToCollection==this,N=S._bindToInternalToExternalMap.get(V);if(I&&N)this._bindToExternalToInternalMap.set(V,N),this._bindToInternalToExternalMap.set(N,V);else{const M=E(V);this._bindToExternalToInternalMap.set(V,M),this._bindToInternalToExternalMap.set(M,V),this.add(M,F)}};for(let R of S)O(null,R);this.listenTo(S,'add',O),this.listenTo(S,'remove',(R,V)=>{const F=this._bindToExternalToInternalMap.get(V);F&&this.remove(F)})}[Symbol.iterator](){return this._items[Symbol.iterator]()}}u.a=P,f.i(T.a)(P,h.a)},function(r,u,f){'use strict';function h(R){return R['data-ck-expando']||(R['data-ck-expando']=f.i(T.a)())}function w(R){return R&&f.i(E.a)(R.addEventListener)}var C=f(7),T=f(72),P=f(50),E=f(238);const S=f.i(P.a)({},C.a,{listenTo(...R){const V=R[0];w(V)&&(R[0]=this._getProxyEmitter(V)||new O(V)),C.a.listenTo.apply(this,R)},stopListening(...R){const V=R[0];if(w(V)){let F=this._getProxyEmitter(V);if(!F)return;R[0]=F}C.a.stopListening.apply(this,R)},_getProxyEmitter(R){return f.i(C.b)(this,h(R))}});u.a=S;class O{constructor(R){f.i(C.c)(this,h(R)),this._domNode=R}}f.i(P.a)(O.prototype,C.a,{on(R,V,F={}){if(C.a.on.apply(this,arguments),!(this._domListeners&&this._domListeners[R])){const I=this._createDomListener(R,!!F.useCapture);this._domNode.addEventListener(R,I,!!F.useCapture),this._domListeners||(this._domListeners={}),this._domListeners[R]=I}},off(R){C.a.off.apply(this,arguments);let V;!this._domListeners[R]||(V=this._events[R])&&V.callbacks.length||this._domListeners[R].removeListener()},_createDomListener(R,V){const F=(I)=>{this.fire(R,I)};return F.removeListener=()=>{this._domNode.removeEventListener(R,F,V),delete this._domListeners[R]},F}})},function(r,u,f){'use strict';function h(S){var O=-1,R=S?S.length:0;for(this.clear();++O>>1){for(;V>>1,N=S[I];null!==N&&!f.i(T.a)(N)&&(R?N<=O:N{const G=$ instanceof M.a?$.clone(!0):$(W,H,Y);if(G&&H.consume(W.item,'insert')){const Z=Y.mapper.toViewPosition(W.range.start);Y.mapper.bindElements(W.item,G),U.a.insert(Z,G)}}},u.j=function(){return($,K,W,H)=>{if(W.consume(K.item,'insert')){const Y=H.mapper.toViewPosition(K.range.start),G=new D.a(K.item.data);U.a.insert(Y,G)}}},u.f=function($){return(K,W,H,Y)=>{let G,Z;if(($ instanceof M.a?(G=$.clone(!0),Z=$.clone(!0)):(W.isOpening=!0,G=$(W,H,Y),W.isOpening=!1,Z=$(W,H,Y)),G&&Z)&&H.consume(W.range,'addMarker')){const J=Y.mapper;U.a.insert(J.toViewPosition(W.range.start),G),W.range.isCollapsed||U.a.insert(J.toViewPosition(W.range.end),Z)}}},u.h=function($){return $=$||((K,W)=>({value:K,key:W})),(K,W,H,Y)=>{if(H.consume(W.item,N(K.name))){const{key:G,value:Z}=$(W.attributeNewValue,W.attributeKey,W,H,Y);Y.mapper.toViewElement(W.item).setAttribute(G,Z)}}},u.i=function($){return $=$||((K,W)=>({key:W})),(K,W,H,Y)=>{if(H.consume(W.item,N(K.name))){const{key:G}=$(W.attributeOldValue,W.attributeKey,W,H,Y);Y.mapper.toViewElement(W.item).removeAttribute(G)}}},u.b=function($){return(K,W,H,Y)=>{const G=$ instanceof M.a?$.clone(!0):$(W.attributeNewValue,W,H,Y);if(!G)return;if(!H.consume(W.item,N(K.name)))return;let Z=Y.mapper.toViewRange(W.range);if(null!==W.attributeOldValue&&!($ instanceof M.a)){const J=$(W.attributeOldValue,W,H,Y);Z=U.a.unwrap(Z,J)}U.a.wrap(Z,G)}},u.c=function($){return(K,W,H,Y)=>{const G=$ instanceof M.a?$.clone(!0):$(W.attributeOldValue,W,H,Y);if(G&&H.consume(W.item,N(K.name))){const Z=Y.mapper.toViewRange(W.range);U.a.unwrap(Z,G)}}},u.d=function($){return(K,W,H,Y)=>{const G=$ instanceof M.a?$.clone(!0):$(W,H,Y);if(G&&H.consume(W.range,'addMarker')){const Z=Y.mapper.toViewRange(W.range),J=U.a.breakViewRangePerContainer(Z);for(let Q of J)U.a.wrap(Q,G)}}},u.e=function($){return(K,W,H,Y)=>{const G=$ instanceof M.a?$.clone(!0):$(W,H,Y);if(G&&H.consume(W.range,'removeMarker')){const Z=Y.mapper.toViewRange(W.range),J=U.a.breakViewRangePerContainer(Z);for(let Q of J)U.a.unwrap(Q,G)}}},u.k=function(){return($,K,W,H)=>{if(!W.consume(K.item,'remove'))return;const Y=H.mapper.toViewPosition(K.sourcePosition);let G;if(K.item.is('element'))G=q.a.createOn(Y.nodeAfter);else{const Z=F(Y,K.item.offsetSize);G=new q.a(Y,Z)}U.a.remove(G.getTrimmed()),'$graveyard'==K.item.root.rootName&&H.mapper.unbindModelElement(K.item)}},u.g=function($){return(K,W,H,Y)=>{let G,Z;if(($ instanceof M.a?(G=$.clone(!0),Z=$.clone(!0)):(W.isOpening=!0,G=$(W,H,Y),W.isOpening=!1,Z=$(W,H,Y)),G&&Z)&&H.consume(W.range,'removeMarker')){const J=Y.mapper.toViewRange(W.range);U.a.clear(J.getEnlarged(),Z),G.isSimilar(Z)||U.a.clear(J.getEnlarged(),G)}}}},function(r,u,f){'use strict';var h=f(20),w=f(106),C=f(17),T=f(42),P=f(16),E=f(18),S=f(35),O=f(3),R=f(1);class V extends h.a{get type(){return'insert'}get position(){return this._insertOperation?this._insertOperation.position:null}get nodes(){return this._insertOperation?this._insertOperation.nodes:null}get _insertOperation(){return this.operations[0]||null}get _reverseDeltaClass(){return w.a}static get className(){return'engine.model.delta.InsertDelta'}static get _priority(){return 20}}u.a=V,f.i(P.b)('insert',function(F,I){const N=f.i(E.b)(I);if(0===N.length)return this;const M=new V,D=new T.a(F,N,this.document.version);if(this.addDelta(M),M.addOperation(D),this.document.applyOperation(D),I instanceof S.a)for(const[q,z]of I.markers){const U=R.a.createAt(z.root),$=new O.a(z.start._getCombined(U,F),z.end._getCombined(U,F));this.setMarker(q,$)}return this}),C.a.register(V)},function(r,u,f){'use strict';var h=f(20),w=f(17),C=f(107),T=f(16),P=f(1),E=f(5),S=f(43),O=f(30),R=f(0);class V extends h.a{get type(){return'merge'}get position(){return this._removeOperation?this._removeOperation.sourcePosition:null}getReversed(){let F=super.getReversed();return 0q._priority)||!(D._priority{return q+z.operations.length},0)}function R(D,q){const z=D[D.length-1];let U=z.operations.length+z.baseVersion,$=new V.a;for(let K=0;K{S.has(R)&&w.call(this,R,I,V.range,V.sourcePosition)},{priority:'high'})}function w(S,O,R,V){const F=R.end.offset-R.start.offset;let I=R.start;'move'==S&&(I=I._getTransformedByInsertion(V,F));const N=this._getTransformedByDocumentChange(S,O,I,F,V);'move'==S&&3==N.length&&(N[2]=R);const M=C.a.createFromRanges(N);if(!M.isEqual(this)){const D=C.a.createFromRange(this);this.start=M.start,this.end=M.end,this.fire('change',D)}}var C=f(3),T=f(7),P=f(4);class E extends C.a{constructor(S,O){super(S,O),h.call(this)}detach(){this.stopListening()}}u.a=E,f.i(P.a)(E,T.a)},function(r,u,f){'use strict';var h=f(36),w=f(3);class C extends h.a{constructor(T,P,E,S,O){super(O),this.name=T,this.oldRange=P?w.a.createFromRange(P):null,this.newRange=E?w.a.createFromRange(E):null,this._markers=S}get type(){return'marker'}clone(){return new C(this.name,this.oldRange,this.newRange,this._markers,this.baseVersion)}getReversed(){return new C(this.name,this.newRange,this.oldRange,this._markers,this.baseVersion+1)}_execute(){const T=this.newRange?'set':'remove';return this._markers[T](this.name,this.newRange),{name:this.name,type:T}}toJSON(){const T=super.toJSON();return delete T._markers,T}static get className(){return'engine.model.operation.MarkerOperation'}static fromJSON(T,P){return new C(T.name,T.oldRange?w.a.fromJSON(T.oldRange,P):null,T.newRange?w.a.fromJSON(T.newRange,P):null,P.markers,T.baseVersion)}}u.a=C},function(r,u,f){'use strict';var h=f(30),w=f(43);class C extends h.a{get position(){return this.targetPosition}set position(T){this.targetPosition=T}get type(){return'reinsert'}getReversed(){const T=new w.a(this.targetPosition,this.howMany,this.baseVersion+1);return T.targetPosition=this.sourcePosition,T._needsHolderElement=!1,T}static get className(){return'engine.model.operation.ReinsertOperation'}}u.a=C},function(r,u,f){'use strict';var h=f(36),w=f(5),C=f(0),T=f(1);class P extends h.a{constructor(E,S,O,R){super(R),this.position=E,this.oldName=S,this.newName=O}get type(){return'rename'}clone(){return new P(T.a.createFromPosition(this.position),this.oldName,this.newName,this.baseVersion)}getReversed(){return new P(T.a.createFromPosition(this.position),this.newName,this.oldName,this.baseVersion+1)}_execute(){const E=this.position.nodeAfter;if(!(E instanceof w.a))throw new C.a('rename-operation-wrong-position: Given position is invalid or node after it is not an instance of Element.');else if(E.name!==this.oldName)throw new C.a('rename-operation-wrong-name: Element to change has different name than operation\'s old name.');return this.oldName==this.newName?void 0:(E.name=this.newName,{element:E,oldName:this.oldName})}static get className(){return'engine.model.operation.RenameOperation'}static fromJSON(E,S){return new P(T.a.fromJSON(E.position,S),E.oldName,E.newName,E.baseVersion)}}u.a=P},function(r,u,f){'use strict';var h=f(36),w=f(0);class C extends h.a{constructor(T,P,E,S,O){super(O),this.root=T,this.key=P,this.oldValue=E,this.newValue=S}get type(){return null===this.oldValue?'addRootAttribute':null===this.newValue?'removeRootAttribute':'changeRootAttribute'}clone(){return new C(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new C(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_execute(){if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new w.a('rootattribute-operation-wrong-old-value: Changed node has different attribute value than operation\'s old attribute value.',{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new w.a('rootattribute-operation-attribute-exists: The attribute with given key already exists.',{root:this.root,key:this.key});return null===this.newValue?this.root.removeAttribute(this.key):this.root.setAttribute(this.key,this.newValue),{root:this.root,key:this.key,oldValue:this.oldValue,newValue:this.newValue}}static get className(){return'engine.model.operation.RootAttributeOperation'}static fromJSON(T,P){if(!P.hasRoot(T.root))throw new w.a('rootattribute-operation-fromjson-no-root: Cannot create RootAttributeOperation. Root with specified name does not exist.',{rootName:T});return new C(P.getRoot(T.root),T.key,T.oldValue,T.newValue,T.baseVersion)}}u.a=C},function(r,u,f){'use strict';function h(){if(this.childCount)return null;let P=this.parent;for(;P&&P.is('attributeElement');){if(1'string'==typeof O?new w.a(O):O))}var w=f(31),C=f(4),T=f(48),P=f(7);class E{constructor(S){this._children=[],S&&this.insertChildren(0,S)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(S){return'documentFragment'==S}appendChildren(S){return this.insertChildren(this.childCount,S)}getChild(S){return this._children[S]}getChildIndex(S){return this._children.indexOf(S)}getChildren(){return this._children[Symbol.iterator]()}insertChildren(S,O){this._fireChange('children',this);let R=0;O=h(O);for(let V of O)V.parent=this,this._children.splice(S,0,V),S++,R++;return R}removeChildren(S,O=1){this._fireChange('children',this);for(let R=S;R{this[P](),R()})}}get first(){return this.focusables.find(h)||null}get last(){return this.focusables.filter(h).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let T=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find((P,E)=>{const S=P.element===this.focusTracker.focusedElement;return S&&(T=E),S}),T)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(T){T&&T.focus()}_getFocusableItem(T){let P=this.current;const E=this.focusables.length;if(!E)return null;if(null===P)return this[1===T?'first':'last'];let S=(P+E+T)%E;do{let O=this.focusables.get(S);if(h(O))return O;S=(S+E+T)%E}while(S!==P);return null}}u.a=C},function(r,u,f){'use strict';function h(S){return S.every((O)=>'string'==typeof O)}var w=f(0),C=f(33),T=f(80),P=f(4);class E extends T.a{constructor(S){super({idProperty:'viewUid'}),this.on('add',(O,R,V)=>{R.element&&this._parentElement&&this._parentElement.insertBefore(R.element,this._parentElement.children[V])}),this.on('remove',(O,R)=>{R.element&&this._parentElement&&R.element.remove()}),this.locale=S,this.set('ready',!1),this._parentElement=null,this._addPromises=new Set}init(){if(this.ready)throw new w.a('ui-viewcollection-init-reinit: This ViewCollection has already been initialized.');return Promise.all(this.map((S)=>S.init())).then(()=>{this.ready=!0})}destroy(){return Promise.all(this._addPromises).then(()=>{return Promise.all(this.map((S)=>S.destroy()))})}add(S,O){super.add(S,O);let R=Promise.resolve();return this.ready&&!S.ready&&(R=R.then(()=>S.init()).then(()=>this._addPromises.delete(R)),this._addPromises.add(R)),R}setParent(S){this._parentElement=S}delegate(...S){if(!S.length||!h(S))throw new w.a('ui-viewcollection-delegate-wrong-events: All event names must be strings.');return{to:(O)=>{for(let R of this)for(let V of S)R.delegate(V).to(O);this.on('add',(R,V)=>{for(let F of S)V.delegate(F).to(O)}),this.on('remove',(R,V)=>{for(let F of S)V.stopDelegating(F,O)})}}}}u.a=E,f.i(P.a)(T.a,C.a)},function(r,u,f){'use strict';function h(P,E){let S=w([P],E);S.sort((O,R)=>O.start.isBefore(R.start)?-1:1);for(let O=1;ON.start.root!=O.graveyard);I&&R.push(I)}R.length&&O.selection.setRanges(R,E)}}u.a=T},function(r,u,f){'use strict';function h(S){var O=-1,R=S?S.length:0;for(this.clear();++O=R||0>ae||X&&ne>=H}function D(){var te=f.i(C.a)();return M(te)?q(te):void(G=setTimeout(D,N(te)))}function q(te){return(clearTimeout(G),G=void 0,ee&&K)?F(te):(K=W=void 0,Y)}function $(){var te=f.i(C.a)(),ae=M(te);if(K=arguments,W=this,Z=te,ae){if(void 0===G)return I(Z);if(X)return clearTimeout(G),G=setTimeout(D,R),F(Z)}return void 0===G&&(G=setTimeout(D,R)),Y}var Z=0,J=0,Q=!1,X=!1,ee=!0,K,W,H,Y,G;if('function'!=typeof O)throw new TypeError('Expected a function');return R=f.i(T.a)(R)||0,f.i(w.a)(V)&&(Q=!!V.leading,X='maxWait'in V,H=X?_Mathmax(f.i(T.a)(V.maxWait)||0,R):H,ee='trailing'in V?!!V.trailing:ee),$.cancel=function(){void 0!==G&&clearTimeout(G),Z=J=0,K=W=G=void 0},$.flush=function(){return void 0===G?Y:q(f.i(C.a)())},$}},function(r,u,f){'use strict';var w=f(38),C=f(15);u.a=function(T,P,E){var S=T?T.length:0;return S?(P=E||void 0===P?1:f.i(C.a)(P),f.i(w.a)(T,0>P?0:P,S)):[]}},function(r,u,f){'use strict';var w=f(38),C=f(15);u.a=function(T,P,E){var S=T?T.length:0;return S?(P=E||void 0===P?1:f.i(C.a)(P),P=S-P,f.i(w.a)(T,0,0>P?0:P)):[]}},function(r,u){'use strict';u.a=function(w){return w&&w.length?w[0]:void 0}},function(r,u,f){'use strict';var w=f(13),T=Object.prototype,P=T.hasOwnProperty,E=T.toString,S=T.propertyIsEnumerable;u.a=function(O){return f.i(w.a)(O)&&P.call(O,'callee')&&(!S.call(O,'callee')||E.call(O)=='[object Arguments]')}},function(r,u,f){'use strict';var w=f(14),P=Object.prototype,E=P.toString;u.a=function(S){var O=f.i(w.a)(S)?E.call(S):'';return O=='[object Function]'||O=='[object GeneratorFunction]'}},function(r,u,f){'use strict';var w=f(12),C=f(51),P=Object.prototype,E=P.toString;u.a=function(S){return'string'==typeof S||!f.i(w.a)(S)&&f.i(C.a)(S)&&E.call(S)=='[object String]'}},function(r,u,f){'use strict';var w=f(132);u.a=function(C,T){return C&&C.length&&T&&T.length?f.i(w.a)(C,T):C}},function(r,u,f){'use strict';var w=f(197),C=f(27),T=f(100);u.a=function(P,E){if(!(P&&P.length))return[];var S=f.i(T.a)(P);return null==E?S:f.i(C.a)(S,function(O){return f.i(w.a)(E,void 0,O)})}},function(r,u,f){'use strict';var w=f(99),C=f(277);u.a=function(T){return f.i(w.a)(T)?f.i(C.a)(T):new Map(T)}},function(r,u){'use strict';function C(F,I){F.setCustomProperty(O,I)}function E(){return null}u.b=function(F){return!!F.getCustomProperty(S)},u.a=function(F,I){return I=I||{},F.setAttribute('contenteditable',!1),F.getFillerOffset=E,F.addClass(R),F.setCustomProperty(S,!0),I.label&&C(F,I.label),F},u.e=function(F){const I=F.getCustomProperty(O);return I?'function'==typeof I?I():I:''},u.c=function(F){return F.setAttribute('contenteditable','true'),F.addClass('ck-editable'),F.on('change:isFocused',(I,N,M)=>{M?F.addClass('ck-editable_focused'):F.removeClass('ck-editable_focused')}),F};const S=Symbol('isWidget'),O=Symbol('label'),R='ck-widget';u.d='ck-widget_selected'},function(r,u,f){'use strict';var h=f(6),w=f(2),C=f(188),T=f(46),P=f(177);class E extends w.a{static get pluginName(){return'image/imagetoolbar'}constructor(S){super(S),this.isEnabled=!0}afterInit(){const S=this.editor,O=S.config.get('image.toolbar');if(O&&O.length){const R=this._panel=new P.a(S),V=[],F=new C.a;return h.a.extend(F.template,{attributes:{class:'ck-editor-toolbar'}}),h.a.extend(R.template,{attributes:{class:['ck-toolbar-container']}}),V.push(R.content.add(F)),V.push(F.fillFromConfig(O,S.ui.componentFactory)),V.push(S.ui.view.body.add(R)),this.listenTo(this.editor.editing.view,'render',()=>{this.isEnabled&&this.show()},{priority:'low'}),this.listenTo(S.ui.focusTracker,'change:isFocused',(I,N,M,D)=>{!D&&M&&this.isEnabled&&this.show()}),Promise.all(V)}}show(){const S=this.editor.editing.view.selection.getSelectedElement();S&&f.i(T.a)(S)&&this._panel.attach()}hide(){this._panel.detach()}}u.a=E},function(r){var f=function(){return this}();try{f=f||Function('return this')()||(1,eval)('this')}catch(h){'object'==typeof window&&(f=window)}r.exports=f},function(r){r.exports=function(f){if(!f.webpackPolyfill){var h=Object.create(f);h.children||(h.children=[]),Object.defineProperty(h,'loaded',{enumerable:!0,get:function(){return h.l}}),Object.defineProperty(h,'id',{enumerable:!0,get:function(){return h.i}}),Object.defineProperty(h,'exports',{enumerable:!0}),h.webpackPolyfill=1}return h}},function(r,u,f){'use strict';var h=f(2),w=f(41),C=f(34),T=f(160);const P='bold';class E extends h.a{init(){const S=this.editor,O=S.data,R=S.editing;S.document.schema.allow({name:'$inline',attributes:[P],inside:'$block'}),f.i(w.a)().for(O.modelToView,R.modelToView).fromAttribute(P).toElement('strong'),f.i(C.a)().for(O.viewToModel).fromElement('strong').fromElement('b').fromAttribute('style',{'font-weight':'bold'}).toAttribute(P,!0),S.commands.set(P,new T.a(S,P))}}u.a=E},function(r,u,f){'use strict';var h=f(2),w=f(41),C=f(34),T=f(160);const P='italic';class E extends h.a{init(){const S=this.editor,O=S.data,R=S.editing;S.document.schema.allow({name:'$inline',attributes:[P],inside:'$block'}),f.i(w.a)().for(O.modelToView,R.modelToView).fromAttribute(P).toElement('em'),f.i(C.a)().for(O.viewToModel).fromElement('em').fromElement('i').fromAttribute('style',{'font-style':'italic'}).toAttribute(P,!0),S.commands.set(P,new T.a(S,P))}}u.a=E},function(r,u,f){'use strict';var w=f(37);u.a=function(C,T,P){if(T.isCollapsed)return P.check({name:'$text',inside:T.getFirstPosition(),attributes:C});const E=T.getRanges();for(let S of E){const O=new w.a({boundaries:S,mergeCharacters:!0});for(let R=O.position,V=O.next();!V.done;){const F=V.value.item.name||'$text';if(P.check({name:F,inside:R,attributes:C}))return!0;R=O.position,V=O.next()}}return!1}},function(r,u,f){'use strict';var h=f(11),w=f(101),C=f(159);class T extends h.a{constructor(P,E){super(P),this.attributeKey=E,this.set('value',!1),this.listenTo(this.editor.document.selection,'change:attribute',()=>{this.value=this.editor.document.selection.hasAttribute(this.attributeKey)})}_checkEnabled(){const P=this.editor.document;return f.i(C.a)(this.attributeKey,P.selection,P.schema)}_doExecute(P={}){const E=this.editor.document,S=E.selection,O=P.forceValue===void 0?!this.value:P.forceValue;E.enqueueChanges(()=>{if(S.isCollapsed)O?S.setAttribute(this.attributeKey,!0):S.removeAttribute(this.attributeKey);else{const R=f.i(w.a)(this.attributeKey,S.getRanges(),E.schema),V=P.batch||E.batch();for(let F of R)O?V.setAttribute(F,this.attributeKey,O):V.removeAttribute(F,this.attributeKey)}})}}u.a=T},function(r,u,f){'use strict';var h=f(1),w=f(3),C=f(26),T=f(45),P=f(31),E=f(7),S=f(4);class O{constructor(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._viewToModelLengthCallbacks=new Map,this.on('modelToViewPosition',(R,V)=>{if(!V.viewPosition){let F=this._modelToViewMapping.get(V.modelPosition.parent);V.viewPosition=this._findPositionIn(F,V.modelPosition.offset)}},{priority:'low'}),this.on('viewToModelPosition',(R,V)=>{if(V.modelPosition)return;let F=V.viewPosition.parent,I=this._viewToModelMapping.get(F);for(;!I;)F=F.parent,I=this._viewToModelMapping.get(F);let N=this._toModelOffset(V.viewPosition.parent,V.viewPosition.offset,F);V.modelPosition=h.a.createFromParentAndOffset(I,N)},{priority:'low'})}bindElements(R,V){this._modelToViewMapping.set(R,V),this._viewToModelMapping.set(V,R)}unbindViewElement(R){const V=this.toModelElement(R);this._unbindElements(V,R)}unbindModelElement(R){const V=this.toViewElement(R);this._unbindElements(R,V)}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap}toModelElement(R){return this._viewToModelMapping.get(R)}toViewElement(R){return this._modelToViewMapping.get(R)}toModelRange(R){return new w.a(this.toModelPosition(R.start),this.toModelPosition(R.end))}toViewRange(R){return new T.a(this.toViewPosition(R.start),this.toViewPosition(R.end))}toModelPosition(R){const V={viewPosition:R,mapper:this};return this.fire('viewToModelPosition',V),V.modelPosition}toViewPosition(R){const V={modelPosition:R,mapper:this};return this.fire('modelToViewPosition',V),V.viewPosition}registerViewToModelLength(R,V){this._viewToModelLengthCallbacks.set(R,V)}_toModelOffset(R,V,F){if(F!=R){const N=this._toModelOffset(R.parent,R.index,F),M=this._toModelOffset(R,V,R);return N+M}if(R.is('text'))return V;let I=0;for(let N=0;N{const D=I.selection;if(!D.isCollapsed&&N.consume(D,'selection')){M.viewSelection.removeAllRanges();for(let q of D.getRanges()){const z=M.mapper.toViewRange(q);M.viewSelection.addRange(z,D.isBackward)}}}},u.f=function(){return(F,I,N,M)=>{const D=I.selection;if(D.isCollapsed&&N.consume(D,'selection')){const q=D.getFirstPosition(),z=M.mapper.toViewPosition(q),U=V.a.breakAttributes(z);M.viewSelection.removeAllRanges(),M.viewSelection.addRange(new R.a(U,U))}}},u.a=function(F){return(I,N,M,D)=>{const q=F instanceof O.a?F.clone(!0):F(N.value,N,N.selection,M,D);if(q){const z='selectionAttribute:'+N.key;P(N.selection,D.viewSelection,q,M,z)}}},u.b=function(F){return(I,N,M,D)=>{const q=F instanceof O.a?F.clone(!0):F(N,M,D);if(q){const z='selectionMarker:'+N.name;P(N.selection,D.viewSelection,q,M,z)}}},u.c=function(){return(F,I,N,M)=>{for(let D of M.viewSelection.getRanges())D.isCollapsed&&D.end.parent.document&&V.a.mergeAttributes(D.start);M.viewSelection.removeAllRanges()}},u.d=function(){return(F,I,N,M)=>M.viewSelection.setFake(!1)}},function(r,u,f){'use strict';var h=f(350),w=f(3),C=f(1),T=f(35),P=f(7),E=f(4),S=f(50);class O{constructor(R,V={}){this._modelDocument=R,this.conversionApi=f.i(S.a)({dispatcher:this},V)}convertChange(R,V){'remove'!==R&&V.range&&'$graveyard'==V.range.root.rootName||'remove'==R&&'$graveyard'==V.sourcePosition.root.rootName||'rename'==R&&'$graveyard'==V.element.root.rootName||('insert'==R||'reinsert'==R?this.convertInsertion(V.range):'move'==R?this.convertMove(V.sourcePosition,V.range):'remove'==R?this.convertRemove(V.sourcePosition,V.range):'addAttribute'==R||'removeAttribute'==R||'changeAttribute'==R?this.convertAttribute(R,V.range,V.key,V.oldValue,V.newValue):'rename'==R&&this.convertRename(V.element,V.oldName))}convertInsertion(R){const V=this._createInsertConsumable(R);for(let F of R){const I=F.item,N=w.a.createFromPositionAndShift(F.previousPosition,F.length),M={item:I,range:N};this._testAndFire('insert',M,V);for(let D of I.getAttributeKeys())M.attributeKey=D,M.attributeOldValue=null,M.attributeNewValue=I.getAttribute(D),this._testAndFire(`addAttribute:${D}`,M,V)}for(let F of this._modelDocument.markers){const I=F.getRange();I.containsPosition(R.start)&&this.convertMarker('addMarker',F.name,I.getIntersection(R)),(R.containsRange(I)||R.isEqual(I))&&this.convertMarker('addMarker',F.name,I)}}convertMove(R,V){if(V.start.isBefore(R)){this.convertInsertion(V);const F=R._getTransformedByInsertion(V.start,V.end.offset-V.start.offset);this.convertRemove(F,V)}else this.convertRemove(R,V),this.convertInsertion(V)}convertRemove(R,V){const F=this._createConsumableForRange(V,'remove');for(let I of V.getItems({shallow:!0})){this._testAndFire(`remove`,{sourcePosition:R,item:I},F)}}convertAttribute(R,V,F,I,N){const M=this._createConsumableForRange(V,R+':'+F);for(let D of V){const q=D.item,z=w.a.createFromPositionAndShift(D.previousPosition,D.length);this._testAndFire(`${R}:${F}`,{item:q,range:z,attributeKey:F,attributeOldValue:I,attributeNewValue:N},M)}}convertRename(R,V){const F=R.clone(!0);F.name=V,this.conversionApi.mapper.bindElements(F,this.conversionApi.mapper.toViewElement(R));const I=new T.a;I.appendChildren(F),this.convertRemove(C.a.createBefore(R),w.a.createOn(F)),this.convertInsertion(w.a.createOn(R))}convertSelection(R){const V=Array.from(this._modelDocument.markers.getMarkersAtPosition(R.getFirstPosition())),F=this._createSelectionConsumable(R,V);this.fire('selection',{selection:R},F,this.conversionApi);for(let I of V){const N={selection:R,name:I.name};F.test(R,'selectionMarker:'+I.name)&&this.fire('selectionMarker:'+I.name,N,F,this.conversionApi)}for(let I of R.getAttributeKeys()){const N={selection:R,key:I,value:R.getAttribute(I)};F.test(R,'selectionAttribute:'+N.key)&&this.fire('selectionAttribute:'+N.key,N,F,this.conversionApi)}}convertMarker(R,V,F){if(F.root.document&&'$graveyard'!=F.root.rootName){const I=this._createMarkerConsumable(R,F);this.fire(R+':'+V,{name:V,range:F},I,this.conversionApi)}}_createInsertConsumable(R){const V=new h.a;for(let F of R){const I=F.item;V.add(I,'insert');for(let N of I.getAttributeKeys())V.add(I,'addAttribute:'+N)}return V}_createConsumableForRange(R,V){const F=new h.a;for(let I of R.getItems())F.add(I,V);return F}_createSelectionConsumable(R,V){const F=new h.a;F.add(R,'selection');for(let I of V)F.add(R,'selectionMarker:'+I.name);for(let I of R.getAttributeKeys())F.add(R,'selectionAttribute:'+I);return F}_createMarkerConsumable(R,V){const F=new h.a;return F.add(V,R),F}_testAndFire(R,V,F){if(F.test(V.item,R)){const I=V.item.name||'$text';this.fire(R+':'+I,V,F,this.conversionApi)}}}u.a=O,f.i(E.a)(O,P.a)},function(r,u,f){'use strict';var h=f(355),w=f(169),C=f(62);u.a=class{constructor(){this._domParser=new DOMParser,this._domConverter=new w.a({blockFiller:C.a}),this._htmlWriter=new h.a}toData(P){const E=this._domConverter.viewToDom(P,document);return this._htmlWriter.getHtml(E)}toView(P){const E=this._toDom(P);return this._domConverter.domToView(E)}_toDom(P){const E=this._domParser.parseFromString(P,'text/html'),S=E.createDocumentFragment(),O=E.body.childNodes;for(;0{R.has(F)&&w.call(this,F,I.range,I.sourcePosition)},{priority:'high'})}function w(R,V,F){let I=V.end.offset-V.start.offset,N;switch(R){case'insert':let M='sticksToNext'==this.stickiness;N=this._getTransformedByInsertion(V.start,I,M);break;case'move':case'remove':case'reinsert':let D=T.a.createFromPositionAndShift(F,I),q=D.containsPosition(this)||D.start.isEqual(this)&&'sticksToNext'==this.stickiness||D.end.isEqual(this)&&'sticksToPrevious'==this.stickiness;if(q)N=this._getCombined(F,V.start);else{let z='sticksToNext'==this.stickiness;N=this._getTransformedByMove(F,V.start,I,z)}}if(!this.isEqual(N)){const M=C.a.createFromPosition(this);this.path=N.path,this.root=N.root,this.fire('change',M)}}var C=f(1),T=f(3),P=f(7),E=f(4),S=f(0);class O extends C.a{constructor(R,V,F){if(super(R,V),!this.root.is('rootElement'))throw new S.a('model-liveposition-root-not-rootelement: LivePosition root has to be an instance of RootElement.');this.stickiness=F||'sticksToNext',h.call(this)}detach(){this.stopListening()}}u.a=O,f.i(E.a)(O,P.a)},function(r,u,f){'use strict';function h(M,D,q){let z=f.i(F.a)(M);return q&&(z=z.slice(z.indexOf(q)+1)),z.some((U)=>U.tagName&&D.includes(U.tagName.toLowerCase()))}var w=f(31),C=f(25),T=f(26),P=f(45),E=f(64),S=f(117),O=f(54),R=f(62),V=f(434),F=f(191),I=f(431);u.a=class{constructor(M={}){this.blockFiller=M.blockFiller||R.b,this.preElements=['pre'],this.blockElements=['p','div','h1','h2','h3','h4','h5','h6'],this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap}bindFakeSelection(M,D){this._fakeSelectionMapping.set(M,E.a.createFromSelection(D))}fakeSelectionToView(M){return this._fakeSelectionMapping.get(M)}bindElements(M,D){this._domToViewMapping.set(M,D),this._viewToDomMapping.set(D,M)}unbindDomElement(M){const D=this._domToViewMapping.get(M);if(D){this._domToViewMapping.delete(M),this._viewToDomMapping.delete(D);for(let q of Array.from(M.childNodes))this.unbindDomElement(q)}}bindDocumentFragments(M,D){this._domToViewMapping.set(M,D),this._viewToDomMapping.set(D,M)}viewToDom(M,D,q={}){if(M.is('text')){const z=this._processDataFromViewText(M);return D.createTextNode(z)}if(this.getCorrespondingDom(M))return this.getCorrespondingDom(M);let z;if(M.is('documentFragment'))z=D.createDocumentFragment(),q.bind&&this.bindDocumentFragments(z,M);else{z=D.createElement(M.name),q.bind&&this.bindElements(z,M);for(let U of M.getAttributeKeys())z.setAttribute(U,M.getAttribute(U))}if(q.withChildren||void 0===q.withChildren)for(let U of this.viewChildrenToDom(M,D,q))z.appendChild(U);return z}*viewChildrenToDom(M,D,q={}){let z=M.getFillerOffset&&M.getFillerOffset(),U=0;for(let $ of M.getChildren())z===U&&(yield this.blockFiller(D)),yield this.viewToDom($,D,q),U++;z===U&&(yield this.blockFiller(D))}viewRangeToDom(M){const D=this.viewPositionToDom(M.start),q=this.viewPositionToDom(M.end),z=document.createRange();return z.setStart(D.parent,D.offset),z.setEnd(q.parent,q.offset),z}viewPositionToDom(M){const D=M.parent;if(D.is('text')){const q=this.getCorrespondingDomText(D);if(!q)return null;let z=M.offset;return f.i(R.c)(q)&&(z+=R.d),{parent:q,offset:z}}let q,z,U;if(0===M.offset){if(q=this.getCorrespondingDom(M.parent),!q)return null;U=q.childNodes[0]}else{if(z=this.getCorrespondingDom(M.nodeBefore),!z)return null;q=z.parentNode,U=z.nextSibling}if(this.isText(U)&&f.i(R.c)(U))return{parent:U,offset:R.d};const $=z?f.i(V.a)(z)+1:0;return{parent:q,offset:$}}domToView(M,D={}){if(f.i(R.e)(M,this.blockFiller))return null;if(this.isText(M)){if(f.i(R.f)(M))return null;const q=this._processDataFromDomText(M);return''===q?null:new w.a(q)}if(this.isComment(M))return null;if(this.getCorrespondingView(M))return this.getCorrespondingView(M);let q;if(this.isDocumentFragment(M))q=new S.a,D.bind&&this.bindDocumentFragments(M,q);else{const z=D.keepOriginalCase?M.tagName:M.tagName.toLowerCase();q=new C.a(z),D.bind&&this.bindElements(M,q);const U=M.attributes;for(let $=U.length-1;0<=$;$--)q.setAttribute(U[$].name,U[$].value)}if(D.withChildren||void 0===D.withChildren)for(let z of this.domChildrenToView(M,D))q.appendChildren(z);return q}*domChildrenToView(M,D={}){for(let q=0;qz?0:z),new T.a(q,z)):null}if(0===D){const q=this.getCorrespondingView(M);if(q)return new T.a(q,0)}else{const q=this.getCorrespondingView(M.childNodes[D-1]);if(q&&q.parent)return new T.a(q.parent,q.index+1)}return null}getCorrespondingView(M){if(this.isElement(M))return this.getCorrespondingViewElement(M);return this.isDocumentFragment(M)?this.getCorrespondingViewDocumentFragment(M):this.isText(M)?this.getCorrespondingViewText(M):null}getCorrespondingViewElement(M){return this._domToViewMapping.get(M)}getCorrespondingViewDocumentFragment(M){return this._domToViewMapping.get(M)}getCorrespondingViewText(M){if(f.i(R.f)(M))return null;const D=M.previousSibling;if(D){if(!this.isElement(D))return null;const q=this.getCorrespondingViewElement(D);if(q){const z=q.nextSibling;return z instanceof w.a?q.nextSibling:null}}else{const q=this.getCorrespondingViewElement(M.parentNode);if(q){const z=q.getChild(0);return z instanceof w.a?z:null}}return null}getCorrespondingDom(M){if(M instanceof C.a)return this.getCorrespondingDomElement(M);return M instanceof S.a?this.getCorrespondingDomDocumentFragment(M):M instanceof w.a?this.getCorrespondingDomText(M):null}getCorrespondingDomElement(M){return this._viewToDomMapping.get(M)}getCorrespondingDomDocumentFragment(M){return this._viewToDomMapping.get(M)}getCorrespondingDomText(M){const D=M.previousSibling;return D&&this.getCorrespondingDom(D)?this.getCorrespondingDom(D).nextSibling:!D&&M.parent&&this.getCorrespondingDom(M.parent)?this.getCorrespondingDom(M.parent).childNodes[0]:null}focus(M){const D=this.getCorrespondingDomElement(M);D&&D.ownerDocument.activeElement!==D&&D.focus()}isText(M){return M&&M.nodeType==Node.TEXT_NODE}isElement(M){return M&&M.nodeType==Node.ELEMENT_NODE}isDocumentFragment(M){return M&&M.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isComment(M){return M&&M.nodeType==Node.COMMENT_NODE}isDomSelectionBackward(M){if(M.isCollapsed)return!1;const D=document.createRange();D.setStart(M.anchorNode,M.anchorOffset),D.setEnd(M.focusNode,M.focusOffset);const q=D.collapsed;return D.detach(),q}_processDataFromViewText(M){let D=M.data;if(M.getAncestors().some((K)=>this.preElements.includes(K.name)))return D;const q=this._getTouchingViewTextNode(M,!1),z=this._getTouchingViewTextNode(M,!0);let U=D.match(/ *$/)[0],$=D.substr(0,D.length-U.length);if(q&&' '!=q.data.charAt(q.data.length-1)||($=$.replace(/^ /,'\xA0')),$=$.replace(/ /g,' \xA0'),0{const N=O.document.selection.getFirstPosition().parent,M=I.batch,D=V.some((q)=>N.is(q.modelElement));D&&!N.is(E)&&0===N.childCount&&M.rename(N,E)})}}u.a=S},function(r,u,f){'use strict';function h(){return new O.a('figure',{class:'image'},new R.a('img'))}var w=f(2),C=f(41),T=f(34),P=f(381),E=f(46),S=f(5),O=f(44),R=f(170);class V extends w.a{init(){const F=this.editor,I=F.document,N=I.schema,M=F.data,D=F.editing,q=F.t;N.registerItem('image'),N.requireAttributes('image',['src']),N.allow({name:'image',attributes:['alt','src'],inside:'$root'}),N.objects.add('image'),f.i(C.a)().for(M.modelToView).fromElement('image').toElement(()=>h()),f.i(C.a)().for(D.modelToView).fromElement('image').toElement(()=>f.i(E.c)(h(),q('image widget'))),f.i(P.a)([D.modelToView,M.modelToView],'src'),f.i(P.a)([D.modelToView,M.modelToView],'alt'),f.i(T.a)().for(M.viewToModel).from({name:'img',attribute:{src:/./}}).toElement((z)=>new S.a('image',{src:z.getAttribute('src')})),M.viewToModel.on('element:img',P.b,{priority:'low'}),M.viewToModel.on('element',P.c,{priority:'low'}),f.i(T.a)().for(M.viewToModel).from({name:'img',attribute:{alt:/./}}).consuming({attribute:['alt']}).toAttribute((z)=>({key:'alt',value:z.getAttribute('alt')})),M.viewToModel.on('element:figure',f.i(P.d)())}}u.a=V},function(r,u,f){'use strict';var h=f(535),w=f(47),C=f(187),T=f(46);class P extends C.a{constructor(E){super(E.locale),this.editor=E;const S=E.editing.view;this.listenTo(E.ui.focusTracker,'change:isFocused',(O,R,V,F)=>{F&&!V&&this.detach()}),E.listenTo(S,'render',()=>{const O=S.selection.getSelectedElement();O&&f.i(T.a)(O)||this.detach()},{priority:'low'}),this._throttledAttach=f.i(h.a)(()=>{this._attach()},100)}init(){return this.editor.ui.focusTracker.add(this.element),super.init()}attach(){this._attach(),this.editor.ui.view.listenTo(w.a.window,'scroll',this._throttledAttach),this.editor.ui.view.listenTo(w.a.window,'resize',this._throttledAttach)}detach(){this.hide(),this.editor.ui.view.stopListening(w.a.window,'scroll',this._throttledAttach),this.editor.ui.view.stopListening(w.a.window,'resize',this._throttledAttach)}_attach(){const E=this.editor.editing.view,S=C.a.defaultPositions;this.attachTo({target:E.domConverter.viewToDom(E.selection.getSelectedElement()),positions:[S.northArrowSouth,S.southArrowNorth]})}}u.a=P},function(r,u,f){'use strict';function w(P,E,S){let O=P.textNode||(S?P.nodeBefore:P.nodeAfter),R=null;for(;O&&O.getAttribute('linkHref')==E;)R=O,O=S?O.previousSibling:O.nextSibling;return R?T.a.createAt(R,S?'before':'after'):P}var C=f(3),T=f(1);u.a=function(P,E){return new C.a(w(P,E,!0),w(P,E,!1))}},function(r,u,f){'use strict';var h=f(116);class w extends h.a{}u.a=w},function(r,u,f){'use strict';function h(O){let R=1;for(let V of O.getChildren())if('ul'==V.name||'ol'==V.name)for(let F of V.getChildren())R+=h(F);return R}var w=f(397),C=f(396),T=f(2),P=f(73),E=f(395);class S extends T.a{static get requires(){return[P.a]}init(){const O=this.editor,R=O.document.schema;R.registerItem('listItem','$block'),R.allow({name:'listItem',inside:'$root',attributes:['type','indent']}),R.requireAttributes('listItem',['type','indent']);const V=O.data,F=O.editing;this.editor.document.on('change',f.i(E.a)(this.editor.document),{priority:'high'}),this.editor.document.on('change',(I,N,M)=>{if('move'==N)for(let D of M.range.getItems())D.is('listItem')&&F.mapper.unbindModelElement(D)},{priority:'high'}),F.mapper.registerViewToModelLength('li',h),V.mapper.registerViewToModelLength('li',h),F.mapper.on('modelToViewPosition',E.b),F.mapper.on('viewToModelPosition',E.c),V.mapper.on('modelToViewPosition',E.b),F.modelToView.on('insert',E.d,{priority:'high'}),F.modelToView.on('insert:listItem',E.e),V.modelToView.on('insert',E.d,{priority:'high'}),V.modelToView.on('insert:listItem',E.e),F.modelToView.on('changeAttribute:type:listItem',E.f),V.modelToView.on('changeAttribute:type:listItem',E.f),F.modelToView.on('remove:listItem',E.g),F.modelToView.on('remove',E.h,{priority:'low'}),V.modelToView.on('remove:listItem',E.g),V.modelToView.on('remove',E.h,{priority:'low'}),F.modelToView.on('changeAttribute:indent:listItem',E.i),V.modelToView.on('changeAttribute:indent:listItem',E.i),V.viewToModel.on('element:ul',E.j,{priority:'high'}),V.viewToModel.on('element:ol',E.j,{priority:'high'}),V.viewToModel.on('element:li',E.k,{priority:'high'}),V.viewToModel.on('element:li',E.l),V.on('insertContent',E.m,{priority:'high'}),O.commands.set('numberedList',new w.a(O,'numbered')),O.commands.set('bulletedList',new w.a(O,'bulleted')),O.commands.set('indentList',new C.a(O,'forward')),O.commands.set('outdentList',new C.a(O,'backward'))}}u.a=S},function(r,u,f){'use strict';var h=f(189);class w{constructor(C,T=20){this.document=C,this.size=0,this.limit=T,this.isLocked=!1,this._changeCallback=(P,E,S,O)=>{this._onBatch(O)},this._selectionChangeCallback=()=>{this._reset()},C.on('change',this._changeCallback),C.selection.on('change:range',this._selectionChangeCallback),C.selection.on('change:attribute',this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.document.batch()),this._batch}input(C){this.size+=C,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.document.off('change',this._changeCallback),this.document.selection.off('change:range',this._selectionChangeCallback),this.document.selection.off('change:attribute',this._selectionChangeCallback)}_onBatch(C){'transparent'!=C.type&&C!==this._batch&&1>=f.i(h.a)(C.getOperations())&&this._reset(!0)}_reset(C){(!this.isLocked||C)&&(this._batch=null,this.size=0)}}u.a=w},function(r,u){'use strict';u.a=function({emitter:w,activator:C,callback:T,contextElement:P}){w.listenTo(document,'mouseup',(E,{target:S})=>{C()&&!P.contains(S)&&T()})}},function(r,u){'use strict';u.a=function(w){return w.bindTemplate.to((C)=>{C.target===w.element&&C.preventDefault()})}},function(r,u){'use strict';u.a=function({view:w}){w.listenTo(w.element,'submit',(C,T)=>{T.preventDefault(),w.fire('submit')},{useCapture:!0})}},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T){super(T),this.set('value'),this.set('id');const P=this.bindTemplate;this.template=new w.a({tag:'input',attributes:{type:'text',class:['ck-input','ck-input-text'],id:P.to('id')}}),this.on('change:value',(E,S,O)=>this.element.value=O||'')}select(){this.element.select()}focus(){this.element.focus()}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(72),T=f(417);class P extends h.a{constructor(E,S){super(E);const O=`ck-input-${f.i(C.a)()}`;this.set('label'),this.set('value'),this.labelView=this._createLabelView(O),this.inputView=this._createInputView(S,O),this.template=new w.a({tag:'div',children:[this.labelView,this.inputView]})}_createLabelView(E){const S=new T.a(this.locale);return S.for=E,S.bind('text').to(this,'label'),S}_createInputView(E,S){const O=new E(this.locale);return O.id=S,O.bind('value').to(this),O}select(){this.inputView.select()}focus(){this.inputView.focus()}}u.a=P},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(436),T=f(192),P=f(237),E=f(193),S=f(183),O=f(47);const R=f.i(E.a)('px'),V=O.a.document.body;class F extends h.a{constructor(I){super(I);const N=this.bindTemplate;this.set('top',0),this.set('left',0),this.set('position','arrow_ne'),this.set('isVisible',!1),this.set('withArrow',!0),this.set('className'),this.content=this.createCollection(),this.template=new w.a({tag:'div',attributes:{class:['ck-balloon-panel',N.to('position',(M)=>`ck-balloon-panel_${M}`),N.if('isVisible','ck-balloon-panel_visible'),N.if('withArrow','ck-balloon-panel_with-arrow'),N.to('className')],style:{top:N.to('top',R),left:N.to('left',R),maxWidth:N.to('maxWidth',R)}},children:this.content,on:{mousedown:f.i(S.a)(this)}})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(I){this.show();const N=F.defaultPositions,M=Object.assign({},{element:this.element,positions:[N.southEastArrowNorthEast,N.southWestArrowNorthEast,N.northEastArrowSouthWest,N.northWestArrowSouthEast],limiter:V,fitInViewport:!0},I),{top:D,left:q,name:z}=f.i(C.a)(M);Object.assign(this,{top:D,left:q,position:z})}pin(I){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(I):this._stopPinning()},this._startPinning(I),this.listenTo(this,'change:isVisible',this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,'change:isVisible',this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(I){this.attachTo(I);const N=I.limiter||V;let M=null;f.i(P.a)(I.target)?M=I.target:f.i(T.a)(I.target)&&(M=I.target.commonAncestorContainer),this.listenTo(O.a.document,'scroll',(D,q)=>{(M&&q.target.contains(M)||q.target.contains(N))&&this.attachTo(I)},{useCapture:!0}),this.listenTo(O.a.window,'resize',()=>{this.attachTo(I)})}_stopPinning(){this.stopListening(O.a.document,'scroll'),this.stopListening(O.a.window,'resize')}}u.a=F,F.arrowHorizontalOffset=30,F.arrowVerticalOffset=15,F.defaultPositions={southEastArrowNorthEast:(I)=>({top:I.bottom+F.arrowVerticalOffset,left:I.left+I.width/2-F.arrowHorizontalOffset,name:'arrow_ne'}),southWestArrowNorthEast:(I,N)=>({top:I.bottom+F.arrowVerticalOffset,left:I.left+I.width/2-N.width+F.arrowHorizontalOffset,name:'arrow_nw'}),northEastArrowSouthWest:(I,N)=>({top:I.top-N.height-F.arrowVerticalOffset,left:I.left+I.width/2-F.arrowHorizontalOffset,name:'arrow_se'}),northWestArrowSouthEast:(I,N)=>({top:I.top-N.height-F.arrowVerticalOffset,left:I.left+I.width/2-N.width+F.arrowHorizontalOffset,name:'arrow_sw'}),southEastArrowNorth:(I,N)=>({top:I.bottom+F.arrowVerticalOffset,left:I.right-N.width/2,name:'arrow_n'}),northEastArrowSouth:(I,N)=>({top:I.top-N.height-F.arrowVerticalOffset,left:I.right-N.width/2,name:'arrow_s'}),northWestArrowSouth:(I,N)=>({top:I.top-N.height-F.arrowVerticalOffset,left:I.left-N.width/2,name:'arrow_s'}),southWestArrowNorth:(I,N)=>({top:I.bottom+F.arrowVerticalOffset,left:I.left-N.width/2,name:'arrow_n'}),southArrowNorth:(I,N)=>({top:I.bottom+F.arrowVerticalOffset,left:I.left+I.width/2-N.width/2,name:'arrow_n'}),northArrowSouth:(I,N)=>({top:I.top-N.height-F.arrowVerticalOffset,left:I.left+I.width/2-N.width/2,name:'arrow_s'})}},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(67),T=f(119),P=f(68),E=f(424),S=f(183);class O extends h.a{constructor(R){super(R),this.items=this.createCollection(),this.focusTracker=new C.a,this.keystrokes=new P.a,this._focusCycler=new T.a({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:['arrowleft','arrowup'],focusNext:['arrowright','arrowdown']}}),this.template=new w.a({tag:'div',attributes:{class:['ck-toolbar']},children:this.items,on:{mousedown:f.i(S.a)(this)}}),this.items.on('add',(V,F)=>{this.focusTracker.add(F.element)}),this.items.on('remove',(V,F)=>{this.focusTracker.remove(F.element)})}init(){return this.keystrokes.listenTo(this.element),super.init()}focus(){this._focusCycler.focusFirst()}fillFromConfig(R,V){return R?Promise.all(R.map((F)=>{const I='|'==F?new E.a:V.create(F);return this.items.add(I)})):Promise.resolve()}}u.a=O},function(r,u){'use strict';u.a=function(w){let C=0;for(let T of w)C++;return C}},function(r,u){'use strict';u.a=function(w,C,T){function P(D){const q=(I[D-1]===void 0?-1:I[D-1])+1,z=I[D+1]===void 0?-1:I[D+1],U=q>z?-1:1;F[D+U]&&(F[D]=F[D+U].slice(0)),F[D]||(F[D]=[]),F[D].push(q>z?E:S);let $=_Mathmax(q,z),K=$-D;for(;KV;M--)I[M]=P(M);I[V]=P(V),N++}while(I[V]!==R);return F[V].slice(1)}},function(r,u){'use strict';u.a=function(w){const C=[];for(;w&&w.nodeType!=Node.DOCUMENT_NODE;)C.unshift(w),w=w.parentNode;return C}},function(r,u){'use strict';u.a=function(w){return'[object Range]'==Object.prototype.toString.apply(w)}},function(r,u){'use strict';u.a=function(w){return(C)=>C+w}},function(r,u,f){'use strict';var h=f(55),w=f(32),C=f.i(h.a)(w.a,'Map');u.a=C},function(r,u,f){'use strict';var h=f(55),w=f(32),C=f.i(h.a)(w.a,'Set');u.a=C},function(r,u,f){'use strict';var h=f(32),w=h.a.Uint8Array;u.a=w},function(r,u){'use strict';u.a=function(w,C,T){var P=T.length;return 0===P?w.call(C):1===P?w.call(C,T[0]):2===P?w.call(C,T[0],T[1]):3===P?w.call(C,T[0],T[1],T[2]):w.apply(C,T)}},function(r,u){'use strict';u.a=function(w,C,T,P){var E=-1,S=w.length;for(P&&S&&(T=w[++E]);++EN))return!1;var D=F.get(E);if(D)return D==S;var q=-1,z=!0,U=V&1?new w.a:void 0;for(F.set(E,S);++qO)return[];for(var F=0,I=0,N=Array(P(V/O));FS&&(S=_Mathmax(O+S,0)),f.i(w.a)(P,E,S)):-1}},function(r,u,f){'use strict';var w=f(145);u.a=function(C){return f.i(w.a)(C,1)}},function(r,u,f){'use strict';var h=f(27),w=f(129),C=f(137),T=f(8),P=f.i(T.a)(function(E){var S=f.i(h.a)(E,C.a);return S.length&&S[0]===E[0]?f.i(w.a)(S):[]});u.a=P},function(r,u,f){'use strict';var h=f(27),w=f(129),C=f(10),T=f(137),P=f(19),E=f(8),S=f.i(E.a)(function(O){var R=f.i(P.a)(O),V=f.i(h.a)(O,T.a);return R===f.i(P.a)(V)?R=void 0:V.pop(),V.length&&V[0]===O[0]?f.i(w.a)(V,f.i(C.a)(R)):[]});u.a=S},function(r,u,f){'use strict';var h=f(27),w=f(129),C=f(137),T=f(19),P=f(8),E=f.i(P.a)(function(S){var O=f.i(T.a)(S),R=f.i(h.a)(S,C.a);return O===f.i(T.a)(R)?O=void 0:R.pop(),R.length&&R[0]===S[0]?f.i(w.a)(R,void 0,O):[]});u.a=E},function(r,u,f){'use strict';var w=f(51),C=f(99);u.a=function(T){return!!T&&1===T.nodeType&&f.i(w.a)(T)&&!f.i(C.a)(T)}},function(r,u,f){'use strict';var w=f(148),C=f(91),T=f(14),P=f(213),E=/[\\^$.*+?()[\]{}|]/g,S=/^\[object .+?Constructor\]$/,O=Object.prototype,R=Function.prototype.toString,V=O.hasOwnProperty,F=RegExp('^'+R.call(V).replace(E,'\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,'$1.*?')+'$');u.a=function(I){if(!f.i(T.a)(I))return!1;var N=f.i(w.a)(I)||f.i(C.a)(I)?F:S;return N.test(f.i(P.a)(I))}},function(r,u){'use strict';var w=Array.prototype,C=w.join;u.a=function(T,P){return T?C.call(T,P):''}},function(r,u,f){'use strict';var w=f(210),C=f(15);u.a=function(E,S,O){var R=E?E.length:0;if(!R)return-1;var V=R;if(void 0!==O&&(V=f.i(C.a)(O),V=(0>V?_Mathmax(R+V,0):_Mathmin(V,R-1))+1),S!==S)return f.i(w.a)(E,V,!0);for(;V--;)if(E[V]===S)return V;return-1}},function(r,u,f){'use strict';var w=f(466),C=f(15);u.a=function(T,P){return T&&T.length?f.i(w.a)(T,f.i(C.a)(P)):void 0}},function(r,u,f){'use strict';var h=f(150),w=f(8),C=f.i(w.a)(h.a);u.a=C},function(r,u,f){'use strict';var w=f(10),C=f(132);u.a=function(T,P,E){return T&&T.length&&P&&P.length?f.i(C.a)(T,P,f.i(w.a)(E)):T}},function(r,u,f){'use strict';var w=f(132);u.a=function(C,T,P){return C&&C.length&&T&&T.length?f.i(w.a)(C,T,void 0,P):C}},function(r,u,f){'use strict';var h=f(27),w=f(453),C=f(23),T=f(202),P=f(479),E=f(39),S=f(8),O=f.i(S.a)(function(R,V){V=f.i(C.a)(V,1);var F=R?R.length:0,I=f.i(w.a)(R,V);return f.i(T.a)(R,f.i(h.a)(V,function(N){return f.i(E.a)(N,F)?+N:N}).sort(P.a)),I});u.a=O},function(r,u,f){'use strict';var w=f(10),C=f(202);u.a=function(T,P){var E=[];if(!(T&&T.length))return E;var S=-1,O=[],R=T.length;for(P=f.i(w.a)(P,3);++SP?0:P)):[]}},function(r,u,f){'use strict';var w=f(38),C=f(15);u.a=function(T,P,E){var S=T?T.length:0;return S?(P=E||void 0===P?1:f.i(C.a)(P),P=S-P,f.i(w.a)(T,0>P?0:P,S)):[]}},function(r,u,f){'use strict';var w=f(10),C=f(88);u.a=function(T,P){return T&&T.length?f.i(C.a)(T,f.i(w.a)(P,3),!1,!0):[]}},function(r,u,f){'use strict';var w=f(10),C=f(88);u.a=function(T,P){return T&&T.length?f.i(C.a)(T,f.i(w.a)(P,3)):[]}},function(r,u,f){'use strict';var w=f(148),C=f(14),T=f(52),P=0/0,E=/^\s+|\s+$/g,S=/^[-+]0x[0-9a-f]+$/i,O=/^0b[01]+$/i,R=/^0o[0-7]+$/i,V=parseInt;u.a=function(F){if('number'==typeof F)return F;if(f.i(T.a)(F))return P;if(f.i(C.a)(F)){var I=f.i(w.a)(F.valueOf)?F.valueOf():F;F=f.i(C.a)(I)?I+'':I}if('string'!=typeof F)return 0===F?F:+F;F=F.replace(E,'');var N=O.test(F);return N||R.test(F)?V(F.slice(2),N?2:8):S.test(F)?P:+F}},function(r,u,f){'use strict';var h=f(23),w=f(49),C=f(13),T=f(8),P=f.i(T.a)(function(E){return f.i(w.a)(f.i(h.a)(E,1,C.a,!0))});u.a=P},function(r,u,f){'use strict';var h=f(23),w=f(10),C=f(49),T=f(13),P=f(19),E=f(8),S=f.i(E.a)(function(O){var R=f.i(P.a)(O);return f.i(T.a)(R)&&(R=void 0),f.i(C.a)(f.i(h.a)(O,1,T.a,!0),f.i(w.a)(R))});u.a=S},function(r,u,f){'use strict';var h=f(23),w=f(49),C=f(13),T=f(19),P=f(8),E=f.i(P.a)(function(S){var O=f.i(T.a)(S);return f.i(C.a)(O)&&(O=void 0),f.i(w.a)(f.i(h.a)(S,1,C.a,!0),void 0,O)});u.a=E},function(r,u,f){'use strict';var w=f(49);u.a=function(C){return C&&C.length?f.i(w.a)(C):[]}},function(r,u,f){'use strict';var w=f(10),C=f(49);u.a=function(T,P){return T&&T.length?f.i(C.a)(T,f.i(w.a)(P)):[]}},function(r,u,f){'use strict';var w=f(49);u.a=function(C,T){return C&&C.length?f.i(w.a)(C,void 0,T):[]}},function(r,u,f){'use strict';var h=f(70),w=f(13),C=f(8),T=f.i(C.a)(function(P,E){return f.i(w.a)(P)?f.i(h.a)(P,E):[]});u.a=T},function(r,u,f){'use strict';var h=f(84),w=f(135),C=f(13),T=f(8),P=f.i(T.a)(function(E){return f.i(w.a)(f.i(h.a)(E,C.a))});u.a=P},function(r,u,f){'use strict';var h=f(84),w=f(10),C=f(135),T=f(13),P=f(19),E=f(8),S=f.i(E.a)(function(O){var R=f.i(P.a)(O);return f.i(T.a)(R)&&(R=void 0),f.i(C.a)(f.i(h.a)(O,T.a),f.i(w.a)(R))});u.a=S},function(r,u,f){'use strict';var h=f(84),w=f(135),C=f(13),T=f(19),P=f(8),E=f.i(P.a)(function(S){var O=f.i(T.a)(S);return f.i(C.a)(O)&&(O=void 0),f.i(w.a)(f.i(h.a)(S,C.a),void 0,O)});u.a=E},function(r,u,f){'use strict';var h=f(8),w=f(100),C=f.i(h.a)(w.a);u.a=C},function(r,u,f){'use strict';var w=f(69),C=f(205);u.a=function(T,P){return f.i(C.a)(T||[],P||[],w.a)}},function(r,u,f){'use strict';var w=f(468),C=f(205);u.a=function(T,P){return f.i(C.a)(T||[],P||[],w.a)}},function(r,u,f){'use strict';var h=f(8),w=f(151),C=f.i(h.a)(function(T){var P=T.length,E=1{const{batch:V,match:F}=R,I=F[1].length;this.editor.execute(`heading${I}`,{batch:V})})}_addInlineAutoformats(){new w.a(this.editor,/(\*\*)([^\*]+)(\*\*)$/g,'bold'),new w.a(this.editor,/(__)([^_]+)(__)$/g,'bold'),new w.a(this.editor,/(?:^|[^\*])(\*)([^\*_]+)(\*)$/g,'italic'),new w.a(this.editor,/(?:^|[^_])(_)([^_]+)(_)$/g,'italic')}}u.a=O},function(r,u,f){'use strict';var h=f(2),w=f(157),C=f(21),T=f(305),P=f.n(T);class E extends h.a{static get requires(){return[w.a]}static get pluginName(){return'basic-styles/bold'}init(){const S=this.editor,O=S.t,R=S.commands.get('bold'),V='CTRL+B';S.ui.componentFactory.add('bold',(F)=>{const I=new C.a(F);return I.set({label:O('Bold'),icon:P.a,keystroke:V,tooltip:!0}),I.bind('isOn','isEnabled').to(R,'value','isEnabled'),this.listenTo(I,'execute',()=>S.execute('bold')),I}),S.keystrokes.set(V,'bold')}}u.a=E},function(r,u,f){'use strict';var h=f(2),w=f(158),C=f(21),T=f(306),P=f.n(T);class E extends h.a{static get requires(){return[w.a]}static get pluginName(){return'basic-styles/italic'}init(){const S=this.editor,O=S.t,R=S.commands.get('italic'),V='CTRL+I';S.ui.componentFactory.add('italic',(F)=>{const I=new C.a(F);return I.set({label:O('Italic'),icon:P.a,keystroke:V,tooltip:!0}),I.bind('isOn','isEnabled').to(R,'value','isEnabled'),this.listenTo(I,'execute',()=>S.execute('italic')),I}),S.keystrokes.set(V,'italic')}}u.a=E},function(r,u,f){'use strict';var h=f(2),w=f(330),C=f(21),T=f(310),P=f.n(T),E=f(318),S=f.n(E);class O extends h.a{static get requires(){return[w.a]}static get pluginName(){return'block-quote/blockquote'}init(){const R=this.editor,V=R.t,F=R.commands.get('blockQuote');R.ui.componentFactory.add('blockQuote',(I)=>{const N=new C.a(I);return N.set({label:V('Block quote'),icon:P.a,tooltip:!0}),N.bind('isOn','isEnabled').to(F,'value','isEnabled'),this.listenTo(N,'execute',()=>R.execute('blockQuote')),N})}afterInit(){const R=this.editor,V=R.commands.get('blockQuote');this.listenTo(this.editor.editing.view,'enter',(F,I)=>{const N=this.editor.document,M=N.selection.getLastPosition().parent;N.selection.isCollapsed&&M.isEmpty&&V.value&&(this.editor.execute('blockQuote'),I.preventDefault(),F.stop())})}}u.a=O},function(r){'use strict';r.exports={toolbar:['headings','bold','italic','link','unlink','bulletedList','numberedList','blockQuote','undo','redo'],image:{toolbar:['imageStyleFull','imageStyleSide','|','imageTextAlternative']}}},function(r,u,f){'use strict';var h=f(340),w=f(164),C=f(342),T=f(343),P=f(440),E=f(319),S=f.n(E);class O extends h.a{constructor(R,V){super(R,V),this.document.createRoot(),this.data.processor=new w.a,this.ui=new C.a(this,new T.a(this.locale)),this._elementReplacer=new P.a}destroy(){return this.updateEditorElement(),this._elementReplacer.restore(),this.ui.destroy().then(()=>super.destroy())}static create(R,V){return new Promise((F)=>{const I=new this(R,V);F(I.initPlugins().then(()=>I._elementReplacer.replace(R,I.ui.view.element)).then(()=>I.ui.init()).then(()=>I.fire('uiReady')).then(()=>I.editing.view.attachDomRoot(I.ui.view.editableElement)).then(()=>I.loadDataFromEditorElement()).then(()=>{I.fire('dataReady'),I.fire('ready')}).then(()=>I))})}}u.a=O},function(r,u,f){'use strict';function h(I,N){return Array.prototype.concat(...I.map((M)=>[M,N]))}var w=f(73),C=f(175),T=f(2),P=f(420),E=f(411),S=f(80),O=f(6),R=f(321),V=f.n(R);class F extends T.a{static get requires(){return[w.a,C.a]}static get pluginName(){return'heading/heading'}init(){const I=this.editor,N=new S.a,M=this._getLocalizedOptions(),D=[],q=I.t,z=q('Choose heading'),U=q('Heading');for(let K of M){const W=I.commands.get(K.modelElement),H=new P.a({commandName:K.modelElement,label:K.title,class:K.class});H.bind('isActive').to(W,'value'),N.add(H),D.push(W)}const $=new P.a({withText:!0,items:N,tooltip:U});$.bind('isEnabled').to(...h(D,'isEnabled'),(...K)=>K.some((W)=>W)),$.bind('label').to(...h(D,'value'),(...K)=>{const W=K.findIndex((H)=>H);return M[W]?M[W].title:z}),I.ui.componentFactory.add('headings',(K)=>{const W=f.i(E.a)($,K);return O.a.extend(W.template,{attributes:{class:['ck-heading-dropdown']}}),this.listenTo(W,'execute',(H)=>{I.execute(H.source.commandName),I.editing.view.focus()}),W})}_getLocalizedOptions(){const I=this.editor,N=I.t,M={Paragraph:N('Paragraph'),'Heading 1':N('Heading 1'),'Heading 2':N('Heading 2'),'Heading 3':N('Heading 3')};return I.config.get('heading.options').map((D)=>{const q=M[D.title];return q&&q!=D.title&&(D=Object.assign({},D,{title:q})),D})}}u.a=F},function(r,u,f){'use strict';var h=f(2),w=f(176),C=f(545),T=f(387),P=f(324),E=f.n(P);class S extends h.a{static get requires(){return[w.a,C.a,T.a]}static get pluginName(){return'image/image'}}u.a=S},function(r,u,f){'use strict';var h=f(2),w=f(382),C=f(322),T=f.n(C);class P extends h.a{static get requires(){return[w.a]}static get pluginName(){return'image/imagecaption'}}u.a=P},function(r,u,f){'use strict';var h=f(2),w=f(386),C=f(21);class T extends h.a{static get requires(){return[w.a]}static get pluginName(){return'image/imagestyle'}init(){const P=this.editor.config.get('image.styles');for(let E of P)this._createButton(E)}_createButton(P){const E=this.editor,S=E.commands.get(P.name);E.ui.componentFactory.add(P.name,(O)=>{const R=new C.a(O);return R.set({label:P.title,icon:P.icon,tooltip:!0}),R.bind('isEnabled').to(S,'isEnabled'),R.bind('isOn').to(S,'value'),this.listenTo(R,'execute',()=>E.execute(P.name)),R})}}u.a=T},function(r,u,f){'use strict';var h=f(2),w=f(368),C=f(392),T=f(179),P=f(421),E=f(182),S=f(21),O=f(393),R=f(311),V=f.n(R),F=f(312),I=f.n(F),N=f(325),M=f.n(N);class D extends h.a{static get requires(){return[C.a,P.a]}static get pluginName(){return'link/link'}init(){this.editor.editing.view.addObserver(w.a),this.formView=this._createForm(),this._balloon=this.editor.plugins.get(P.a),this._createToolbarLinkButton(),this._createToolbarUnlinkButton(),this._attachActions()}_createForm(){const q=this.editor,z=new O.a(q.locale);return z.urlInputView.bind('value').to(q.commands.get('link'),'value'),this.listenTo(z,'submit',()=>{q.execute('link',z.urlInputView.inputView.element.value),this._hidePanel(!0)}),this.listenTo(z,'unlink',()=>{q.execute('unlink'),this._hidePanel(!0)}),this.listenTo(z,'cancel',()=>this._hidePanel(!0)),z.keystrokes.set('Esc',(U,$)=>{this._hidePanel(!0),$()}),z}_createToolbarLinkButton(){const q=this.editor,z=q.commands.get('link'),U=q.t;q.keystrokes.set('CTRL+K',()=>this._showPanel(!0)),q.ui.componentFactory.add('link',($)=>{const K=new S.a($);return K.isEnabled=!0,K.label=U('Link'),K.icon=V.a,K.keystroke='CTRL+K',K.tooltip=!0,K.bind('isEnabled').to(z,'isEnabled'),this.listenTo(K,'execute',()=>this._showPanel(!0)),K})}_createToolbarUnlinkButton(){const q=this.editor,z=q.t,U=q.commands.get('unlink');q.ui.componentFactory.add('unlink',($)=>{const K=new S.a($);return K.isEnabled=!1,K.label=z('Unlink'),K.icon=I.a,K.tooltip=!0,K.bind('isEnabled').to(U,'isEnabled'),this.listenTo(K,'execute',()=>q.execute('unlink')),K})}_attachActions(){const q=this.editor.editing.view;this.listenTo(q,'click',()=>{const z=q.selection,U=this._getSelectedLinkElement();z.isCollapsed&&U&&this._showPanel()}),this.editor.keystrokes.set('Tab',(z,U)=>{this._balloon.visibleView!==this.formView||this.formView.focusTracker.isFocused||(this.formView.focus(),U())}),this.editor.keystrokes.set('Esc',(z,U)=>{this._balloon.visibleView===this.formView&&(this._hidePanel(),U())}),f.i(E.a)({emitter:this.formView,activator:()=>this._balloon.hasView(this.formView),contextElement:this._balloon.view.element,callback:()=>this._hidePanel()})}_showPanel(q){const z=this.editor.editing,U=z.view,$=U.selection.isCollapsed,K=this._getSelectedLinkElement();return this.formView.unlinkButtonView.isVisible=!!K,this.listenTo(U,'render',()=>{const W=this._getSelectedLinkElement(),H=U.selection.isCollapsed;$&&!H||K!==W?this._hidePanel(!0):W?this._balloon.updatePosition():this._balloon.updatePosition(this._getBalloonPositionData())}),this._balloon.hasView(this.formView)?(q&&this._balloon.visibleView===this.formView&&this.formView.urlInputView.select(),Promise.resolve()):this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}).then(()=>{q&&this.formView.urlInputView.select()})}_hidePanel(q){this.stopListening(this.editor.editing.view,'render');this._balloon.hasView(this.formView)&&(q&&this.editor.editing.view.focus(),this.stopListening(this.editor.editing.view,'render'),this._balloon.remove(this.formView))}_getBalloonPositionData(){const q=this.editor.editing.view,z=this._getSelectedLinkElement(),U=z?q.domConverter.getCorrespondingDomElement(z):q.domConverter.viewRangeToDom(q.selection.getFirstRange());return{target:U,limiter:q.domConverter.getCorrespondingDomElement(q.selection.editableElement)}}_getSelectedLinkElement(){return this.editor.editing.view.selection.getFirstPosition().parent.getAncestors().find((q)=>q instanceof T.a)}}u.a=D},function(r,u,f){'use strict';var h=f(180),w=f(314),C=f.n(w),T=f(313),P=f.n(T),E=f(2),S=f(22),O=f(21);class R extends E.a{static get requires(){return[h.a]}static get pluginName(){return'list/list'}init(){const V=this.editor.t;this._addButton('numberedList',V('Numbered List'),C.a),this._addButton('bulletedList',V('Bulleted List'),P.a),this.listenTo(this.editor.editing.view,'enter',(F,I)=>{const N=this.editor.document,M=N.selection.getLastPosition().parent;N.selection.isCollapsed&&'listItem'==M.name&&M.isEmpty&&(this.editor.execute('outdentList'),I.preventDefault(),F.stop())}),this.listenTo(this.editor.editing.view,'keydown',(F,I)=>{let N;if(I.keystroke==f.i(S.a)('Tab')?N='indentList':I.keystroke==f.i(S.a)('Shift+Tab')&&(N='outdentList'),N){const M=this.editor.commands.get(N);M.isEnabled&&(this.editor.execute(N),I.preventDefault(),F.stop())}})}_addButton(V,F,I){const N=this.editor,M=N.commands.get(V);N.ui.componentFactory.add(V,(D)=>{const q=new O.a(D);return q.set({label:F,icon:I,tooltip:!0}),q.bind('isOn','isEnabled').to(M,'value','isEnabled'),this.listenTo(q,'execute',()=>N.execute(V)),q})}}u.a=R},function(r,u,f){'use strict';var h=f(2),w=f(332),C=f(377),T=f(405),P=f(426);class E extends h.a{static get requires(){return[w.a,C.a,T.a,P.a]}}u.a=E},function(r,u){'use strict';function h(N){var M=N.length;if(0>18]+S[63&N>>12]+S[63&N>>6]+S[63&N]}function P(N,M,D){for(var z=[],U=M,q;U>16,$[W++]=255&z>>8,$[W++]=255&z;return 2===U?(z=O[N.charCodeAt(M)]<<2|O[N.charCodeAt(M+1)]>>4,$[W++]=255&z):1===U&&(z=O[N.charCodeAt(M)]<<10|O[N.charCodeAt(M+1)]<<4|O[N.charCodeAt(M+2)]>>2,$[W++]=255&z>>8,$[W++]=255&z),$},u.fromByteArray=function(N){for(var D=N.length,q=D%3,z='',U=[],$=16383,K=0,W=D-q,M;KW?W:K+$));return 1==q?(M=N[D-1],z+=S[M>>2],z+=S[63&M<<4],z+='=='):2==q&&(M=(N[D-2]<<8)+N[D-1],z+=S[M>>10],z+=S[63&M>>4],z+=S[63&M<<2],z+='='),U.push(z),U.join('')};for(var S=[],O=[],R='undefined'==typeof Uint8Array?Array:Uint8Array,V='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',F=0,I=V.length;FTe)throw new RangeError('"size" argument must not be negative')}function O(Te,Pe,Ee,Se){return S(Pe),0>=Pe?T(Te,Pe):void 0===Ee?T(Te,Pe):'string'==typeof Se?T(Te,Pe).fill(Ee,Se):T(Te,Pe).fill(Ee)}function R(Te,Pe){if(S(Pe),Te=T(Te,0>Pe?0:0|M(Pe)),!P.TYPED_ARRAY_SUPPORT)for(var Ee=0;EePe.length?0:0|M(Pe.length);Te=T(Te,Ee);for(var Se=0;SeEe||Pe.byteLength=C())throw new RangeError('Attempt to allocate Buffer larger than maximum size: 0x'+C().toString(16)+' bytes');return 0|Te}function q(Te,Pe){if(P.isBuffer(Te))return Te.length;if('undefined'!=typeof ArrayBuffer&&'function'==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(Te)||Te instanceof ArrayBuffer))return Te.byteLength;'string'!=typeof Te&&(Te=''+Te);var Ee=Te.length;if(0===Ee)return 0;for(var Se=!1;;)switch(Pe){case'ascii':case'latin1':case'binary':return Ee;case'utf8':case'utf-8':case void 0:return fe(Te).length;case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return 2*Ee;case'hex':return Ee>>>1;case'base64':return _e(Te).length;default:if(Se)return fe(Te).length;Pe=(''+Pe).toLowerCase(),Se=!0;}}function z(Te,Pe,Ee){var Se=!1;if((void 0===Pe||0>Pe)&&(Pe=0),Pe>this.length)return'';if((void 0===Ee||Ee>this.length)&&(Ee=this.length),0>=Ee)return'';if(Ee>>>=0,Pe>>>=0,Ee<=Pe)return'';for(Te||(Te='utf8');;)switch(Te){case'hex':return ne(this,Pe,Ee);case'utf8':case'utf-8':return X(this,Pe,Ee);case'ascii':return te(this,Pe,Ee);case'latin1':case'binary':return ae(this,Pe,Ee);case'base64':return Q(this,Pe,Ee);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return oe(this,Pe,Ee);default:if(Se)throw new TypeError('Unknown encoding: '+Te);Te=(Te+'').toLowerCase(),Se=!0;}}function U(Te,Pe,Ee){var Se=Te[Pe];Te[Pe]=Te[Ee],Te[Ee]=Se}function $(Te,Pe,Ee,Se,Oe){if(0===Te.length)return-1;if('string'==typeof Ee?(Se=Ee,Ee=0):2147483647Ee&&(Ee=-2147483648),Ee=+Ee,isNaN(Ee)&&(Ee=Oe?0:Te.length-1),0>Ee&&(Ee=Te.length+Ee),Ee>=Te.length){if(Oe)return-1;Ee=Te.length-1}else if(0>Ee)if(Oe)Ee=0;else return-1;if('string'==typeof Pe&&(Pe=P.from(Pe,Se)),P.isBuffer(Pe))return 0===Pe.length?-1:K(Te,Pe,Ee,Se,Oe);if('number'==typeof Pe)return Pe&=255,P.TYPED_ARRAY_SUPPORT&&'function'==typeof Uint8Array.prototype.indexOf?Oe?Uint8Array.prototype.indexOf.call(Te,Pe,Ee):Uint8Array.prototype.lastIndexOf.call(Te,Pe,Ee):K(Te,[Pe],Ee,Se,Oe);throw new TypeError('val must be string, number or Buffer')}function K(Te,Pe,Ee,Se,Oe){function Re(De,je){return 1==Ve?De[je]:De.readUInt16BE(je*Ve)}var Ve=1,Fe=Te.length,Ie=Pe.length;if(void 0!==Se&&(Se=(Se+'').toLowerCase(),'ucs2'===Se||'ucs-2'===Se||'utf16le'===Se||'utf-16le'===Se)){if(2>Te.length||2>Pe.length)return-1;Ve=2,Fe/=2,Ie/=2,Ee/=2}var Be;if(Oe){var Le=-1;for(Be=Ee;BeFe&&(Ee=Fe-Ie),Be=Ee;0<=Be;Be--){for(var Ne=!0,Me=0;MeOe&&(Se=Oe)):Se=Oe;var Re=Pe.length;if(0!=Re%2)throw new TypeError('Invalid hex string');Se>Re/2&&(Se=Re/2);for(var Ve=0,Fe;VeRe&&(Ve=Re):2==Fe?(Ie=Te[Oe+1],128==(192&Ie)&&(Ne=(31&Re)<<6|63&Ie,127Ne||57343Ne&&(Ve=Ne))):void 0}null===Ve?(Ve=65533,Fe=1):65535>>10),Ve=56320|1023&Ve),Se.push(Ve),Oe+=Fe}return ee(Se)}function ee(Te){var Pe=Te.length;if(Pe<=Ce)return _StringfromCharCode.apply(String,Te);for(var Ee='',Se=0;SePe)&&(Pe=0),(!Ee||0>Ee||Ee>Se)&&(Ee=Se);for(var Oe='',Re=Pe;ReTe)throw new RangeError('offset is not uint');if(Te+Pe>Ee)throw new RangeError('Trying to access beyond buffer length')}function re(Te,Pe,Ee,Se,Oe,Re){if(!P.isBuffer(Te))throw new TypeError('"buffer" argument must be a Buffer instance');if(Pe>Oe||PeTe.length)throw new RangeError('Index out of range')}function se(Te,Pe,Ee,Se){0>Pe&&(Pe=65535+Pe+1);for(var Oe=0,Re=_Mathmin(Te.length-Ee,2);Oe>>8*(Se?Oe:1-Oe)}function le(Te,Pe,Ee,Se){0>Pe&&(Pe=4294967295+Pe+1);for(var Oe=0,Re=_Mathmin(Te.length-Ee,4);Oe>>8*(Se?Oe:3-Oe)}function de(Te,Pe,Ee,Se){if(Ee+Se>Te.length)throw new RangeError('Index out of range');if(0>Ee)throw new RangeError('Index out of range')}function ce(Te,Pe,Ee,Se,Oe){return Oe||de(Te,Pe,Ee,4,3.4028234663852886e38,-3.4028234663852886e38),ve.write(Te,Pe,Ee,Se,23,4),Ee+4}function ue(Te,Pe,Ee,Se,Oe){return Oe||de(Te,Pe,Ee,8,1.7976931348623157e308,-1.7976931348623157e308),ve.write(Te,Pe,Ee,Se,52,8),Ee+8}function me(Te){if(Te=pe(Te).replace(Ae,''),2>Te.length)return'';for(;0!=Te.length%4;)Te+='=';return Te}function pe(Te){return Te.trim?Te.trim():Te.replace(/^\s+|\s+$/g,'')}function ge(Te){return 16>Te?'0'+Te.toString(16):Te.toString(16)}function fe(Te,Pe){Pe=Pe||Infinity;for(var Se=Te.length,Oe=null,Re=[],Ve=0,Ee;VeEe){if(!Oe){if(56319Ee){-1<(Pe-=3)&&Re.push(239,191,189),Oe=Ee;continue}Ee=(Oe-55296<<10|Ee-56320)+65536}else Oe&&-1<(Pe-=3)&&Re.push(239,191,189);if(Oe=null,128>Ee){if(0>(Pe-=1))break;Re.push(Ee)}else if(2048>Ee){if(0>(Pe-=2))break;Re.push(192|Ee>>6,128|63&Ee)}else if(65536>Ee){if(0>(Pe-=3))break;Re.push(224|Ee>>12,128|63&Ee>>6,128|63&Ee)}else if(1114112>Ee){if(0>(Pe-=4))break;Re.push(240|Ee>>18,128|63&Ee>>12,128|63&Ee>>6,128|63&Ee)}else throw new Error('Invalid code point')}return Re}function he(Te){for(var Pe=[],Ee=0;Ee(Pe-=2));++Ve)Ee=Te.charCodeAt(Ve),Se=Ee>>8,Oe=Ee%256,Re.push(Oe),Re.push(Se);return Re}function _e(Te){return ye.toByteArray(me(Te))}function ke(Te,Pe,Ee,Se){for(var Oe=0;Oe=Pe.length||Oe>=Te.length);++Oe)Pe[Oe+Ee]=Te[Oe];return Oe}function we(Te){return Te!==Te}var ye=f(292),ve=f(304),xe=f(294);u.Buffer=P,u.SlowBuffer=function(Te){return+Te!=Te&&(Te=0),P.alloc(+Te)},u.INSPECT_MAX_BYTES=50,P.TYPED_ARRAY_SUPPORT=h.TYPED_ARRAY_SUPPORT===void 0?function(){try{var Te=new Uint8Array(1);return Te.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===Te.foo()&&'function'==typeof Te.subarray&&0===Te.subarray(1,1).byteLength}catch(Pe){return!1}}():h.TYPED_ARRAY_SUPPORT,u.kMaxLength=C(),P.poolSize=8192,P._augment=function(Te){return Te.__proto__=P.prototype,Te},P.from=function(Te,Pe,Ee){return E(null,Te,Pe,Ee)},P.TYPED_ARRAY_SUPPORT&&(P.prototype.__proto__=Uint8Array.prototype,P.__proto__=Uint8Array,'undefined'!=typeof Symbol&&Symbol.species&&P[Symbol.species]===P&&Object.defineProperty(P,Symbol.species,{value:null,configurable:!0})),P.alloc=function(Te,Pe,Ee){return O(null,Te,Pe,Ee)},P.allocUnsafe=function(Te){return R(null,Te)},P.allocUnsafeSlow=function(Te){return R(null,Te)},P.isBuffer=function(Pe){return!!(null!=Pe&&Pe._isBuffer)},P.compare=function(Pe,Ee){if(!P.isBuffer(Pe)||!P.isBuffer(Ee))throw new TypeError('Arguments must be Buffers');if(Pe===Ee)return 0;for(var Se=Pe.length,Oe=Ee.length,Re=0,Ve=_Mathmin(Se,Oe);ReEe&&(Pe+=' ... ')),''},P.prototype.compare=function(Pe,Ee,Se,Oe,Re){if(!P.isBuffer(Pe))throw new TypeError('Argument must be a Buffer');if(void 0===Ee&&(Ee=0),void 0===Se&&(Se=Pe?Pe.length:0),void 0===Oe&&(Oe=0),void 0===Re&&(Re=this.length),0>Ee||Se>Pe.length||0>Oe||Re>this.length)throw new RangeError('out of range index');if(Oe>=Re&&Ee>=Se)return 0;if(Oe>=Re)return-1;if(Ee>=Se)return 1;if(Ee>>>=0,Se>>>=0,Oe>>>=0,Re>>>=0,this===Pe)return 0;for(var Ve=Re-Oe,Fe=Se-Ee,Ie=_Mathmin(Ve,Fe),Be=this.slice(Oe,Re),Le=Pe.slice(Ee,Se),Ne=0;NeRe)&&(Se=Re),0Se||0>Ee)||Ee>this.length)throw new RangeError('Attempt to write outside buffer bounds');Oe||(Oe='utf8');for(var Ve=!1;;)switch(Oe){case'hex':return W(this,Pe,Ee,Se);case'utf8':case'utf-8':return H(this,Pe,Ee,Se);case'ascii':return Y(this,Pe,Ee,Se);case'latin1':case'binary':return G(this,Pe,Ee,Se);case'base64':return Z(this,Pe,Ee,Se);case'ucs2':case'ucs-2':case'utf16le':case'utf-16le':return J(this,Pe,Ee,Se);default:if(Ve)throw new TypeError('Unknown encoding: '+Oe);Oe=(''+Oe).toLowerCase(),Ve=!0;}},P.prototype.toJSON=function(){return{type:'Buffer',data:Array.prototype.slice.call(this._arr||this,0)}};var Ce=4096;P.prototype.slice=function(Pe,Ee){var Se=this.length;Pe=~~Pe,Ee=Ee===void 0?Se:~~Ee,0>Pe?(Pe+=Se,0>Pe&&(Pe=0)):Pe>Se&&(Pe=Se),0>Ee?(Ee+=Se,0>Ee&&(Ee=0)):Ee>Se&&(Ee=Se),Ee=Re&&(Oe-=_Mathpow(2,8*Ee)),Oe},P.prototype.readIntBE=function(Pe,Ee,Se){Pe|=0,Ee|=0,Se||ie(Pe,Ee,this.length);for(var Oe=Ee,Re=1,Ve=this[Pe+--Oe];0=Re&&(Ve-=_Mathpow(2,8*Ee)),Ve},P.prototype.readInt8=function(Pe,Ee){return Ee||ie(Pe,1,this.length),128&this[Pe]?-1*(255-this[Pe]+1):this[Pe]},P.prototype.readInt16LE=function(Pe,Ee){Ee||ie(Pe,2,this.length);var Se=this[Pe]|this[Pe+1]<<8;return 32768&Se?4294901760|Se:Se},P.prototype.readInt16BE=function(Pe,Ee){Ee||ie(Pe,2,this.length);var Se=this[Pe+1]|this[Pe]<<8;return 32768&Se?4294901760|Se:Se},P.prototype.readInt32LE=function(Pe,Ee){return Ee||ie(Pe,4,this.length),this[Pe]|this[Pe+1]<<8|this[Pe+2]<<16|this[Pe+3]<<24},P.prototype.readInt32BE=function(Pe,Ee){return Ee||ie(Pe,4,this.length),this[Pe]<<24|this[Pe+1]<<16|this[Pe+2]<<8|this[Pe+3]},P.prototype.readFloatLE=function(Pe,Ee){return Ee||ie(Pe,4,this.length),ve.read(this,Pe,!0,23,4)},P.prototype.readFloatBE=function(Pe,Ee){return Ee||ie(Pe,4,this.length),ve.read(this,Pe,!1,23,4)},P.prototype.readDoubleLE=function(Pe,Ee){return Ee||ie(Pe,8,this.length),ve.read(this,Pe,!0,52,8)},P.prototype.readDoubleBE=function(Pe,Ee){return Ee||ie(Pe,8,this.length),ve.read(this,Pe,!1,52,8)},P.prototype.writeUIntLE=function(Pe,Ee,Se,Oe){if(Pe=+Pe,Ee|=0,Se|=0,!Oe){var Re=_Mathpow(2,8*Se)-1;re(this,Pe,Ee,Se,Re,0)}var Ve=1,Fe=0;for(this[Ee]=255&Pe;++Fe>>8):se(this,Pe,Ee,!0),Ee+2},P.prototype.writeUInt16BE=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,2,65535,0),P.TYPED_ARRAY_SUPPORT?(this[Ee]=Pe>>>8,this[Ee+1]=255&Pe):se(this,Pe,Ee,!1),Ee+2},P.prototype.writeUInt32LE=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,4,4294967295,0),P.TYPED_ARRAY_SUPPORT?(this[Ee+3]=Pe>>>24,this[Ee+2]=Pe>>>16,this[Ee+1]=Pe>>>8,this[Ee]=255&Pe):le(this,Pe,Ee,!0),Ee+4},P.prototype.writeUInt32BE=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,4,4294967295,0),P.TYPED_ARRAY_SUPPORT?(this[Ee]=Pe>>>24,this[Ee+1]=Pe>>>16,this[Ee+2]=Pe>>>8,this[Ee+3]=255&Pe):le(this,Pe,Ee,!1),Ee+4},P.prototype.writeIntLE=function(Pe,Ee,Se,Oe){if(Pe=+Pe,Ee|=0,!Oe){var Re=_Mathpow(2,8*Se-1);re(this,Pe,Ee,Se,Re-1,-Re)}var Ve=0,Fe=1,Ie=0;for(this[Ee]=255&Pe;++VePe&&0==Ie&&0!==this[Ee+Ve-1]&&(Ie=1),this[Ee+Ve]=255&(Pe/Fe>>0)-Ie;return Ee+Se},P.prototype.writeIntBE=function(Pe,Ee,Se,Oe){if(Pe=+Pe,Ee|=0,!Oe){var Re=_Mathpow(2,8*Se-1);re(this,Pe,Ee,Se,Re-1,-Re)}var Ve=Se-1,Fe=1,Ie=0;for(this[Ee+Ve]=255&Pe;0<=--Ve&&(Fe*=256);)0>Pe&&0==Ie&&0!==this[Ee+Ve+1]&&(Ie=1),this[Ee+Ve]=255&(Pe/Fe>>0)-Ie;return Ee+Se},P.prototype.writeInt8=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,1,127,-128),P.TYPED_ARRAY_SUPPORT||(Pe=_Mathfloor(Pe)),0>Pe&&(Pe=255+Pe+1),this[Ee]=255&Pe,Ee+1},P.prototype.writeInt16LE=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,2,32767,-32768),P.TYPED_ARRAY_SUPPORT?(this[Ee]=255&Pe,this[Ee+1]=Pe>>>8):se(this,Pe,Ee,!0),Ee+2},P.prototype.writeInt16BE=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,2,32767,-32768),P.TYPED_ARRAY_SUPPORT?(this[Ee]=Pe>>>8,this[Ee+1]=255&Pe):se(this,Pe,Ee,!1),Ee+2},P.prototype.writeInt32LE=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,4,2147483647,-2147483648),P.TYPED_ARRAY_SUPPORT?(this[Ee]=255&Pe,this[Ee+1]=Pe>>>8,this[Ee+2]=Pe>>>16,this[Ee+3]=Pe>>>24):le(this,Pe,Ee,!0),Ee+4},P.prototype.writeInt32BE=function(Pe,Ee,Se){return Pe=+Pe,Ee|=0,Se||re(this,Pe,Ee,4,2147483647,-2147483648),0>Pe&&(Pe=4294967295+Pe+1),P.TYPED_ARRAY_SUPPORT?(this[Ee]=Pe>>>24,this[Ee+1]=Pe>>>16,this[Ee+2]=Pe>>>8,this[Ee+3]=255&Pe):le(this,Pe,Ee,!1),Ee+4},P.prototype.writeFloatLE=function(Pe,Ee,Se){return ce(this,Pe,Ee,!0,Se)},P.prototype.writeFloatBE=function(Pe,Ee,Se){return ce(this,Pe,Ee,!1,Se)},P.prototype.writeDoubleLE=function(Pe,Ee,Se){return ue(this,Pe,Ee,!0,Se)},P.prototype.writeDoubleBE=function(Pe,Ee,Se){return ue(this,Pe,Ee,!1,Se)},P.prototype.copy=function(Pe,Ee,Se,Oe){if(Se||(Se=0),Oe||0===Oe||(Oe=this.length),Ee>=Pe.length&&(Ee=Pe.length),Ee||(Ee=0),0Ee)throw new RangeError('targetStart out of bounds');if(0>Se||Se>=this.length)throw new RangeError('sourceStart out of bounds');if(0>Oe)throw new RangeError('sourceEnd out of bounds');Oe>this.length&&(Oe=this.length),Pe.length-EeRe||!P.TYPED_ARRAY_SUPPORT)for(Ve=0;VeRe&&(Pe=Re)}if(void 0!==Oe&&'string'!=typeof Oe)throw new TypeError('encoding must be a string');if('string'==typeof Oe&&!P.isEncoding(Oe))throw new TypeError('Unknown encoding: '+Oe)}else'number'==typeof Pe&&(Pe&=255);if(0>Ee||this.length>>=0,Se=Se===void 0?this.length:Se>>>0,Pe||(Pe=0);var Ve;if('number'==typeof Pe)for(Ve=Ee;Ve*{margin-right:.4em}.ck-toolbar>:last-child{margin-right:0}.ck-toolbar-container .ck-toolbar{border:0}.ck-dropdown:after{border-style:solid;border-width:.4em .4em 0;border-color:#707070 transparent;right:.8em}.ck-dropdown .ck-button.ck-dropdown__button{padding-right:1.6em}.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{width:7em;overflow:hidden;text-overflow:ellipsis}.ck-dropdown__panel{border:1px solid #b9b9b9;bottom:1px;background:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.2)}.ck-dropdown__panel.ck-rounded-corners,.ck-rounded-corners .ck-dropdown__panel{border-radius:2px}.ck-list{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;list-style-type:none;background:#fff}.ck-list.ck-rounded-corners,.ck-rounded-corners .ck-list{border-radius:2px}.ck-list__item{padding:.64em;cursor:default;min-width:12em}.ck-list__item:focus,.ck-list__item:hover{background:#f7f7f7}.ck-list__item:focus{box-shadow:0 0 3px 2px #9bcdfb;position:relative;z-index:1;outline:none}.ck-list__item:last-of-type{border:none}.ck-list__item_active{background:#1a8bf1;color:#fff}.ck-list__item_active:focus,.ck-list__item_active:hover{background:#0e7ee2}.ck-label{font-weight:700}.ck-input-text{box-shadow:inset 2px 2px 3px #e6e6e6;border:1px solid #b9b9b9;padding:.64em;min-width:250px}.ck-input-text.ck-rounded-corners,.ck-rounded-corners .ck-input-text{border-radius:2px}.ck-input-text:focus{outline:none;border:1px solid #6ab5f9;box-shadow:0 0 3px 2px #9bcdfb,inset 2px 2px 3px #e6e6e6}.ck-balloon-panel{box-shadow:0 1px 2px 0 rgba(0,0,0,.2);min-width:50px;min-height:15px;background:#fff;border:1px solid #b9b9b9}.ck-balloon-panel.ck-rounded-corners,.ck-rounded-corners .ck-balloon-panel{border-radius:2px}.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck-balloon-panel.ck-balloon-panel_with-arrow:before{width:0;height:0;border-style:solid}.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck-balloon-panel.ck-balloon-panel_arrow_n:before,.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck-balloon-panel.ck-balloon-panel_arrow_ne:before,.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{border-width:0 10px 15px}.ck-balloon-panel.ck-balloon-panel_arrow_n:before,.ck-balloon-panel.ck-balloon-panel_arrow_ne:before,.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{border-color:transparent transparent #b9b9b9}.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck-balloon-panel.ck-balloon-panel_arrow_nw:after{border-color:transparent transparent #fff;margin-top:2px}.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck-balloon-panel.ck-balloon-panel_arrow_s:before,.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck-balloon-panel.ck-balloon-panel_arrow_se:before,.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{border-width:15px 10px 0}.ck-balloon-panel.ck-balloon-panel_arrow_s:before,.ck-balloon-panel.ck-balloon-panel_arrow_se:before,.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{border-color:#b9b9b9 transparent transparent}.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck-balloon-panel.ck-balloon-panel_arrow_sw:after{border-color:#fff transparent transparent;margin-bottom:2px}.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:-10px;top:-15px}.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{left:20px;top:-15px}.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{right:20px;top:-15px}.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck-balloon-panel.ck-balloon-panel_arrow_s:before{left:50%;margin-left:-10px;bottom:-15px}.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck-balloon-panel.ck-balloon-panel_arrow_se:before{left:20px;bottom:-15px}.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{right:20px;bottom:-15px}.ck-balloon-panel.ck-toolbar-container_arrow_n:after,.ck-balloon-panel.ck-toolbar-container_arrow_ne:after,.ck-balloon-panel.ck-toolbar-container_arrow_nw:after{border-bottom-color:#f7f7f7}.ck-balloon-panel.ck-toolbar-container_arrow_s:after,.ck-balloon-panel.ck-toolbar-container_arrow_se:after,.ck-balloon-panel.ck-toolbar-container_arrow_sw:after{border-top-color:#f7f7f7}.ck-editor-toolbar{border-radius:0}.ck-editor-toolbar .ck-button{border-width:0}.ck-editor-toolbar .ck-button.ck-disabled,.ck-editor-toolbar .ck-button:not(:hover):not(:focus):not(.ck-on){background:#f7f7f7}.ck-editor-toolbar .ck-button.ck-on{background:#dedede;border-color:#a1a1a1}.ck-editor-toolbar .ck-button.ck-on:not(.ck-disabled):focus,.ck-editor-toolbar .ck-button.ck-on:not(.ck-disabled):hover{background:#c6c6c6;border-color:#888}.ck-editor-toolbar .ck-button.ck-on:not(.ck-disabled):active{background:#b9b9b9;border-color:#7c7c7c;box-shadow:inset 0 2px 2px #a1a1a1}.ck-editor-toolbar .ck-dropdown__button{border-width:1px}.ck-editor-toolbar .ck-dropdown__button:not(:hover):not(:focus):not(.ck-on){background:#fff}.ck-toolbar-container .ck-editor-toolbar{background:#f7f7f7}.ck-editor .ck-toolbar.ck-toolbar_sticky{box-shadow:0 1px 2px 0 rgba(0,0,0,.2);border:1px solid #bfbfbf;border-width:0 0 1px;background:#f7f7f7}.ck-editor{position:relative}.ck-editor.ck-rounded-corners,.ck-rounded-corners .ck-editor{border-radius:2px}.ck-editor .ck-editor__top .ck-toolbar{border-top:0;border-left:0;border-right:0}.ck-editor .ck-editor__main{background:#fff}.ck-editor .ck-editor__bottom{border-bottom:0;border-left:0;border-right:0;padding:.8em}.ck-editor .ck-editor__editable.ck-focused{outline:1px solid #6ab5f9;box-shadow:inset 2px 2px 3px #e6e6e6}.ck-editor .ck-editor__editable_inline{overflow:auto;padding:0 .8em}.ck-editor,.ck-editor-bottom{background:#f7f7f7;border:1px solid #b9b9b9}',''])},function(r,u,f){u=r.exports=f(28)(void 0),u.push([r.i,'.ck-placeholder:before{content:attr(data-placeholder);cursor:text;color:#c2c2c2}',''])},function(r,u,f){u=r.exports=f(28)(void 0),u.push([r.i,'.ck-heading_heading1{font-size:1.5em}.ck-heading_heading2{font-size:1.3em}.ck-heading_heading3{font-size:1.1em}[class*=ck-heading_]{line-height:21.6px;padding:9.6px}[class*=ck-heading_heading]{font-weight:700}.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}',''])},function(r,u,f){u=r.exports=f(28)(void 0),u.push([r.i,'.ck-editor__editable .image>figcaption{background-color:#f7f7f7;padding:.8em;font-size:.75rem;color:#858585;outline-offset:-1px}',''])},function(r,u,f){u=r.exports=f(28)(void 0),u.push([r.i,'.cke-text-alternative-form{padding:1.2em;overflow:hidden}.cke-text-alternative-form .ck-label{margin-bottom:.4em}.cke-text-alternative-form__actions{clear:both;padding-top:1.2em}.cke-text-alternative-form__actions .ck-button{float:right}.cke-text-alternative-form__actions .ck-button+.ck-button{margin-right:.64em}.cke-text-alternative-form__actions .ck-button+.ck-button+.ck-button{float:left}',''])},function(r,u,f){u=r.exports=f(28)(void 0),u.push([r.i,'.ck-editor__editable .image{text-align:center;clear:both}.ck-editor__editable .image.image-style-side{float:right;margin-left:.8em;max-width:50%}.ck-editor__editable .image>img{display:block;margin:0 auto;max-width:100%}',''])},function(r,u,f){u=r.exports=f(28)(void 0),u.push([r.i,'.ck-link-form{padding:1.2em;overflow:hidden}.ck-link-form:focus{outline:none}.ck-link-form .ck-label{margin-bottom:.4em}.ck-link-form__actions{clear:both;padding-top:1.2em}.ck-link-form__actions .ck-button{float:right}.ck-link-form__actions .ck-button+.ck-button{margin-right:.64em}.ck-link-form__actions .ck-button+.ck-button+.ck-button{float:left}',''])},function(r,u,f){u=r.exports=f(28)(void 0),u.push([r.i,'.ck-disabled{opacity:.5}.ck-widget{margin:.8em 0;padding:0}.ck-widget.ck-widget_selected,.ck-widget.ck-widget_selected:hover{outline:3px solid #6ab5f9}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected{outline:3px solid #ddd}.ck-widget:hover{outline:3px solid #ffd25c}.ck-widget .ck-editable.ck-editable_focused,.ck-widget .ck-editable:focus{outline:1px solid #6ab5f9;box-shadow:inset 2px 2px 3px #e6e6e6;background-color:#fff}',''])},function(r,u){u.read=function(f,h,w,C,T){var P,E,S=8*T-C-1,O=(1<>1,V=-7,F=w?T-1:0,I=w?-1:1,N=f[h+F];for(F+=I,P=N&(1<<-V)-1,N>>=-V,V+=S;0>=-V,V+=C;0>1,I=23===T?5.960464477539063e-8-6.617444900424222e-24:0,N=C?0:P-1,M=C?1:-1,D=0>h||0===h&&0>1/h?1:0;for(h=Math.abs(h),isNaN(h)||h===Infinity?(S=isNaN(h)?1:0,E=V):(E=_Mathfloor(Math.log(h)/Math.LN2),1>h*(O=_Mathpow(2,-E))&&(E--,O*=2),h+=1<=E+F?I/O:I*_Mathpow(2,1-F),2<=h*O&&(E++,O/=2),E+F>=V?(S=0,E=V):1<=E+F?(S=(h*O-1)*_Mathpow(2,T),E+=F):(S=h*_Mathpow(2,F-1)*_Mathpow(2,T),E=0));8<=T;f[w+N]=255&S,N+=M,S/=256,T-=8);for(E=E<\n\n \n bold\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n italic\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n'},function(r){r.exports='\n'},function(r){r.exports='\n'},function(r){r.exports='\n\n \n quote\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n link\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n unlink\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n bulletedlist\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n numberedlist\n Created with Sketch.\n \n \n \n \n \n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n redo\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports='\n\n \n undo\n Created with Sketch.\n \n \n \n \n \n \n \n \n'},function(r){r.exports=function(f){var h='undefined'!=typeof window&&window.location;if(!h)throw new Error('fixUrls requires window.location');if(!f||'string'!=typeof f)return f;var w=h.protocol+'//'+h.host,C=w+h.pathname.replace(/\/[^\/]*$/,'/'),T=f.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(P,E){var S=E.trim().replace(/^"(.*)"$/,function(R,V){return V}).replace(/^'(.*)'$/,function(R,V){return V});if(/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(S))return P;var O;return O=0===S.indexOf('//')?S:0===S.indexOf('/')?w+S:C+S.replace(/^\.\//,''),'url('+JSON.stringify(O)+')'});return T}},function(r,u,f){var h=f(295);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(296);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(297);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(298);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(299);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(300);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(301);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(302);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){var h=f(303);'string'==typeof h&&(h=[[r.i,h,'']]);f(29)(h,{});h.locals&&(r.exports=h.locals),!1},function(r,u,f){'use strict';var h=f(3),w=f(61);u.a=class{constructor(T,P,E){let S;if('function'==typeof E)S=E;else{S=(R)=>{const{batch:V}=R;T.execute(E,{batch:V})}}T.document.on('change',(O,R,V)=>{if('insert'!=R)return;const F=V.range.getItems().next().value;if(!(F instanceof w.a))return;const I=F.textNode,N=I.data;if('paragraph'!==I.parent.name||!N)return;const M=P.exec(N);M&&T.document.enqueueChanges(()=>{const D=T.document.batch(),q=h.a.createFromParentsAndOffsets(I.parent,0,I.parent,M[0].length);D.remove(q),S({batch:D,match:M})})})}}},function(r,u,f){'use strict';function h(P){return Array.from(P.getChildren()).reduce((E,S)=>E+S.data,'')}var w=f(111),C=f(101);u.a=class{constructor(P,E,S){this.editor=P;let O,R,V,F;E instanceof RegExp?O=E:V=E,'string'==typeof S?R=S:F=S,V=V||((I)=>{let N,M=[],D=[];for(;null!==(N=O.exec(I))&&!(N&&4>N.length);){let{index:q,1:z,2:U,3:$}=N;q+=N[0].length-(z+U+$).length;const W=[q,q+z.length],H=[q+z.length+U.length,q+z.length+U.length+$.length];M.push(W),M.push(H),D.push([q+z.length,q+z.length+U.length])}return{remove:M,format:D}}),F=F||((I,N)=>{for(let M of N)I.setAttribute(M,R,!0)}),P.document.on('change',(I,N)=>{if('insert'!==N)return;const M=this.editor.document.selection;if(!M.isCollapsed||!M.focus||!M.focus.parent)return;const D=M.focus.parent,q=h(D).slice(0,M.focus.offset),z=V(q),U=[];z.format.forEach((W)=>{void 0===W[0]||void 0===W[1]||U.push(w.a.createFromParentsAndOffsets(D,W[0],D,W[1]))});const $=[];if(z.remove.slice().reverse().forEach((W)=>{void 0===W[0]||void 0===W[1]||$.push(w.a.createFromParentsAndOffsets(D,W[0],D,W[1]))}),!(U.length&&$.length))return;const K=P.document.batch();P.document.enqueueChanges(()=>{const W=f.i(C.a)(R,U,P.document.schema);F(K,W);for(let H of $)K.remove(H)})})}}},function(r,u,f){'use strict';function h(R){return'blockQuote'==R.parent.name?R.parent:null}function w(R){let V,F=0;const I=[];for(;F{this.refreshValue(),this.refreshState()})}refreshValue(){const R=f.i(S.a)(this.editor.document.selection.getSelectedBlocks());this.value=!!(R&&h(R))}_doExecute(R={}){const V=this.editor.document,F=R.batch||V.batch(),I=Array.from(V.selection.getSelectedBlocks());V.enqueueChanges(()=>{this.value?this._removeQuote(F,I.filter(h)):this._applyQuote(F,I)})}_checkEnabled(){if(this.value)return!0;const R=this.editor.document.selection,V=this.editor.document.schema,F=f.i(S.a)(R.getSelectedBlocks());if(!F)return!1;const I=V.check({name:'blockQuote',inside:T.a.createBefore(F)}),N=V.check({name:F.name,attributes:Array.from(F.getAttributeKeys()),inside:'blockQuote'});return I&&N}_removeQuote(R,V){w(V).reverse().forEach((F)=>{if(F.start.isAtStart&&F.end.isAtEnd)return void R.unwrap(F.start.parent);if(F.start.isAtStart){const N=T.a.createBefore(F.start.parent);return void R.move(F,N)}F.end.isAtEnd||R.split(F.end);const I=T.a.createAfter(F.end.parent);R.move(F,I)})}_applyQuote(R,V){const F=[];w(V).reverse().forEach((I)=>{let N=h(I.start);N||(N=new P.a('blockQuote'),R.wrap(I,N)),F.push(N)}),F.reverse().reduce((I,N)=>{return I.nextSibling==N?(R.merge(T.a.createAfter(I)),I):N})}}u.a=O},function(r,u,f){'use strict';var h=f(2),w=f(329),C=f(34),T=f(41);class P extends h.a{init(){const E=this.editor,S=E.document.schema;E.commands.set('blockQuote',new w.a(E)),S.registerItem('blockQuote'),S.allow({name:'blockQuote',inside:'$root'}),S.allow({name:'$block',inside:'blockQuote'}),f.i(C.a)().for(E.data.viewToModel).fromElement('blockquote').toElement('blockQuote'),f.i(T.a)().for(E.data.modelToView,E.editing.modelToView).fromElement('blockQuote').toElement('blockquote')}afterInit(){const E=this.editor.document.schema;E.hasItem('listItem')&&E.allow({name:'listItem',inside:'blockQuote',attributes:['type','indent']})}}u.a=P},function(r,u,f){'use strict';Object.defineProperty(u,'__esModule',{value:!0});var h=f(284),w=f(291),C=f(279),T=f(280),P=f(281),E=f(282),S=f(285),O=f(286),R=f(287),V=f(288),F=f(154),I=f(289),N=f(290),M=f(73);class D extends h.a{}u.ClassicEditor=D,D.build={plugins:[w.a,C.a,T.a,P.a,E.a,S.a,O.a,R.a,V.a,F.a,I.a,N.a,M.a],config:f(283)}},function(r,u,f){'use strict';var h=f(2),w=f(333),C=f(336),T=f(335),P=f(337),E=f(164);class S extends h.a{static get pluginName(){return'clipboard/clipboard'}init(){const O=this.editor,R=O.document,V=O.editing.view;this._htmlDataProcessor=new E.a,V.addObserver(w.a),this.listenTo(V,'clipboardInput',(I,N)=>{const M=N.dataTransfer;let D='';M.getData('text/html')?D=f.i(T.a)(M.getData('text/html')):M.getData('text/plain')&&(D=f.i(C.a)(M.getData('text/plain'))),D=this._htmlDataProcessor.toView(D),this.fire('inputTransformation',{content:D})},{priority:'low'}),this.listenTo(this,'inputTransformation',(I,N)=>{if(!N.content.isEmpty){const M=this.editor.data,D=M.toModel(N.content,'$clipboardHolder');R.enqueueChanges(()=>{M.insertContent(D,R.selection)})}},{priority:'low'});const F=(I,N)=>{const M=N.dataTransfer,D=O.data.toView(O.data.getSelectedContent(R.selection));N.preventDefault(),V.fire('clipboardOutput',{dataTransfer:M,content:D,method:I.name})};this.listenTo(V,'copy',F,{priority:'low'}),this.listenTo(V,'cut',F,{priority:'low'}),this.listenTo(V,'clipboardOutput',(I,N)=>{N.content.isEmpty||(N.dataTransfer.setData('text/html',this._htmlDataProcessor.toData(N.content)),N.dataTransfer.setData('text/plain',f.i(P.a)(N.content))),'cut'==N.method&&R.enqueueChanges(()=>{O.data.deleteContent(R.selection,R.batch(),{merge:!0})})},{priority:'low'})}}u.a=S},function(r,u,f){'use strict';var h=f(63),w=f(334);class C extends h.a{constructor(T){function P(E,S){S.preventDefault(),T.fire('clipboardInput',{dataTransfer:S.dataTransfer})}super(T),this.domEventType=['paste','copy','cut','drop'],this.listenTo(T,'paste',P,{priority:'low'}),this.listenTo(T,'drop',P,{priority:'low'})}onDomEvent(T){this.fire(T.type,T,{dataTransfer:new w.a(T.clipboardData?T.clipboardData:T.dataTransfer)})}}u.a=C},function(r,u){'use strict';function h(C){const T=C.files?Array.from(C.files):[],P=C.items?Array.from(C.items):[];return T.length?T:P.filter((E)=>'file'===E.kind).map((E)=>E.getAsFile())}class w{constructor(C){this.files=h(C),this._native=C}get types(){return this._native.types}getData(C){return this._native.getData(C)}setData(C,T){this._native.setData(C,T)}}u.a=w},function(r,u){'use strict';u.a=function(w){return w.replace(/(\s+)<\/span>/g,(C,T)=>{return 1==T.length?' ':T})}},function(r,u){'use strict';u.a=function(w){return w=w.replace(//g,'>').replace(/\n\n/g,'

').replace(/\n/g,' ').replace(/^\s/,' ').replace(/\s$/,' ').replace(/\s\s/g,'  '),-1

')&&(w=`

${w}

`),w}},function(r,u){'use strict';function h(C){let T='';if(C.is('text')||C.is('textProxy'))T=C.data;else if(C.is('img')&&C.hasAttribute('alt'))T=C.getAttribute('alt');else{let P=null;for(let E of C.getChildren()){const S=h(E);P&&(P.is('containerElement')||E.is('containerElement'))&&(w.includes(P.name)||w.includes(E.name)?T+='\n':T+='\n\n'),T+=S,P=E}}return T}u.a=h;const w=['figcaption','li']},function(r,u,f){'use strict';var h=f(68);class w extends h.a{constructor(C){super(),this.editor=C}set(C,T){if('string'==typeof T){const P=T;T=()=>{this.editor.execute(P)}}super.set(C,T)}listenTo(C){this._listener.listenTo(C,'keydown',(T,P)=>{const E=this.press(P);E&&P.preventDefault()})}}u.a=w},function(r,u,f){'use strict';var h=f(7),w=f(429),C=f(341),T=f(540),P=f(344),E=f(359),S=f(0),O=f(4);class R{constructor(V){const F=this.constructor.build&&this.constructor.build.plugins;this.config=new w.a(V,this.constructor.build&&this.constructor.build.config),this.config.define('plugins',F),this.plugins=new C.a(this,F),this.commands=new Map,this.locale=new T.a(this.config.get('lang')),this.t=this.locale.t,this.document=new E.a,this.data=new P.a(this.document)}initPlugins(){function F(M,D){return M.reduce((q,z)=>{return q.then(z[D].bind(z))},Promise.resolve())}const I=this,N=this.config;return function(){const M=N.get('plugins')||[],D=N.get('removePlugins')||[];return I.plugins.load(M,D)}().then((M)=>{return F(M,'init').then(()=>F(M,'afterInit'))}).then(()=>this.fire('pluginsReady'))}destroy(){return this.fire('destroy'),this.stopListening(),Promise.resolve().then(()=>{this.document.destroy(),this.data.destroy()})}execute(V,F){let I=this.commands.get(V);if(!I)throw new S.a('editor-command-not-found: Specified command has not been added to the editor.');I._execute(F)}static create(V){return new Promise((F)=>{const I=new this(V);F(I.initPlugins().then(()=>{I.fire('dataReady'),I.fire('ready')}).then(()=>I))})}}u.a=R,f.i(O.a)(R,h.a)},function(r,u,f){'use strict';var h=f(339),w=f(338),C=f(346),T=f(432),P=f(439);class E extends h.a{constructor(S,O){super(O),this.element=S,this.editing=new C.a(this.document),this.keystrokes=new w.a(this),this.keystrokes.listenTo(this.editing.view)}destroy(){return Promise.resolve().then(()=>this.keystrokes.destroy()).then(()=>this.editing.destroy()).then(super.destroy())}setData(S){this.data.set(S)}getData(){return this.data.get()}updateEditorElement(){f.i(P.a)(this.element,this.getData())}loadDataFromEditorElement(){this.setData(f.i(T.a)(this.element))}static create(S,O){return new Promise((R)=>{const V=new this(S,O);R(V.initPlugins().then(()=>{V.fire('dataReady'),V.fire('ready')}).then(()=>V))})}}u.a=E},function(r,u,f){'use strict';var h=f(2),w=f(0),C=f(40);class T{constructor(P,E=[]){this._editor=P,this._availablePlugins=new Map,this._plugins=new Map;for(const S of E)this._availablePlugins.set(S,S),S.pluginName&&this._availablePlugins.set(S.pluginName,S)}*[Symbol.iterator](){for(const P of this._plugins)'function'==typeof P[0]&&(yield P)}get(P){return this._plugins.get(P)}load(P,E=[]){function S(K){return U.includes(K)||N.get(K)||D.has(K)?void 0:O(K).catch((W)=>{throw C.a.error('plugincollection-load: It was not possible to load the plugin.',{plugin:K}),W})}function O(K){return new Promise((W)=>{D.add(K),V(K),K.requires&&K.requires.forEach((Y)=>{const G=R(Y);if(E.includes(G))throw new w.a('plugincollection-required: Cannot load a plugin because one of its dependencies is listed inthe `removePlugins` option.',{plugin:G,requiredBy:K});S(G)});const H=new K(M);N._add(K,H),q.push(H),W()})}function R(K){return'function'==typeof K?K:N._availablePlugins.get(K)}function V(K){if(!(K.prototype instanceof h.a))throw new w.a('plugincollection-instance: The loaded plugin module is not an instance of Plugin.',{plugin:K})}function I(K){return K.map((W)=>R(W)).filter((W)=>!!W)}const N=this,M=this._editor,D=new Set,q=[],z=I(P),U=I(E),$=function(K){const W=[];for(const H of K)R(H)||W.push(H);return W.length?W:null}(P);if($){const K='plugincollection-plugin-not-found: Some plugins are not available and could not be loaded.';return C.a.error(K,{plugins:$}),Promise.reject(new w.a(K,{plugins:$}))}return Promise.all(z.map(S)).then(()=>q)}_add(P,E){this._plugins.set(P,E),P.pluginName&&this._plugins.set(P.pluginName,E)}}u.a=T},function(r,u,f){'use strict';var h=f(407),w=f(67),C=f(422);u.a=class{constructor(P,E){this.editor=P,this.view=E,this.componentFactory=new h.a(P),this.focusTracker=new w.a,E.set('width',P.config.get('ui.width')),E.set('height',P.config.get('ui.height')),E.toolbar.bind('isActive').to(this.focusTracker,'isFocused'),E.toolbar.limiterElement=E.element;const S=P.editing.createRoot('div');E.editable.bind('isReadOnly').to(S),E.editable.bind('isFocused').to(P.editing.view),E.editable.name=S.rootName,this.focusTracker.add(E.editableElement)}init(){const P=this.editor;return this.view.init().then(()=>{return this.view.toolbar.fillFromConfig(P.config.get('toolbar'),this.componentFactory)}).then(()=>{f.i(C.a)({origin:P.editing.view,originFocusTracker:this.focusTracker,originKeystrokeHandler:P.keystrokes,toolbar:this.view.toolbar})})}destroy(){return this.view.destroy()}}},function(r,u,f){'use strict';var h=f(414),w=f(413),C=f(423),T=f(6);class P extends h.a{constructor(E){super(E),this.toolbar=new C.a(E),T.a.extend(this.toolbar.template,{attributes:{class:'ck-editor-toolbar'}}),this.editable=new w.a(E),this.top.add(this.toolbar),this.main.add(this.editable)}get editableElement(){return this.editable.element}}u.a=P},function(r,u,f){'use strict';var h=f(4),w=f(7),C=f(161),T=f(163),P=f(102),E=f(354),S=f(352),O=f(117),R=f(3),V=f(1),F=f(348),I=f(345),N=f(349),M=f(347);class D{constructor(q,z){this.model=q,this.processor=z,this.mapper=new C.a,this.modelToView=new T.a(this.model,{mapper:this.mapper}),this.modelToView.on('insert:$text',f.i(P.j)(),{priority:'lowest'}),this.viewToModel=new E.a({schema:q.schema}),this.viewToModel.on('text',f.i(S.a)(),{priority:'lowest'}),this.viewToModel.on('element',f.i(S.b)(),{priority:'lowest'}),this.viewToModel.on('documentFragment',f.i(S.b)(),{priority:'lowest'}),this.on('insertContent',(U,$)=>f.i(F.a)(this,$.content,$.selection,$.batch)),this.on('deleteContent',(U,$)=>f.i(I.a)($.selection,$.batch,$.options)),this.on('modifySelection',(U,$)=>f.i(N.a)(this,$.selection,$.options)),this.on('getSelectedContent',(U,$)=>{$.content=f.i(M.a)($.selection)})}get(q='main'){return this.stringify(this.model.getRoot(q))}stringify(q){const z=this.toView(q);return this.processor.toData(z)}toView(q){const z=R.a.createIn(q),U=new O.a;return this.mapper.bindElements(q,U),this.modelToView.convertInsertion(z),this.mapper.clearBindings(),U}set(q,z='main'){const U=this.model.getRoot(z);this.model.enqueueChanges(()=>{this.model.selection.removeAllRanges(),this.model.selection.clearAttributes(),this.model.batch('transparent').remove(R.a.createIn(U)).insert(V.a.createAt(U,0),this.parse(q))})}parse(q,z='$root'){const U=this.processor.toView(q);return this.toModel(U,z)}toModel(q,z='$root'){return this.viewToModel.convert(q,{context:[z]})}destroy(){}insertContent(q,z,U){this.fire('insertContent',{content:q,selection:z,batch:U})}deleteContent(q,z,U){this.fire('deleteContent',{batch:z,selection:q,options:U})}modifySelection(q,z){this.fire('modifySelection',{selection:q,options:z})}getSelectedContent(q){const z={selection:q};return this.fire('getSelectedContent',z),z.content}}u.a=D,f.i(h.a)(D,w.a)},function(r,u,f){'use strict';function w(R,V,F){const I=V.parent,N=F.parent;if(I!=N&&I.parent&&N.parent&&T(V,F)){for(V=E.a.createAfter(I),F=E.a.createBefore(N),N.isEmpty?R.remove(N):(!F.isEqual(V)&&R.move(N,V),R.merge(V));F.parent.isEmpty;){const M=F.parent;F=E.a.createBefore(M),R.remove(M)}w(R,V,F)}}function C(R,V){const F=R.schema.check({name:'$text',inside:V}),I=R.schema.check({name:'paragraph',inside:V});return!F&&I}function T(R,V){const F=R.root.document.schema,I=new S.a(R,V);for(const N of I.getWalker())if(F.objects.has(N.item.name)||F.limits.has(N.item.name))return!1;return!0}var P=f(168),E=f(1),S=f(3),O=f(5);u.a=function(R,V,F={}){if(!R.isCollapsed){const I=R.getFirstRange(),N=I.start,M=P.a.createFromPosition(I.end);if(I.start.isTouching(I.end)||V.remove(I),F.merge&&w(V,N,M),R.collapse(N),C(V.document,N)){const D=new O.a('paragraph');V.insert(N,D),R.collapse(D)}M.detach()}}},function(r,u,f){'use strict';var h=f(367),w=f(161),C=f(163),T=f(102),P=f(351),E=f(162),S=f(7);u.a=class{constructor(R){this.model=R,this.view=new h.a,this.mapper=new w.a,this.modelToView=new C.a(this.model,{mapper:this.mapper,viewSelection:this.view.selection}),this._listener=Object.create(S.a),this._listener.listenTo(this.model,'change',(V,F,I)=>{this.modelToView.convertChange(F,I)},{priority:'low'}),this._listener.listenTo(this.model,'changesDone',()=>{const V=this.model.selection;this.modelToView.convertSelection(V),this.view.render()},{priority:'low'}),this._listener.listenTo(this.model.markers,'add',(V,F)=>{this.modelToView.convertMarker('addMarker',F.name,F.getRange())}),this._listener.listenTo(this.model.markers,'remove',(V,F)=>{this.modelToView.convertMarker('removeMarker',F.name,F.getRange())}),this._listener.listenTo(this.view,'selectionChange',f.i(P.a)(this.model,this.mapper)),this.modelToView.on('insert:$text',f.i(T.j)(),{priority:'lowest'}),this.modelToView.on('remove',f.i(T.k)(),{priority:'low'}),this.modelToView.on('selection',f.i(E.c)(),{priority:'low'}),this.modelToView.on('selection',f.i(E.d)(),{priority:'low'}),this.modelToView.on('selection',f.i(E.e)(),{priority:'low'}),this.modelToView.on('selection',f.i(E.f)(),{priority:'low'})}createRoot(R,V='main'){const F=this.view.createRoot(R,V),I=this.model.getRoot(V);return this.mapper.bindElements(I,F),F}destroy(){this.view.destroy(),this._listener.stopListening()}}},function(r,u,f){'use strict';function w(O){const R=[];Array.from(O.getItems({direction:'backward'})).map((V)=>T.a.createOn(V)).filter((V)=>{const F=(V.start.isAfter(O.start)||V.start.isEqual(O.start))&&(V.end.isBefore(O.end)||V.end.isEqual(O.end));return F}).forEach((V)=>{R.push(V.start.parent),f.i(S.c)(V)}),R.forEach((V)=>{for(let F=V;F.parent&&F.isEmpty;){const I=T.a.createOn(F);F=F.parent,f.i(S.c)(I)}})}var C=f(35),T=f(3),P=f(1),E=f(24),S=f(18);u.a=function(O){const R=new C.a,V=O.getFirstRange();if(!V||V.isCollapsed)return R;const F=V.start.root,I=V.start.getCommonPath(V.end),N=F.getNodeByPath(I);let M=V.start.parent==V.end.parent?V:T.a.createFromParentsAndOffsets(N,V.start.path[I.length],N,V.end.path[I.length]+1);const D=M.end.offset-M.start.offset;for(const q of M.getItems({shallow:!0}))q.is('textProxy')?R.appendChildren(new E.a(q.data,q.getAttributes())):R.appendChildren(q.clone(!0));if(M!=V){const q=V._getTransformedByMove(M.start,P.a.createAt(R,0),D)[0],z=new T.a(P.a.createAt(R),q.start),U=new T.a(q.end,P.a.createAt(R,'end'));w(U),w(z)}return R}},function(r,u,f){'use strict';var w=f(1),C=f(168),T=f(5),P=f(3),E=f(40);u.a=function(O,R,V,F){F||(F=O.model.batch()),V.isCollapsed||O.deleteContent(V,F,{merge:!0});const I=new S(O,F,V.anchor);let N;N=R.is('documentFragment')?R.getChildren():[R],I.handleNodes(N,{isFirst:!0,isLast:!0});const M=I.getSelectionRange();M?V.setRanges([M]):E.a.warn('insertcontent-no-range: Cannot determine a proper selection range after insertion.')};class S{constructor(O,R,V){this.dataController=O,this.batch=R,this.position=V,this.canMergeWith=new Set([this.position.parent]),this.schema=O.model.schema}handleNodes(O,R){O=Array.from(O);for(let V=0;V!0);if(R.schema.check({name:'$text',inside:V.nextPosition}))return V.nextPosition}}function C(R,V){const F=R.position.textNode;if(F){const I=F.data;for(let N=R.position.offset-F.startOffset;f.i(O.a)(I,N)||'character'==V&&f.i(O.b)(I,N);)R.next(),N=R.position.offset-F.startOffset}return R.position}function T(R,V){const F=R.root,I=P.a.createAt(F,V?'end':0);return V?new S.a(R,I):new S.a(I,R)}var P=f(1),E=f(37),S=f(3),O=f(278);u.a=function(R,V,F={}){const I=R.model.schema,N='backward'!=F.direction,M=F.unit?F.unit:'character',D=V.focus,q=new E.a({boundaries:T(D,N),singleCharacters:!0,direction:N?'forward':'backward'}),z={walker:q,schema:I,isForward:N,unit:M};for(let U;U=q.next();){if(U.done)return;const $=w(z,U.value);if($)return void V.setFocus($)}}},function(r,u,f){'use strict';var h=f(61);u.a=class{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(C,T){C instanceof h.a&&(C=this._getSymbolForTextProxy(C)),this._consumable.has(C)||this._consumable.set(C,new Map),this._consumable.get(C).set(T,!0)}consume(C,T){return C instanceof h.a&&(C=this._getSymbolForTextProxy(C)),!!this.test(C,T)&&(this._consumable.get(C).set(T,!1),!0)}test(C,T){C instanceof h.a&&(C=this._getSymbolForTextProxy(C));const P=this._consumable.get(C);if(P===void 0)return null;const E=P.get(T);return void 0===E?null:E}revert(C,T){C instanceof h.a&&(C=this._getSymbolForTextProxy(C));const P=this.test(C,T);return!1===P?(this._consumable.get(C).set(T,!0),!0):!0!==P&&null}_getSymbolForTextProxy(C){let T=null;const P=this._textProxyRegistry.get(C.startOffset);if(P){const E=P.get(C.endOffset);E&&(T=E.get(C.parent))}return T||(T=this._addSymbolForTextProxy(C.startOffset,C.endOffset,C.parent)),T}_addSymbolForTextProxy(C,T,P){const E=Symbol();let S,O;return S=this._textProxyRegistry.get(C),S||(S=new Map,this._textProxyRegistry.set(C,S)),O=S.get(T),O||(O=new Map,S.set(T,O)),O.set(P,E),E}}},function(r,u,f){'use strict';var w=f(60);u.a=function(C,T){return(P,E)=>{const S=E.newSelection,O=new w.a,R=[];for(let V of S.getRanges())R.push(T.toModelRange(V));O.setRanges(R,S.isBackward),O.isEqual(C.selection)||C.enqueueChanges(()=>{C.selection.setTo(O)})}}},function(r,u,f){'use strict';var C=f(35),T=f(24),P=f(18);u.b=function(){return(E,S,O,R)=>{if(!S.output&&O.consume(S.input,{name:!0})){const V=R.convertChildren(S.input,O,S);S.output=new C.a(f.i(P.b)(V))}}},u.a=function(){return(E,S,O,R)=>{const V={name:'$text',inside:S.context};R.schema.check(V)&&O.consume(S.input)&&(S.output=new T.a(S.input.data))}}},function(r,u,f){'use strict';var h=f(12),w=f(0);class C{constructor(){this._consumables=new Map}add(P,E){let S;return P.is('text')||P.is('documentFragment')?void this._consumables.set(P,!0):void(this._consumables.has(P)?S=this._consumables.get(P):(S=new T,this._consumables.set(P,S)),S.add(E))}test(P,E){const S=this._consumables.get(P);return void 0===S?null:P.is('text')||P.is('documentFragment')?S:S.test(E)}consume(P,E){return!!this.test(P,E)&&(P.is('text')||P.is('documentFragment')?this._consumables.set(P,!1):this._consumables.get(P).consume(E),!0)}revert(P,E){const S=this._consumables.get(P);S!==void 0&&(P.is('text')||P.is('documentFragment')?this._consumables.set(P,!0):S.revert(E))}static consumablesFromElement(P){const E={name:!0,attribute:[],class:[],style:[]},S=P.getAttributeKeys();for(let V of S)'style'!=V&&'class'!=V&&E.attribute.push(V);const O=P.getClassNames();for(let V of O)E.class.push(V);const R=P.getStyleNames();for(let V of R)E.style.push(V);return E}static createFrom(P,E){if(E||(E=new C),P.is('text'))return E.add(P),E;P.is('element')&&E.add(P,C.consumablesFromElement(P)),P.is('documentFragment')&&E.add(P);for(let S of P.getChildren())E=C.createFrom(S,E);return E}}u.a=C;class T{constructor(){this._canConsumeName=null,this._consumables={attribute:new Map,style:new Map,class:new Map}}add(P){for(let E in P.name&&(this._canConsumeName=!0),this._consumables)E in P&&this._add(E,P[E])}test(P){if(P.name&&!this._canConsumeName)return this._canConsumeName;for(let E in this._consumables)if(E in P){const S=this._test(E,P[E]);if(!0!==S)return S}return!0}consume(P){for(let E in P.name&&(this._canConsumeName=!1),this._consumables)E in P&&this._consume(E,P[E])}revert(P){for(let E in P.name&&(this._canConsumeName=!0),this._consumables)E in P&&this._revert(E,P[E])}_add(P,E){const S=f.i(h.a)(E)?E:[E],O=this._consumables[P];for(let R of S){if('attribute'===P&&('class'===R||'style'===R))throw new w.a('viewconsumable-invalid-attribute: Classes and styles should be handled separately.');O.set(R,!0)}}_test(P,E){const S=f.i(h.a)(E)?E:[E],O=this._consumables[P];for(let R of S)if('attribute'===P&&('class'===R||'style'===R)){const V=this._test(R,[...this._consumables[R].keys()]);if(!0!==V)return V}else{const V=O.get(R);if(V===void 0)return null;if(!V)return!1}return!0}_consume(P,E){const S=f.i(h.a)(E)?E:[E],O=this._consumables[P];for(let R of S)'attribute'===P&&('class'===R||'style'===R)?this._consume(R,[...this._consumables[R].keys()]):O.set(R,!1)}_revert(P,E){const S=f.i(h.a)(E)?E:[E],O=this._consumables[P];for(let R of S)if('attribute'===P&&('class'===R||'style'===R))this._revert(R,[...this._consumables[R].keys()]);else{const V=O.get(R);!1===V&&O.set(R,!0)}}}},function(r,u,f){'use strict';function h(M){const D=new Set,q=new Map,z=new P.a({startPosition:T.a.createAt(M,0),ignoreElementEnd:!0});for(const U of z)'$marker'==U.item.name&&D.add(U.item);for(const U of D){const $=U.getAttribute('data-name'),K=T.a.createBefore(U);q.has($)?q.get($).end=T.a.createFromPosition(K):q.set($,new C.a(T.a.createFromPosition(K))),f.i(O.c)(C.a.createOn(U))}return q}var w=f(353),C=f(3),T=f(1),P=f(37),E=f(59),S=f(35),O=f(18),R=f(7),V=f(4),F=f(50),I=f(40);class N{constructor(M={}){this.conversionApi=f.i(F.a)({},M),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this)}convert(M,D={}){this.fire('viewCleanup',M);const q=w.a.createFrom(M);let z=this._convertItem(M,q,D);return z?(z.is('documentFragment')||(z=new S.a([z])),z.markers=h(z),z):new S.a}_convertItem(M,D,q={}){const z=f.i(F.a)({},q,{input:M,output:null});return M.is('element')?this.fire('element:'+M.name,z,D,this.conversionApi):M.is('text')?this.fire('text',z,D,this.conversionApi):this.fire('documentFragment',z,D,this.conversionApi),z.output&&!(z.output instanceof E.a||z.output instanceof S.a)?(I.a.warn('view-conversion-dispatcher-incorrect-result: Dropped incorrect conversion result.',[M,z.output]),null):z.output}_convertChildren(M,D,q={}){const z=Array.from(M.getChildren()),U=z.map(($)=>this._convertItem($,D,q)).filter(($)=>$ instanceof E.a||$ instanceof S.a).reduce(($,K)=>{return $.concat(K.is('documentFragment')?Array.from(K.getChildren()):K)},[]);return new S.a(U)}}u.a=N,f.i(V.a)(N,R.a)},function(r,u){'use strict';u.a=class{getHtml(w){const C=document.implementation.createHTMLDocument(''),T=C.createElement('div');return T.appendChild(w),T.innerHTML}}},function(r,u,f){'use strict';var h=f(165),w=f(103),C=f(104),T=f(105),P=f(106),E=f(166),S=f(107),O=f(109),R=f(167),V=f(110)},function(r,u,f){'use strict';function h(G,Z){const J=G.clone(),Q=J.operations[0];return Q.oldRange=Q.oldRange.getTransformedByDelta(Z)[0],Q.newRange=Q.newRange.getTransformedByDelta(Z)[0],[J]}function w(G,Z){function J(){const ne=new P.a(G.position.getShiftedBy(te),G.position.getShiftedBy(ae)),oe=new O.a(ne,Z.key,ee,Z.value,0);Q.addOperation(oe)}const Q=new I.a,X=G.nodes;let ee=X.getNode(0).getAttribute(Z.key),te=0,ae=X.getNode(0).offsetSize;for(let ne=1;ne{const Q=f.i(T.c)(G,Z,J);return G.range.containsPosition(Z.position)&&Q.push(w(Z,G)),Q}),f.i(T.b)(I.a,z.a,(G,Z,J)=>{const Q=new E.a(Z.position.root,Z.position.path.slice(0,-1)),X=f.i(T.c)(G,Z,J);for(let ee of G.operations)if(ee.range.containsPosition(Q)||ee.range.start.isEqual(Q)){const te=new I.a,ae=Q.getShiftedBy(1),ne=E.a.createFromPosition(ae);ne.path.push(0);const oe=Z._cloneOperation.nodes.getNode(0).getAttribute(ee.key);te.addOperation(new O.a(new P.a(ae,ne),ee.key,oe===void 0?null:oe,ee.newValue,0)),X.push(te);break}return X}),f.i(T.b)(N.a,D.a,(G,Z,J)=>{return G.position.isEqual(Z.position)?[Z.getReversed(),G.clone()]:f.i(T.c)(G,Z,J)}),f.i(T.b)(M.a,z.a,h),f.i(T.b)(M.a,D.a,h),f.i(T.b)(M.a,$.a,h),f.i(T.b)(M.a,K.a,h),f.i(T.b)(M.a,q.a,h),f.i(T.b)(M.a,W.a,h),f.i(T.b)(q.a,D.a,(G,Z,J)=>{const Q=G.sourcePosition.root==Z.position.root&&'same'===f.i(Y.a)(G.sourcePosition.getParentPath(),Z.position.getParentPath()),X=G.sourcePosition.offset<=Z.position.offset&&G.sourcePosition.offset+G.howMany>Z.position.offset;return Q&&X?[Z.getReversed(),G.clone()]:f.i(T.c)(G,Z,J)}),f.i(T.b)(D.a,N.a,(G,Z,J)=>{return G.position.isEqual(Z.position)?[C()]:f.i(T.c)(G,Z,J)}),f.i(T.b)(D.a,q.a,(G,Z,J)=>{const Q=G.position.root==Z.sourcePosition.root&&'same'===f.i(Y.a)(G.position.getParentPath(),Z.sourcePosition.getParentPath()),X=Z.sourcePosition.offset<=G.position.offset&&Z.sourcePosition.offset+Z.howMany>G.position.offset;return Q&&X?[C()]:f.i(T.c)(G,Z,J)}),f.i(T.b)(z.a,z.a,(G,Z,J)=>{const Q=G.position.getParentPath(),X=Z.position.getParentPath();if('same'==f.i(Y.a)(Q,X)){if(G.position.offset==Z.position.offset)return[C()];if(G.position.offsetZ._cloneOperation.sourcePosition.offset&&ee._cloneOperation.sourcePosition.offset--,[ee]}const ee=G.clone();return ee._cloneOperation.position.offset++,ee._moveOperation.sourcePosition.path[ee._moveOperation.sourcePosition.path.length-2]++,ee._moveOperation.targetPosition.path[ee._moveOperation.targetPosition.path.length-2]++,ee._moveOperation.sourcePosition.offset=G.position.offset-Z.position.offset,G._cloneOperation instanceof V.a&&Z._cloneOperation instanceof V.a&&G._cloneOperation.sourcePosition.offset>Z._cloneOperation.sourcePosition.offset&&ee._cloneOperation.sourcePosition.offset--,[ee]}return f.i(T.c)(G,Z,J)}),f.i(T.b)(z.a,K.a,(G,Z,J)=>{return'same'===f.i(Y.a)(Z.position.path,G.position.getParentPath())?[C()]:f.i(T.c)(G,Z,J)}),f.i(T.b)(z.a,$.a,(G,Z,J)=>{const Q='same'===f.i(Y.a)(G.position.getParentPath(),Z.range.start.getParentPath()),X=Z.range.start.offset=G.position.offset;if(Q&&X)return[C()];if('same'===f.i(Y.a)(G.position.getParentPath(),Z.range.end.getShiftedBy(-1).path)){const ee=G.clone(),te=E.a.createFromPosition(Z.range.start);te.path.push(Z.howMany-1);const ae=te.getShiftedBy(1);ee._cloneOperation.position=ae;const ne=E.a.createFromPosition(te);ne.path.push(G.position.offset),ee._moveOperation.sourcePosition=ne;const oe=E.a.createFromPosition(ae);return oe.path.push(0),ee._moveOperation.targetPosition=oe,[ee]}return f.i(T.c)(G,Z,J)}),f.i(T.b)(z.a,I.a,(G,Z)=>{G=G.clone();const J=new E.a(G.position.root,G.position.path.slice(0,-1));if(G._cloneOperation instanceof R.a)for(let Q of Z.operations)if(Q.range.containsPosition(J)||Q.range.start.isEqual(J)){null===Q.newValue?G._cloneOperation.nodes.getNode(0).removeAttribute(Q.key):G._cloneOperation.nodes.getNode(0).setAttribute(Q.key,Q.newValue);break}return[G]}),f.i(T.b)(K.a,z.a,(G,Z,J)=>{if('same'===f.i(Y.a)(G.position.path,Z.position.getParentPath())){const Q=[Z.getReversed(),G.clone()];return Q[1].operations[1].targetPosition.path[0]++,Q}return f.i(T.c)(G,Z,J)}),f.i(T.b)(U.a,I.a,(G,Z)=>{const J=[G.clone()];return Z.range.containsPosition(G.position)&&J.push(w(G,Z)),J}),f.i(T.b)($.a,z.a,(G,Z,J)=>{const Q='same'===f.i(Y.a)(G.range.start.getParentPath(),Z.position.getParentPath()),X=G.range.start.offset=Z.position.offset;if(Q&&X)return[Z.getReversed(),G.clone()];if('same'===f.i(Y.a)(Z.position.getParentPath(),G.range.end.getShiftedBy(-1).path)){const ee=G.clone();return ee._insertOperation.position.offset++,ee._moveOperation.howMany++,ee._moveOperation.targetPosition.path[ee._moveOperation.targetPosition.path.length-2]++,[ee]}return f.i(T.c)(G,Z,J)}),f.i(T.b)(W.a,z.a,(G,Z,J)=>{const Q=new E.a(Z.position.root,Z.position.path.slice(0,-1)),X=f.i(T.c)(G,Z,J);if(G.operations[0].position.isEqual(Q)){const ee=G.clone();ee.operations[0].position=G.operations[0].position.getShiftedBy(1),X.push(ee)}return X}),f.i(T.b)(z.a,W.a,(G,Z)=>{G=G.clone();const J=new E.a(G.position.root,G.position.path.slice(0,-1));return G._cloneOperation instanceof R.a&&Z.operations[0].position.isEqual(J)&&(G._cloneOperation.nodes.getNode(0).name=Z.operations[0].newName),[G]}),f.i(T.b)(H.a,z.a,(G,Z,J)=>{const Q=f.i(T.c)(G,Z,J),X=Z._cloneOperation.position;for(let ee of Q)for(let te of ee.operations){const ae=te.sourcePosition.getShiftedBy(te.howMany);ae.isEqual(X)&&(te.howMany+=1)}return Q}),f.i(T.b)(z.a,H.a,(G,Z,J)=>{Z=Z.clone();const Q=G._cloneOperation.position;for(let X of Z.operations){const ee=X.sourcePosition.getShiftedBy(X.howMany);ee.isEqual(Q)&&(X.howMany+=1)}return f.i(T.c)(G,Z,J)})},function(r,u,f){'use strict';function h(O,R,V,F){const I=O.document,N=new S,M=new P.a(R,V,F,I.markers,I.version);O.addDelta(N),N.addOperation(M),I.applyOperation(M)}var w=f(20),C=f(17),T=f(16),P=f(112),E=f(0);class S extends w.a{get type(){return'marker'}get _reverseDeltaClass(){return S}static get className(){return'engine.model.delta.MarkerDelta'}}u.a=S,f.i(T.b)('setMarker',function(O,R){const V='string'==typeof O?O:O.name,F=this.document.markers.get(V);if(!R&&!F)throw new E.a('batch-setMarker-no-range: Range parameter is required when adding a new marker.');const I=F?F.getRange():null;return R?h(this,V,I,R):h(this,V,null,I),this}),f.i(T.b)('removeMarker',function(O){const R='string'==typeof O?O:O.name;if(!this.document.markers.has(R))throw new E.a('batch-removeMarker-no-marker: Trying to remove marker that does not exist.');const V=this.document.markers.get(R).getRange();return h(this,R,V,null),this}),C.a.register(S)},function(r,u,f){'use strict';function h(W){const H=W.textNode;if(H){const Y=H.data,G=W.offset-H.startOffset;return!f.i(U.a)(Y,G)&&!f.i(U.b)(Y,G)}return!0}function*w(W,H){for(let Y=!1;!Y;){if(Y=!0,W){const G=W.next();G.done||(Y=!1,yield{walker:W,value:G.value})}if(H){const G=H.next();G.done||(Y=!1,yield{walker:H,value:G.value})}}}var C=f(356),T=f(357),P=f(3),E=f(1),S=f(365),O=f(16),R=f(360),V=f(361),F=f(366),I=f(37),N=f(362),M=f(96),D=f(7),q=f(0),z=f(4),U=f(278);const $='$graveyard';class K{constructor(){this.version=0,this.schema=new F.a,this.history=new R.a(this),this.markers=new N.a,this.selection=new V.a(this),this._pendingChanges=[],this.roots=new Map,this.selection.on('change:range',()=>{for(let W of this.selection.getRanges())if(!this._validateSelectionRange(W))throw new q.a('document-selection-wrong-position: Range from document selection starts or ends at incorrect position.',{range:W})}),this.createRoot('$root',$)}get graveyard(){return this.getRoot($)}applyOperation(W){if(W.baseVersion!==this.version)throw new q.a('model-document-applyOperation-wrong-version: Only operations with matching versions can be applied.',{operation:W});let H=W._execute();this.version++,this.history.addDelta(W.delta),H&&this.fire('change',W.type,H,W.delta.batch,W.delta.type)}batch(W){return new O.a(this,W)}createRoot(W='$root',H='main'){if(this.roots.has(H))throw new q.a('model-document-createRoot-name-exists: Root with specified name already exists.',{name:H});const Y=new S.a(this,W,H);return this.roots.set(H,Y),Y}destroy(){this.selection.destroy(),this.stopListening()}enqueueChanges(W){if(this._pendingChanges.push(W),1==this._pendingChanges.length){for(;this._pendingChanges.length;)this._pendingChanges[0](),this._pendingChanges.shift();this.fire('changesDone')}}getRoot(W='main'){if(!this.roots.has(W))throw new q.a('model-document-getRoot-root-not-exist: Root with specified name does not exist.',{name:W});return this.roots.get(W)}hasRoot(W){return this.roots.has(W)}getRootNames(){return Array.from(this.roots.keys()).filter((W)=>W!=$)}getNearestSelectionRange(W,H='both'){if(this.schema.check({name:'$text',inside:W}))return new P.a(W);let Y,G;('both'==H||'backward'==H)&&(Y=new I.a({startPosition:W,direction:'backward'})),('both'==H||'forward'==H)&&(G=new I.a({startPosition:W}));for(let Z of w(Y,G)){const J=Z.walker==Y?'elementEnd':'elementStart',Q=Z.value;if(Q.type==J&&this.schema.objects.has(Q.item.name))return P.a.createOn(Q.item);if(this.schema.check({name:'$text',inside:Q.nextPosition}))return new P.a(Q.nextPosition)}return null}toJSON(){const W=f.i(M.a)(this);return W.selection='[engine.model.LiveSelection]',W}_getDefaultRoot(){for(let W of this.roots.values())if(W!==this.graveyard)return W;return this.graveyard}_getDefaultRange(){const W=this._getDefaultRoot(),H=new E.a(W,[0]),Y=this.getNearestSelectionRange(H);return Y||new P.a(H)}_validateSelectionRange(W){return h(W.start)&&h(W.end)}}u.a=K,f.i(z.a)(K,D.a)},function(r,u,f){'use strict';var h=f(0);u.a=class{constructor(){this._deltas=[],this._historyPoints=new Map}addDelta(C){if(0=T)break;yield E}}}getDelta(C){let T=this._historyPoints.get(C);if(T===void 0)return null;const P=[];for(T;TC&&this._historyPoints.set(S,this._historyPoints.get(S)+E)}}_getIndex(C){let T=this._historyPoints.get(C);if(T===void 0){const P=this._deltas[this._deltas.length-1],E=P.baseVersion+P.operations.length;if(0>C||C>=E)return-1;throw new h.a('model-history-wrong-version: Given base version points to the middle of a delta.')}return T}}},function(r,u,f){'use strict';function h(M){return M instanceof E.a||M instanceof P.a?M.getAttributes():null}var w=f(1),C=f(3),T=f(111),P=f(24),E=f(61),S=f(152),O=f(0),R=f(40),V=f(60);const F='selection:',I=new Set(['addAttribute','removeAttribute','changeAttribute','addRootAttribute','removeRootAttribute','changeRootAttribute']);class N extends V.a{constructor(M){super(),this._document=M,this._attributePriority=new Map,this.listenTo(this._document,'change',(D,q)=>{I.has(q)&&this._updateAttributes(!1)})}get isCollapsed(){const M=this._ranges.length;return!(0!==M)||super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().start}get rangeCount(){return this._ranges.length?this._ranges.length:1}destroy(){for(let M=0;M{D.root==this._document.graveyard&&this._fixGraveyardSelection(D,z),this.fire('change:range',{directChange:!1})}),D}_updateAttributes(M){const D=f.i(S.a)(this._getSurroundingAttributes()),q=f.i(S.a)(this.getAttributes());if(M)this._attributePriority=new Map,this._attrs=new Map;else for(let[U,$]of this._attributePriority)'low'==$&&(this._attrs.delete(U),this._attributePriority.delete(U));this._setAttributesTo(D,!1);const z=[];for(let[U,$]of this.getAttributes())q.has(U)&&q.get(U)===$||z.push(U);for(let[U]of q)this.hasAttribute(U)||z.push(U);0{return new S.a(K,z.key,z.oldValue,z.newValue,z.baseVersion)})},AttributeOperation(z,U,$){if(z.key===U.key){let K=z.range.getDifference(U.range).map((H)=>{return new S.a(H,z.key,z.oldValue,z.newValue,z.baseVersion)});const W=z.range.getIntersection(U.range);return W&&($?K.push(new S.a(W,U.key,U.newValue,z.newValue,z.baseVersion)):0===K.length&&K.push(new N.a(0))),K}return[z.clone()]},RootAttributeOperation:w,RenameOperation:w,MarkerOperation:w,MoveOperation(z,U){const $=M.a.createFromPositionAndShift(U.sourcePosition,U.howMany);let K=[];U instanceof I.a&&U._needsHolderElement&&z.range.root==U.targetPosition.root&&z.range.start.path[0]>=U._holderElementOffset&&(z=z.clone(),z.range.start.path[0]++,z.range.end.path[0]++);const W=P(z.range.getDifference($)),H=z.range.getIntersection($);return null!==W&&(W.start=W.start._getTransformedByDeletion(U.sourcePosition,U.howMany),W.end=W.end._getTransformedByDeletion(U.sourcePosition,U.howMany),K=W._getTransformedByInsertion(U.getMovedRangeStart(),U.howMany,!0,!1).reverse()),null!==H&&(H.start=H.start._getCombined(U.sourcePosition,U.getMovedRangeStart()),H.end=H.end._getCombined(U.sourcePosition,U.getMovedRangeStart()),K.push(H)),K.map((Y)=>{return new S.a(Y,z.key,z.oldValue,z.newValue,z.baseVersion)})}},RootAttributeOperation:{InsertOperation:w,AttributeOperation:w,RootAttributeOperation(z,U,$){return z.root!==U.root||z.key!==U.key||(z.newValue===U.newValue||$)&&z.newValue!==U.newValue?[z.clone()]:[new N.a(z.baseVersion)]},RenameOperation:w,MarkerOperation:w,MoveOperation:w},RenameOperation:{InsertOperation(z,U){const $=z.clone();return $.position=$.position._getTransformedByInsertion(U.position,U.nodes.maxOffset,!0),[$]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation(z,U,$){const K=z.clone();if(z.position.isEqual(U.position))if($)K.oldName=U.newName;else return[new N.a(z.baseVersion)];return[K]},MarkerOperation:w,MoveOperation(z,U){const $=z.clone(),K=$.position.isEqual(U.sourcePosition);return $.position=$.position._getTransformedByMove(U.sourcePosition,U.targetPosition,U.howMany,!0,K),[$]}},MarkerOperation:{InsertOperation(z,U){const $=z.clone();return $.oldRange&&($.oldRange=$.oldRange._getTransformedByInsertion(U.position,U.nodes.maxOffset,!1,!1)[0]),$.newRange&&($.newRange=$.newRange._getTransformedByInsertion(U.position,U.nodes.maxOffset,!1,!1)[0]),[$]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation:w,MarkerOperation(z,U,$){const K=z.clone();if(z.name==U.name)if($)K.oldRange=U.newRange;else return[new N.a(z.baseVersion)];return[K]},MoveOperation(z,U){const $=z.clone();if($.oldRange){const K=$.oldRange._getTransformedByMove(U.sourcePosition,U.targetPosition,U.howMany);$.oldRange=M.a.createFromRanges(K)}if($.newRange){const K=$.newRange._getTransformedByMove(U.sourcePosition,U.targetPosition,U.howMany);$.newRange=M.a.createFromRanges(K)}return[$]}},MoveOperation:{InsertOperation(z,U,$){let K=M.a.createFromPositionAndShift(z.sourcePosition,z.howMany);K=K._getTransformedByInsertion(U.position,U.nodes.maxOffset,!1,z.isSticky)[0];let W=new z.constructor(K.start,K.end.offset-K.start.offset,z instanceof I.a?z.baseVersion:z.targetPosition._getTransformedByInsertion(U.position,U.nodes.maxOffset,!$),z instanceof I.a?void 0:z.baseVersion);return W.isSticky=z.isSticky,z instanceof I.a&&(W._needsHolderElement=z._needsHolderElement,W._holderElementOffset=z._holderElementOffset),[W]},AttributeOperation:w,RootAttributeOperation:w,RenameOperation:w,MarkerOperation:w,MoveOperation(z,U,$){if(T(z,U)&&T(U,z))return[U.getReversed()];if(z instanceof I.a&&U instanceof I.a){const ee=z.targetPosition.path[0],te=U.targetPosition.path[0];(ee>te||ee==te&&$)&&(z=z.clone(),z.targetPosition.path[0]++)}z instanceof I.a&&!(U instanceof I.a)?$=!0:!(z instanceof I.a)&&U instanceof I.a&&($=!1);const K=M.a.createFromPositionAndShift(z.sourcePosition,z.howMany),W=M.a.createFromPositionAndShift(U.sourcePosition,U.howMany);let H=[],Y=P(K.getDifference(W));Y&&(Y.start=Y.start._getTransformedByMove(U.sourcePosition,U.targetPosition,U.howMany,!z.isSticky,!1),Y.end=Y.end._getTransformedByMove(U.sourcePosition,U.targetPosition,U.howMany,z.isSticky,!1),H.push(Y));const G=K.getIntersection(W);let Z=f.i(D.a)(z.sourcePosition.getParentPath(),U.sourcePosition.getParentPath()),J=K.containsPosition(U.targetPosition)||K.start.isEqual(U.targetPosition)&&z.isSticky||K.end.isEqual(U.targetPosition)&&z.isSticky,Q=W.containsRange(K)&&(W.containsPosition(z.targetPosition)||W.start.isEqual(z.targetPosition)||W.end.isEqual(z.targetPosition));if(null!==G&&('extension'===Z||'same'===Z&&$||Q)&&!J&&(G.start=G.start._getCombined(U.sourcePosition,U.getMovedRangeStart()),G.end=G.end._getCombined(U.sourcePosition,U.getMovedRangeStart()),Y&&K.start.isBefore(W.start)?H.push(G):H.unshift(G)),0===H.length)return z instanceof I.a?(z=z.clone(),z.howMany=0,z.sourcePosition=U.targetPosition,[z]):[new N.a(z.baseVersion)];let X=z.targetPosition._getTransformedByMove(U.sourcePosition,U.targetPosition,U.howMany,!$,U.isSticky||Q);return H.reverse().map((ee,te)=>{let ae=new z.constructor(ee.start,ee.end.offset-ee.start.offset,z instanceof I.a?z.baseVersion:X,z instanceof I.a?void 0:z.baseVersion);return ae.isSticky=z.isSticky,z instanceof I.a&&(ae._needsHolderElement=z._needsHolderElement&&0===te,ae._holderElementOffset=z._holderElementOffset),ae})}}}},function(r,u,f){'use strict';var h=f(5);class w extends h.a{constructor(C,T,P='main'){super(T),this._doc=C,this.rootName=P}get document(){return this._doc}is(C,T){return T?'rootElement'==C&&T==this.name||super.is(C,T):'rootElement'==C||super.is(C)}toJSON(){return this.rootName}}u.a=w},function(r,u,f){'use strict';function h(V,F,I){for(let N=I.length-1,M=F.length-1;0<=N&&0<=M;){const D=F[M];if(!V.hasItem(D))return!1;const q=V._extensionChains.get(D);if(q.includes(I[N]))N--,M--;else return!1}return!0}var w=f(1),C=f(5),T=f(96),P=f(12),E=f(149),S=f(0);class O{constructor(){this.objects=new Set,this.limits=new Set,this._items=new Map,this._extensionChains=new Map,this.registerItem('$root'),this.registerItem('$block'),this.registerItem('$inline'),this.registerItem('$text','$inline'),this.allow({name:'$block',inside:'$root'}),this.allow({name:'$inline',inside:'$block'}),this.registerItem('$clipboardHolder','$root'),this.allow({name:'$inline',inside:'$clipboardHolder'})}allow(V){this._getItem(V.name).allow(O._normalizeQueryPath(V.inside),V.attributes)}disallow(V){this._getItem(V.name).disallow(O._normalizeQueryPath(V.inside),V.attributes)}requireAttributes(V,F){this._getItem(V).requireAttributes(F)}check(V){if(!this.hasItem(V.name))return!1;f.i(P.a)(V.attributes)?0===V.attributes.length&&V.attributes.push(void 0):V.attributes=[V.attributes];const F=O._normalizeQueryPath(V.inside),I=this._extensionChains.get(V.name).map((N)=>{return this._getItem(N)});if(!this._getItem(V.name)._checkRequiredAttributes(V.attributes))return!1;for(let N of V.attributes)for(let M of I)if(M._hasMatchingPath('disallow',F,N))return!1;for(let N of V.attributes){let M=!1;for(let D of I)if(D._hasMatchingPath('allow',F,N)){M=!0;break}if(!M)return!1}return!0}hasItem(V){return this._items.has(V)}registerItem(V,F){if(this.hasItem(V))throw new S.a('model-schema-item-exists: Item with specified name already exists in schema.');if(!!F&&!this.hasItem(F))throw new S.a('model-schema-no-item: Item with specified name does not exist in schema.');this._items.set(V,new R(this));const I=this.hasItem(F)?this._extensionChains.get(F).concat(V):[V];this._extensionChains.set(V,I)}itemExtends(V,F){if(!this.hasItem(V)||!this.hasItem(F))throw new S.a('model-schema-no-item: Item with specified name does not exist in schema.');const I=this._extensionChains.get(V);return I.some((N)=>N==F)}_getItem(V){if(!this.hasItem(V))throw new S.a('model-schema-no-item: Item with specified name does not exist in schema.');return this._items.get(V)}static _normalizeQueryPath(V){let F=[];if(f.i(P.a)(V))for(let I of V)I instanceof C.a?F.push(I.name):f.i(E.a)(I)&&F.push(I);else if(V instanceof w.a){for(let I=V.parent;null!==I;)F.push(I.name),I=I.parent;F.reverse()}else f.i(E.a)(V)&&(F=V.split(' '));return F}}u.a=O;class R{constructor(V){this._schema=V,this._allowed=[],this._disallowed=[],this._requiredAttributes=[]}allow(V,F){this._addPath('_allowed',V,F)}disallow(V,F){this._addPath('_disallowed',V,F)}requireAttributes(V){this._requiredAttributes.push(V)}_addPath(V,F,I){F=F.slice(),f.i(P.a)(I)||(I=[I]);for(let N of I)this[V].push({path:F,attribute:N})}_getPaths(V,F){const I='allow'===V?this._allowed:this._disallowed,N=[];for(let M of I)M.attribute===F&&N.push(M.path);return N}_checkRequiredAttributes(V){let F=!0;for(let I of this._requiredAttributes){F=!0;for(let N of I)if(-1==V.indexOf(N)){F=!1;break}if(F)break}return F}_hasMatchingPath(V,F,I){const N=this._getPaths(V,I);for(const M of N)if(h(this._schema,F,M))return!0;return!1}toJSON(){const V=f.i(T.a)(this);return V._schema='[model.Schema]',V}}},function(r,u,f){'use strict';var h=f(64),w=f(375),C=f(169),T=f(173),P=f(62),E=f(40),S=f(172),O=f(373),R=f(370),V=f(371),F=f(369),I=f(4),N=f(33);class M{constructor(){this.domRoots=new Map,this.selection=new h.a,this.domConverter=new C.a,this.roots=new Map,this.set('isFocused',!1),this.renderer=new w.a(this.domConverter,this.selection),this.renderer.bind('isFocused').to(this,'isFocused'),this._observers=new Map,this.addObserver(S.a),this.addObserver(O.a),this.addObserver(R.a),this.addObserver(V.a),this.addObserver(F.a),f.i(P.h)(this),this.on('render',()=>{this.disableObservers(),this.renderer.render(),this.enableObservers()})}addObserver(D){let q=this._observers.get(D);if(q)return q;q=new D(this),this._observers.set(D,q);for(let[z,U]of this.domRoots)q.observe(U,z);return q.enable(),q}getObserver(D){return this._observers.get(D)}createRoot(D,q='main'){const z='string'==typeof D?D:D.tagName,U=new T.a(z.toLowerCase(),q);return U.document=this,this.roots.set(q,U),U.on('change:children',($,K)=>this.renderer.markToSync('children',K)),U.on('change:attributes',($,K)=>this.renderer.markToSync('attributes',K)),U.on('change:text',($,K)=>this.renderer.markToSync('text',K)),this.domConverter.isElement(D)&&this.attachDomRoot(D,q),U}attachDomRoot(D,q='main'){const z=this.getRoot(q);this.domRoots.set(q,D),this.domConverter.bindElements(D,z),this.renderer.markToSync('children',z),this.renderer.domDocuments.add(D.ownerDocument);for(let U of this._observers.values())U.observe(D,q)}getRoot(D='main'){return this.roots.get(D)}getDomRoot(D='main'){return this.domRoots.get(D)}render(){this.fire('render')}focus(){if(!this.isFocused){const D=this.selection.editableElement;D?(this.domConverter.focus(D),this.render()):E.a.warn('view-focus-no-selection: There is no selection in any editable to focus.')}}disableObservers(){for(let D of this._observers.values())D.disable()}enableObservers(){for(let D of this._observers.values())D.enable()}destroy(){for(let D of this._observers.values())D.destroy()}}u.a=M,f.i(I.a)(M,N.a)},function(r,u,f){'use strict';var h=f(63);class w extends h.a{constructor(C){super(C),this.domEventType='click'}onDomEvent(C){this.fire(C.type,C)}}u.a=w},function(r,u,f){'use strict';function h(S){return S==T.d.arrowright||S==T.d.arrowleft||S==T.d.arrowup||S==T.d.arrowdown}var w=f(53),C=f(64),T=f(22),P=f(143);class E extends w.a{constructor(S){super(S),this._fireSelectionChangeDoneDebounced=f.i(P.a)((O)=>this.document.fire('selectionChangeDone',O),200)}observe(){const S=this.document;S.on('keydown',(O,R)=>{const V=S.selection;V.isFake&&h(R.keyCode)&&this.isEnabled&&(R.preventDefault(),this._handleSelectionMove(R.keyCode))},{priority:'lowest'})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(S){const O=this.document.selection,R=C.a.createFromSelection(O);R.setFake(!1),(S==T.d.arrowleft||S==T.d.arrowup)&&R.collapseToStart(),(S==T.d.arrowright||S==T.d.arrowdown)&&R.collapseToEnd();const V={oldSelection:O,newSelection:R,domSelection:null};this.document.fire('selectionChange',V),this._fireSelectionChangeDoneDebounced(V)}}u.a=E},function(r,u,f){'use strict';var h=f(63);class w extends h.a{constructor(C){super(C),this.domEventType=['focus','blur'],this.useCapture=!0,C.on('focus',()=>{C.isFocused=!0,this._renderTimeoutId=setTimeout(()=>C.render(),0)}),C.on('blur',(T,P)=>{const E=C.selection.editableElement;(null===E||E===P.target)&&(C.isFocused=!1,C.render())})}onDomEvent(C){this.fire(C.type,C)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}u.a=w},function(r,u,f){'use strict';var h=f(63),w=f(22);class C extends h.a{constructor(T){super(T),this.domEventType='keydown'}onDomEvent(T){this.fire('keydown',T,{keyCode:T.keyCode,altKey:T.altKey,ctrlKey:T.ctrlKey||T.metaKey,shiftKey:T.shiftKey,get keystroke(){return f.i(w.c)(this)}})}}u.a=C},function(r,u,f){'use strict';var h=f(63);class w extends h.a{constructor(C){super(C),this.domEventType='mousedown'}onDomEvent(C){this.fire(C.type,C)}}u.a=w},function(r,u,f){'use strict';var h=f(53),w=f(172),C=f(40),T=f(143);class P extends h.a{constructor(E){super(E),this.mutationObserver=E.getObserver(w.a),this.document=E,this.selection=E.selection,this.domConverter=E.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=f.i(T.a)((S)=>this.document.fire('selectionChangeDone',S),200),this._clearInfiniteLoopInterval=setInterval(()=>this._clearInfiniteLoop(),1e3),this._loopbackCounter=0}observe(E){const S=E.ownerDocument;this._documents.has(S)||(this.listenTo(S,'selectionchange',()=>{this._handleSelectionChange(S)}),this._documents.add(S))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionChange(E){if(this.isEnabled&&this.document.isFocused){this.mutationObserver.flush();const S=E.defaultView.getSelection(),O=this.domConverter.domSelectionToView(S);if(!this.selection.isEqual(O)){if(60<++this._loopbackCounter)return void C.a.warn('selectionchange-infinite-loop: Selection change observer detected an infinite rendering loop.');const R={oldSelection:this.selection,newSelection:O,domSelection:S};this.document.fire('selectionChange',R),this._fireSelectionChangeDoneDebounced(R)}}}_clearInfiniteLoop(){this._loopbackCounter=0}}u.a=P},function(r,u,f){'use strict';function w(I){const N=I.document;I.removeClass('ck-placeholder'),I.removeAttribute('data-placeholder'),F.has(N)&&F.get(N).delete(I)}function C(I){const N=F.get(I);for(let[M,D]of N)T(M,D)}function T(I,N){const M=I.document;if(M){const D=M.selection,q=D.anchor;return N&&!N()?void I.removeClass('ck-placeholder'):M.isFocused||I.childCount?void(!I.childCount&&q&&q.parent!==I?I.addClass('ck-placeholder'):I.removeClass('ck-placeholder')):void I.addClass('ck-placeholder')}}var P=f(50),E=f(7),S=f(0),O=f(320),R=f.n(O);u.a=function(I,N,M){const D=I.document;if(!D)throw new S.a('view-placeholder-element-is-detached: Provided element is not placed in document.');w(I),F.has(D)||(F.set(D,new Map),V.listenTo(D,'render',()=>C(D),{priority:'high'})),I.setAttribute('data-placeholder',N),F.get(D).set(I,M),T(I,M)};const V={};f.i(P.a)(V,E.a);const F=new WeakMap},function(r,u,f){'use strict';function h(D,q){return!D.isCollapsed&&w(D).isEqual(w(q))}function w(D){const q=P.a.createFromSelection(D),z=q.getRanges();let U=[];for(let $ of z)U.push($.getTrimmed());return q.setRanges(U,q.isBackward),q}var C=f(31),T=f(26),P=f(64),E=f(62),S=f(4),O=f(190),R=f(435),V=f(438),F=f(40),I=f(33),N=f(0);class M{constructor(D,q){this.domDocuments=new Set,this.domConverter=D,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=q,this._inlineFiller=null,this.isFocused=!1,this._fakeSelectionContainer=null}markToSync(D,q){if('text'===D)this.domConverter.getCorrespondingDom(q.parent)&&this.markedTexts.add(q);else{if(!this.domConverter.getCorrespondingDom(q))return;if('attributes'===D)this.markedAttributes.add(q);else if('children'===D)this.markedChildren.add(q);else throw new N.a('view-renderer-unknown-type: Unknown type passed to Renderer.markToSync.')}}render(){let D;this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?D=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(D=this.selection.getFirstPosition(),this.markedChildren.add(D.parent));for(let q of this.markedTexts)!this.markedChildren.has(q.parent)&&this.domConverter.getCorrespondingDom(q.parent)&&this._updateText(q,{inlineFillerPosition:D});for(let q of this.markedAttributes)this._updateAttrs(q);for(let q of this.markedChildren)this._updateChildren(q,{inlineFillerPosition:D});this._updateSelection(),this._updateFocus(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear(),this._inlineFiller=this._getInlineFillerNode(D)}_getInlineFillerNode(D){if(!D)return void(this._inlineFiller=null);const q=this.domConverter.viewPositionToDom(D);if(!q||!f.i(E.c)(q.parent))throw new N.a('view-renderer-cannot-find-filler: Cannot find filler node by its position.');return q.parent}_getInlineFillerPosition(){const D=this.selection.getFirstPosition();return D.parent.is('text')?T.a.createBefore(this.selection.getFirstPosition().parent):D}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const D=this.selection.getFirstPosition(),q=this.domConverter.viewPositionToDom(D);return q&&this.domConverter.isText(q.parent)&&f.i(E.c)(q.parent)}_removeInlineFiller(){const D=this._inlineFiller;if(!f.i(E.c)(D))throw new N.a('view-renderer-filler-was-lost: The inline filler node was lost.');f.i(E.f)(D)?D.parentNode.removeChild(D):D.data=D.data.substr(E.d),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const D=this.selection.getFirstPosition(),q=D.parent,z=D.offset;if(!this.domConverter.getCorrespondingDomElement(q.root))return!1;if(!q.is('element'))return!1;if(z===q.getFillerOffset())return!1;const U=D.nodeBefore,$=D.nodeAfter;return U instanceof C.a||$ instanceof C.a?!1:!0}_updateText(D,q){const z=this.domConverter.getCorrespondingDom(D),U=this.domConverter.viewToDom(D,z.ownerDocument),$=z.data;let K=U.data;const W=q.inlineFillerPosition;W&&W.parent==D.parent&&W.offset==D.index&&(K=E.i+K),$!=K&&(z.data=K)}_updateAttrs(D){const q=this.domConverter.getCorrespondingDom(D),z=Array.from(q.attributes).map(($)=>$.name),U=D.getAttributeKeys();for(let $ of U)q.setAttribute($,D.getAttribute($));for(let $ of z)D.hasAttribute($)||q.removeAttribute($)}_updateChildren(D,q){function z(J,Q){if(J===Q)return!0;return U.isText(J)&&U.isText(Q)?J.data===Q.data:f.i(E.e)(J,U.blockFiller)&&f.i(E.e)(Q,U.blockFiller)}const U=this.domConverter,$=U.getCorrespondingDom(D);if($){const K=$.ownerDocument,W=q.inlineFillerPosition,H=$.childNodes,Y=Array.from(U.viewChildrenToDom(D,K,{bind:!0}));if(W&&W.parent==D){const J=Y[W.offset];this.domConverter.isText(J)?J.data=E.i+J.data:Y.splice(W.offset,0,K.createTextNode(E.i))}const G=f.i(O.a)(H,Y,z);let Z=0;for(let J of G)'insert'===J?(f.i(R.a)($,Z,Y[Z]),Z++):'delete'===J?(this.domConverter.unbindDomElement(H[Z]),f.i(V.a)(H[Z])):Z++}}_updateSelection(){if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const D=this.domConverter.getCorrespondingDomElement(this.selection.editableElement);this.isFocused&&D&&(this.selection.isFake?this._updateFakeSelection(D):(this._removeFakeSelection(),this._updateDomSelection(D)))}_updateFakeSelection(D){const q=D.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=q.createElement('div'),this._fakeSelectionContainer.style.position='fixed',this._fakeSelectionContainer.style.top=0,this._fakeSelectionContainer.style.left='-9999px',this._fakeSelectionContainer.appendChild(q.createTextNode('\xA0'))),this._fakeSelectionContainer.parentElement||D.appendChild(this._fakeSelectionContainer);const z=this.selection.fakeSelectionLabel||'\xA0';this._fakeSelectionContainer.firstChild.data=z;const U=q.getSelection();U.removeAllRanges();const $=q.createRange();$.selectNodeContents(this._fakeSelectionContainer),U.addRange($),this.domConverter.bindFakeSelection(this._fakeSelectionContainer,this.selection)}_updateDomSelection(D){const q=D.ownerDocument.defaultView.getSelection(),z=q&&this.domConverter.domSelectionToView(q);if(!(z&&this.selection.isEqual(z))){if(z&&h(z,this.selection)){const K={oldSelection:z,currentSelection:this.selection};return void F.a.warn('renderer-skipped-selection-rendering: The selection was not rendered due to its similarity to the current one.',K)}const U=this.domConverter.viewPositionToDom(this.selection.anchor),$=this.domConverter.viewPositionToDom(this.selection.focus);q.collapse(U.parent,U.offset),q.extend($.parent,$.offset)}}_removeDomSelection(){for(let D of this.domDocuments){const q=D.getSelection();if(q.rangeCount){const z=D.activeElement,U=this.domConverter.getCorrespondingViewElement(z);z&&U&&D.getSelection().removeAllRanges()}}}_removeFakeSelection(){const D=this._fakeSelectionContainer;D&&D.remove()}_updateFocus(){if(this.isFocused){const D=this.selection.editableElement;D&&this.domConverter.focus(D)}}}u.a=M,f.i(S.a)(M,I.a)},function(r,u,f){'use strict';var h=f(0);class w{constructor(C,T,P){if(this.textNode=C,0>T||T>C.data.length)throw new h.a('view-textproxy-wrong-offsetintext: Given offsetInText value is incorrect.');if(0>P||T+P>C.data.length)throw new h.a('view-textproxy-wrong-length: Given length value is incorrect.');this.data=C.data.substring(T,T+P),this.offsetInText=T}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(C){return'textProxy'==C}getAncestors(C={includeNode:!1,parentFirst:!1}){const T=[];for(let P=C.includeNode?this.textNode:this.parent;null!==P;)T[C.parentFirst?'push':'unshift'](P),P=P.parent;return T}}u.a=w},function(r,u,f){'use strict';var h=f(2),w=f(378),C=f(379);class T extends h.a{static get pluginName(){return'enter/enter'}init(){const P=this.editor,E=P.editing.view;E.addObserver(C.a),P.commands.set('enter',new w.a(P)),this.listenTo(E,'enter',(S,O)=>{P.execute('enter'),O.preventDefault()},{priority:'low'})}}u.a=T},function(r,u,f){'use strict';function h(E,S,O,R){const V=O.isCollapsed,F=O.getFirstRange(),I=F.start.parent,N=F.end.parent;if(!(R.limits.has(I.name)||R.limits.has(N.name))){if(I.root==I)return void(V||E.deleteContent(O,S));if(V)w(S,O,F.start);else{const M=F.start.isAtStart&&F.end.isAtEnd;E.deleteContent(O,S,{merge:M}),M||(I==N?w(S,O,O.focus):O.collapse(N))}}}function w(E,S,O){if(O.isAtEnd){const R=O.parent,V=new R.constructor(R.name,R.getAttributes());E.insert(T.a.createAfter(O.parent),V)}else E.split(O);S.collapse(O.parent.nextSibling)}var C=f(11),T=f(1);class P extends C.a{_doExecute(){const E=this.editor.document,S=E.batch();E.enqueueChanges(()=>{h(this.editor.data,S,E.selection,E.schema),this.fire('afterExecute',{batch:S})})}}u.a=P},function(r,u,f){'use strict';var h=f(53),w=f(118),C=f(22);class T extends h.a{constructor(P){super(P),P.on('keydown',(E,S)=>{this.isEnabled&&S.keyCode==C.d.enter&&P.fire('enter',new w.a(P,S.domEvent))})}observe(){}}u.a=T},function(r,u,f){'use strict';var h=f(3),w=f(11),C=f(60),T=f(1),P=f(66);class E extends w.a{constructor(S,O){super(S),Object.assign(this,O),this.set('value',!1),this.listenTo(S.document,'changesDone',()=>{this.refreshValue(),this.refreshState()})}_doExecute(S={}){const O=this.editor,R=O.document,V=this.value;R.enqueueChanges(()=>{const F=S.batch||R.batch();for(let I of R.selection.getSelectedBlocks())if(!V)I.is(this.modelElement)||F.rename(I,this.modelElement);else if(I.is(this.modelElement)){const N=new C.a;N.addRange(h.a.createIn(I)),O.execute('paragraph',{selection:N,batch:F})}})}refreshValue(){const S=f.i(P.a)(this.editor.document.selection.getSelectedBlocks());this.value=!!S&&S.is(this.modelElement)}_checkEnabled(){const S=f.i(P.a)(this.editor.document.selection.getSelectedBlocks());return!!S&&this.editor.document.schema.check({name:this.modelElement,inside:T.a.createBefore(S)})}}u.a=E},function(r,u,f){'use strict';function C(F,I,N,M){const D=F.name.split(':'),q=D[0]+':'+D[1];if(N.consume(I.item,q)){const z=M.mapper.toViewElement(I.item),U=z.getChild(0);'removeAttribute'==D[0]?U.removeAttribute(I.attributeKey):U.setAttribute(I.attributeKey,I.attributeNewValue)}}function P(F,I,N){I=I.slice();for(const M={name:F.name,attributes:F.attributes,inside:I};I.length&&!N.check(M);){const D=I.pop(),q='string'==typeof D?D:D.name;if(N.limits.has(q))return null}return I.length?I:null}var S=f(1),O=f(35),R=f(18);u.d=function(){return(F,I,N,M)=>{if(N.test(I.input,{name:!0,class:'image'})&&M.schema.check({name:'image',inside:I.context,attributes:'src'})){const D=Array.from(I.input.getChildren()).find((U)=>U.is('img'));if(D&&D.hasAttribute('src')&&N.test(D,{name:!0})){const q=M.convertItem(D,N,I);I.context.push(q);const z=M.convertChildren(I.input,N,I);I.context.pop(),R.a.insert(S.a.createAt(q),z),I.output=q}}}},u.a=function(F,I){for(let N of F)N.on(`addAttribute:${I}:image`,C),N.on(`changeAttribute:${I}:image`,C),N.on(`removeAttribute:${I}:image`,C)},u.b=function(F,I,N,M){const D=I.input;if(N.test(D,{name:!0,attribute:['src']})){const q=P({name:'image',attributes:['src']},I.context,M.schema);if(q){const z=Object.assign({},I);z.context=q,I.output=M.convertItem(D,N,z),V.add(I.output)}}},u.c=function(F,I){if(I.output&&I.output.is('element')){const N=[];for(let M=I.output.childCount-1;0<=M;M--){const D=I.output.getChild(M);if(V.has(D)){const q=I.output.childCount-M-1;let z=null;0{f.i(D.c)(Y)||K.insert(F.a.createAt(Y,'end'),new S.a('caption'))})}}}function w(z,U=!0){return($,K,W,H)=>{const Y=K.item;if((Y.childCount||U)&&f.i(M.b)(Y.parent)){if(!W.consume(K.item,'insert'))return;const G=H.mapper.toViewElement(K.range.start.parent),Z=z instanceof R.a?z.clone(!0):z();Y.childCount||Z.addClass('ck-hidden'),C(Z,K.item,G,H.mapper)}}}function C(z,U,$,K){const W=I.a.createAt($,'end');V.a.insert(W,z),K.bindElements(U,z)}function T(z){const U=z.getAncestors({includeNode:!0}),$=U.find((K)=>'caption'==K.name);return $&&$.parent&&'image'==$.parent.name?$:null}var P=f(2),E=f(37),S=f(5),O=f(44),R=f(25),V=f(79),F=f(1),I=f(26),N=f(34),M=f(46),D=f(383);class q extends P.a{init(){const z=this.editor,U=z.document,$=z.editing.view,K=U.schema,W=z.data,H=z.editing,Y=z.t;this._createCaption=f.i(D.a)($,Y('Enter image caption')),K.registerItem('caption','$block'),K.allow({name:'$inline',inside:'caption'}),K.allow({name:'caption',inside:'image'}),K.limits.add('caption'),U.on('change',h),f.i(N.a)().for(W.viewToModel).from(D.b).toElement('caption'),W.modelToView.on('insert:caption',w(new O.a('figcaption'),!1)),H.modelToView.on('insert:caption',w(this._createCaption)),H.modelToView.on('insert',(G,Z)=>this._fixCaptionVisibility(Z.item),{priority:'high'}),H.modelToView.on('remove',(G,Z)=>this._fixCaptionVisibility(Z.sourcePosition.parent),{priority:'high'}),this.listenTo($,'render',()=>this._updateCaptionVisibility(),{priority:'high'})}_updateCaptionVisibility(){const z=this.editor.editing.mapper,U=this.editor.editing.view.selection,$=U.getSelectedElement();let K;if(this._lastSelectedCaption&&!this._lastSelectedCaption.childCount&&this._lastSelectedCaption.addClass('ck-hidden'),$&&f.i(M.a)($)){const W=z.toModelElement($),H=f.i(D.c)(W);K=z.toViewElement(H)}f.i(D.d)(U.editableElement)&&(K=U.editableElement),K&&(K.removeClass('ck-hidden'),this._lastSelectedCaption=K)}_fixCaptionVisibility(z){const U=T(z),$=this.editor.editing.mapper;if(U){const K=$.toViewElement(U);K&&(U.childCount?K.removeClass('ck-hidden'):K.addClass('ck-hidden'))}}}u.a=q},function(r,u,f){'use strict';var P=f(5),E=f(77),S=f(374),O=f(153);u.a=function(V,F){return()=>{const I=new E.a('figcaption');return I.document=V,I.setCustomProperty(R,!0),f.i(S.a)(I,F),f.i(O.c)(I)}},u.d=function(V){return!!V.getCustomProperty(R)},u.c=function(V){for(let F of V.getChildren())if(F instanceof P.a&&'caption'==F.name)return F;return null},u.b=function(V){const F=V.parent;return'figcaption'==V.name&&F&&'figure'==F.name&&F.hasClass('image')?{name:!0}:null};const R=Symbol('imageCaption')},function(r,u,f){'use strict';function C(O,R,V,F){const I=R.input,N=R.output;if(V.test(I,{class:O.className})&&f.i(S.b)(N)){const M=[...N.getAttributeKeys(),'imageStyle'];F.schema.check({name:'image',inside:R.context,attributes:M})&&(V.consume(I,{class:O.className}),N.setAttribute('imageStyle',O.value))}}function T(O,R){for(let V of R)if(V.value===O)return V}function P(O,R,V){return R&&('changeAttribute'==O||'removeAttribute'==O)&&(V.removeClass(R.className),!0)}function E(O,R,V){return R&&('addAttribute'==O||'changeAttribute'==O)&&(V.addClass(R.className),!0)}var S=f(46);u.a=function(O){return(R,V,F,I)=>{const N=R.name.split(':')[0],M=N+':imageStyle';if(F.test(V.item,M)){const D=T(V.attributeNewValue,O),q=T(V.attributeOldValue,O),z=I.mapper.toViewElement(V.item);(P(N,q,z)||E(N,D,z))&&F.consume(V.item,M)}}},u.b=function(O){const R=O.filter((V)=>null!==V.value);return(V,F,I,N)=>{for(let M of R)C(M,F,I,N)}}},function(r,u,f){'use strict';var h=f(11),w=f(46);class C extends h.a{constructor(T,P){super(T),this.set('value',!1),this.style=P,this.listenTo(T.document,'changesDone',()=>{this._updateValue(),this.refreshState()})}_updateValue(){const T=this.editor.document,P=T.selection.getSelectedElement();return P?void(null===this.style.value?this.value=!P.hasAttribute('imageStyle'):this.value=P.getAttribute('imageStyle')==this.style.value):void(this.value=!1)}_checkEnabled(){const T=this.editor.document.selection.getSelectedElement();return f.i(w.b)(T)}_doExecute(T={}){if(this.value)return;const P=this.editor,E=P.document,S=E.selection,O=S.getSelectedElement();E.enqueueChanges(()=>{const R=T.batch||E.batch();R.setAttribute(O,'imageStyle',this.style.value)})}}u.a=C},function(r,u,f){'use strict';var h=f(2),w=f(385),C=f(176),T=f(384),P=f(308),E=f.n(P),S=f(309),O=f.n(S);class R extends h.a{static get requires(){return[C.a]}init(){const V=this.editor,F=V.t,I=V.document,N=I.schema,M=V.data,D=V.editing;V.config.define('image.styles',[{name:'imageStyleFull',title:F('Full size image'),icon:E.a,value:null},{name:'imageStyleSide',title:F('Side image'),icon:O.a,value:'side',className:'image-style-side'}]);const q=V.config.get('image.styles');N.allow({name:'image',attributes:'imageStyle',inside:'$root'});const z=f.i(T.a)(q);D.modelToView.on('addAttribute:imageStyle:image',z),M.modelToView.on('addAttribute:imageStyle:image',z),D.modelToView.on('changeAttribute:imageStyle:image',z),M.modelToView.on('changeAttribute:imageStyle:image',z),D.modelToView.on('removeAttribute:imageStyle:image',z),M.modelToView.on('removeAttribute:imageStyle:image',z),M.viewToModel.on('element:figure',f.i(T.b)(q),{priority:'low'});for(let U of q)V.commands.set(U.name,new w.a(V,U))}}u.a=R},function(r,u,f){'use strict';var h=f(2),w=f(21),C=f(389),T=f(406),P=f(182),E=f(154),S=f(390),O=f(177),R=f(307),V=f.n(R),F=f(323),I=f.n(F);class N extends h.a{static get requires(){return[C.a]}static get pluginName(){return'image/imagetextalternative'}init(){return this._createButton(),this._createBalloonPanel().then((M)=>{this.balloonPanel=M,this.form=M.content.get(0)})}_createButton(){const M=this.editor,D=M.commands.get('imageTextAlternative'),q=M.t;M.ui.componentFactory.add('imageTextAlternative',(z)=>{const U=new w.a(z);return U.set({label:q('Change image text alternative'),icon:V.a,tooltip:!0}),U.bind('isEnabled').to(D,'isEnabled'),this.listenTo(U,'execute',()=>this._showBalloonPanel()),U})}_createBalloonPanel(){const M=this.editor,D=new O.a(M),q=new S.a(M.locale);this.listenTo(q,'submit',()=>{M.execute('imageTextAlternative',{newValue:q.lebeledInput.inputView.element.value}),this._hideBalloonPanel()});const z=M.plugins.get(E.a);return z&&this.listenTo(D,'change:isVisible',()=>{D.isVisible?(z.hide(),z.isEnabled=!1):(z.show(),z.isEnabled=!0)}),this.listenTo(q,'cancel',()=>this._hideBalloonPanel()),f.i(T.a)({emitter:D,activator:()=>D.isVisible,callback:()=>this._hideBalloonPanel()}),f.i(P.a)({emitter:D,activator:()=>D.isVisible,contextElement:D.element,callback:()=>this._hideBalloonPanel()}),Promise.all([D.content.add(q),M.ui.view.body.add(D)]).then(()=>D)}_showBalloonPanel(){const M=this.editor,D=M.commands.get('imageTextAlternative');this.form.lebeledInput.value=D.value||'',this.balloonPanel.attach(),this.form.lebeledInput.select()}_hideBalloonPanel(){const M=this.editor;this.balloonPanel.detach(),M.editing.view.focus()}}u.a=N},function(r,u,f){'use strict';var h=f(11),w=f(46);class C extends h.a{constructor(T){super(T),this.set('value',!1),this.listenTo(T.document,'changesDone',()=>{this._updateValue(),this.refreshState()})}_updateValue(){const T=this.editor.document,P=T.selection.getSelectedElement();this.value=f.i(w.b)(P)&&P.hasAttribute('alt')&&P.getAttribute('alt')}_checkEnabled(){const T=this.editor.document.selection.getSelectedElement();return f.i(w.b)(T)}_doExecute(T){const P=this.editor,E=P.document,S=E.selection.getSelectedElement();E.enqueueChanges(()=>{const O=T.batch||E.batch();O.setAttribute(S,'alt',T.newValue)})}}u.a=C},function(r,u,f){'use strict';var h=f(388),w=f(2);class C extends w.a{init(){this.editor.commands.set('imageTextAlternative',new h.a(this.editor))}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(21),C=f(6),T=f(186),P=f(185),E=f(184);class S extends h.a{constructor(O){super(O);const R=this.locale.t;this.lebeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(R('Save')),this.saveButtonView.type='submit',this.cancelButtonView=this._createButton(R('Cancel'),'cancel'),C.a.extend(this.saveButtonView.template,{attributes:{class:['ck-button-action']}}),this.template=new C.a({tag:'form',attributes:{class:['cke-text-alternative-form']},children:[this.lebeledInput,{tag:'div',attributes:{class:['cke-text-alternative-form__actions']},children:[this.saveButtonView,this.cancelButtonView]}]}),f.i(E.a)({view:this})}_createButton(O,R){const V=new w.a(this.locale);return V.label=O,V.withText=!0,R&&V.delegate('execute').to(this,R),V}_createLabeledInputView(){const O=this.locale.t,R=new T.a(this.locale,P.a);return R.label=O('Text alternative'),R}}u.a=S},function(r,u,f){'use strict';var h=f(11),w=f(24),C=f(3),T=f(101),P=f(159),E=f(178);class S extends h.a{constructor(O){super(O),this.set('value',void 0),this.listenTo(this.editor.document.selection,'change:attribute',()=>{this.value=this.editor.document.selection.getAttribute('linkHref')})}_checkEnabled(){const O=this.editor.document;return f.i(P.a)('linkHref',O.selection,O.schema)}_doExecute(O){const R=this.editor.document,V=R.selection;R.enqueueChanges(()=>{const F=R.batch();if(V.isCollapsed){const I=V.getFirstPosition(),N=I.parent;if(V.hasAttribute('linkHref')){const M=f.i(E.a)(V.getFirstPosition(),V.getAttribute('linkHref'));F.setAttribute(M,'linkHref',O),V.setRanges([M])}else if(R.schema.check({name:'$text',attributes:'linkHref',inside:N.name})){const M=new w.a(O,{linkHref:O});F.insert(I,M),V.setRanges([C.a.createOn(M)])}}else{const I=f.i(T.a)('linkHref',V.getRanges(),R.schema);for(let N of I)F.setAttribute(N,'linkHref',O)}})}}u.a=S},function(r,u,f){'use strict';var h=f(2),w=f(41),C=f(34),T=f(179),P=f(391),E=f(394);class S extends h.a{init(){const O=this.editor,R=O.data,V=O.editing;O.document.schema.allow({name:'$inline',attributes:'linkHref',inside:'$block'}),f.i(w.a)().for(R.modelToView,V.modelToView).fromAttribute('linkHref').toElement((F)=>new T.a('a',{href:F})),f.i(C.a)().for(R.viewToModel).fromElement('a').toAttribute((F)=>({key:'linkHref',value:F.getAttribute('href')})),O.commands.set('link',new P.a(O)),O.commands.set('unlink',new E.a(O))}}u.a=S},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(120),T=f(21),P=f(186),E=f(185),S=f(184),O=f(67),R=f(119),V=f(68);class F extends h.a{constructor(I){super(I);const N=I.t;this.focusTracker=new O.a,this.keystrokes=new V.a,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(N('Save')),this.saveButtonView.type='submit',this.cancelButtonView=this._createButton(N('Cancel'),'cancel'),this.unlinkButtonView=this._createButton(N('Unlink'),'unlink'),this._focusables=new C.a,this._focusCycler=new R.a({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:'shift + tab',focusNext:'tab'}}),w.a.extend(this.saveButtonView.template,{attributes:{class:['ck-button-action']}}),this.template=new w.a({tag:'form',attributes:{class:['ck-link-form'],tabindex:'-1'},children:[this.urlInputView,{tag:'div',attributes:{class:['ck-link-form__actions']},children:[this.saveButtonView,this.cancelButtonView,this.unlinkButtonView]}]}),f.i(S.a)({view:this});const M=[this.urlInputView,this.saveButtonView,this.cancelButtonView,this.unlinkButtonView];M.forEach((D)=>{this._focusables.add(D),this.focusTracker.add(D.element)})}init(){return this.keystrokes.listenTo(this.element),super.init()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const I=this.locale.t,N=new P.a(this.locale,E.a);return N.label=I('Link URL'),N}_createButton(I,N){const M=new T.a(this.locale);return M.label=I,M.withText=!0,N&&M.delegate('execute').to(this,N),M}}u.a=F},function(r,u,f){'use strict';var h=f(11),w=f(178);class C extends h.a{constructor(T){super(T),this.listenTo(T.document.selection,'change:attribute',()=>this.refreshState())}_doExecute(){const T=this.editor.document,P=T.selection;T.enqueueChanges(()=>{const E=P.isCollapsed?[f.i(w.a)(P.getFirstPosition(),P.getAttribute('linkHref'))]:P.getRanges(),S=T.batch();for(let O of E)S.removeAttribute(O,'linkHref')})}_checkEnabled(){return this.editor.document.selection.hasAttribute('linkHref')}}u.a=C},function(r,u,f){'use strict';function N(ne,oe,ie){let re=ne.nodeAfter;re&&'listItem'==re.name&&oe.enqueueChanges(()=>{const se=re.previousSibling,le=se&&se.is('listItem')?se.getAttribute('indent')+1:0;let de=re.getAttribute('indent')-le;const ce=[];for(;re&&'listItem'==re.name&&re.getAttribute('indent')>le;){de>re.getAttribute('indent')&&(de=re.getAttribute('indent'));const ue=re.getAttribute('indent')-de;ce.push({item:re,indent:ue}),re=re.nextSibling}if(0{const le=W(se,!oe);if(le&&le!=se)for(const de=le.getAttribute('indent'),ce=le.getAttribute('type');se&&se.is('listItem')&&se.getAttribute('indent')>=de;)se.getAttribute('type')!=ce&&se.getAttribute('indent')==de&&re.setAttribute(se,'type',ce),se=se[oe?'previousSibling':'nextSibling']})}function q(ne,oe){const ie='numbered'==ne.getAttribute('type')?'ol':'ul',re=new H.a,se=new Q.a(ie,null);return se.appendChildren(re),oe.bindElements(ne,re),re}function z(ne,oe){const ie=oe.getNext?'nextSibling':'previousSibling',re=oe.getNext?'nodeAfter':'nodeBefore',se=!!oe.checkAllSiblings,le=!!oe.sameIndent,de=!!oe.biggerIndent,ce=!!oe.smallerIndent,ue=!!oe.isMapped,me=ne instanceof G.a?ne.getAttribute('indent'):oe.indent;for(let pe=ne instanceof G.a?ne[ie]:ne[re],ge;pe&&'listItem'==pe.name;){if(ge=pe.getAttribute('indent'),le&&me==ge||de&&mege){if(!ue||oe.mapper.toViewElement(pe))return pe;pe=pe[ie];continue}if(!se)return null;pe=pe[ie]}return null}function U(ne,oe){return ne&&oe&&('ul'==ne.name||'ol'==ne.name)&&ne.name==oe.name?ae.a.mergeContainers(X.a.createAfter(ne)):null}function $(ne,oe,ie,re){const se=oe.parent;let le,de=z(ne,{sameIndent:!0,smallerIndent:!0,checkAllSiblings:!0});if(de&&de.getAttribute('indent')==ne.getAttribute('indent')){let ue=ie.toViewElement(de);le=ae.a.breakContainer(X.a.createAfter(ue))}else de=ne.previousSibling,le=de&&'listItem'==de.name?de.getAttribute('indent')=ie;)ne=ne[re],ne.getAttribute('indent')==ie&&(se=ne);return se}var H=f(398),Y=f(35),G=f(5),Z=f(1),J=f(18),Q=f(44),X=f(26),ee=f(45),te=f(54),ae=f(79);u.e=function(ne,oe,ie,re){if(ie.test(oe.item,'insert')&&ie.test(oe.item,'addAttribute:type')&&ie.test(oe.item,'addAttribute:indent')){ie.consume(oe.item,'insert'),ie.consume(oe.item,'addAttribute:type'),ie.consume(oe.item,'addAttribute:indent');const se=oe.item,le=q(se,re.mapper),de=re.mapper.toViewPosition(Z.a.createBefore(se));$(se,le,re.mapper,de)}},u.f=function(ne,oe,ie,re){if(!ie.consume(oe.item,'changeAttribute:type'))return;const se=re.mapper.toViewElement(oe.item);ae.a.breakContainer(X.a.createBefore(se)),ae.a.breakContainer(X.a.createAfter(se));let le=se.parent;const de='numbered'==oe.attributeNewValue?'ol':'ul';le=ae.a.rename(le,de),U(le,le.nextSibling),U(le.previousSibling,le)},u.g=function(ne,oe,ie,re){if(ie.consume(oe.item,'remove')){const se=re.mapper.toViewPosition(oe.sourcePosition),le=se.nodeAfter.is('li')?se.nodeAfter:se.nodeAfter.getChild(0);ae.a.breakContainer(X.a.createBefore(le)),ae.a.breakContainer(X.a.createAfter(le));const de=le.parent,ce=de.previousSibling,ue=ee.a.createOn(de);ae.a.remove(ue),ce&&ce.nextSibling&&U(ce,ce.nextSibling),K(oe.item.getAttribute('indent')+1,oe.sourcePosition,ue.start,le,re.mapper),'$graveyard'==oe.item.root.rootName&&re.mapper.unbindModelElement(oe.item)}},u.i=function(ne,oe,ie,re){if(!ie.consume(oe.item,'changeAttribute:indent'))return;const se=re.mapper.toViewElement(oe.item);ae.a.breakContainer(X.a.createBefore(se)),ae.a.breakContainer(X.a.createAfter(se));const le=se.parent,de=le.previousSibling,ce=ee.a.createOn(le);ae.a.remove(ce);let ue;de&&de.nextSibling&&(ue=U(de,de.nextSibling)),ue||(ue=ce.start),K(oe.attributeOldValue+1,oe.range.start,ce.start,se,re.mapper),$(oe.item,se,re.mapper,ue)},u.d=function(ne,oe,ie,re){if('listItem'!=oe.item.name){let se=re.mapper.toViewPosition(oe.range.start);const le=[];for(;('ul'==se.parent.name||'ol'==se.parent.name)&&(se=ae.a.breakContainer(se),'li'==se.parent.name);){const de=se,ce=X.a.createAt(se.parent,'end');if(!de.isEqual(ce)){const ue=ae.a.remove(new ee.a(de,ce));le.push(ue)}se=X.a.createAfter(se.parent)}if(0de.is('ul')||de.is('ol')),le=new te.a({startPosition:X.a.createAt(re,0)});for(let de of le)if('elementStart'==de.type&&de.item.is('li')){oe.viewPosition=de.previousPosition;break}else if('elementEnd'==de.type&&de.item==se){oe.viewPosition=de.nextPosition;break}}},u.c=function(ne,oe){const ie=oe.viewPosition,re=ie.parent,se=oe.mapper;if('ul'==re.name||'ol'==re.name){if(!ie.isAtEnd){const le=se.toModelElement(ie.nodeAfter);oe.modelPosition=Z.a.createBefore(le)}else{const le=se.toModelElement(ie.nodeBefore),de=se.getModelLength(ie.nodeBefore);oe.modelPosition=Z.a.createBefore(le).getShiftedBy(de)}ne.stop()}else if('li'==re.name&&ie.nodeBefore&&('ul'==ie.nodeBefore.name||'ol'==ie.nodeBefore.name)){const le=se.toModelElement(re);let de=1,ce=ie.nodeBefore;for(;ce&&(ce.is('ul')||ce.is('ol'));)de+=se.getModelLength(ce),ce=ce.previousSibling;oe.modelPosition=Z.a.createBefore(le).getShiftedBy(de),ne.stop()}},u.a=function(ne){return(oe,ie,re,se)=>{if('remove'==ie)N(re.sourcePosition,ne,se),M(re.sourcePosition,!1,ne,se);else if('move'==ie)N(re.sourcePosition,ne,se),M(re.sourcePosition,!1,ne,se),N(re.range.start,ne,se),M(re.range.start,!1,ne,se),N(re.range.end,ne,se),M(re.range.end,!0,ne,se);else if('rename'==ie&&'listItem'==re.oldName&&'listItem'!=re.newName){const le=re.element;ne.enqueueChanges(()=>{se.removeAttribute(le,'indent').removeAttribute(le,'type')});const de=Z.a.createAfter(re.element);N(de,ne,se)}else'insert'==ie&&(N(re.range.start,ne,se),M(re.range.start,!1,ne,se),N(re.range.end,ne,se),M(re.range.end,!0,ne,se))}},u.m=function(ne,oe){let ie=oe.content.getChild(0);if(ie.is('listItem')){const re=oe.selection.getFirstPosition();let se=null;if(re.parent.is('listItem')?se=re.parent:re.nodeBefore&&re.nodeBefore.is('listItem')&&(se=re.nodeBefore),se){const le=se.getAttribute('indent');if(0=E.getAttribute('indent');){if(O.getAttribute('indent')==E.getAttribute('indent'))return O;O=O[S?'nextSibling':'previousSibling']}return null}var C=f(11),T=f(66);class P extends C.a{constructor(E,S){super(E),this._indentBy='forward'==S?1:-1,this.listenTo(E.document,'changesDone',()=>{this.refreshState()})}_doExecute(){const E=this.editor.document,S=E.batch();let O=Array.from(E.selection.getSelectedBlocks());E.enqueueChanges(()=>{const R=O[O.length-1];for(let V=R.nextSibling;V&&'listItem'==V.name&&V.getAttribute('indent')>R.getAttribute('indent');)O.push(V),V=V.nextSibling;0>this._indentBy&&(O=O.reverse());for(let F of O){const I=F.getAttribute('indent')+this._indentBy;0>I?S.rename(F,'paragraph'):S.setAttribute(F,'indent',I)}0>this._indentBy&&(O=O.reverse());for(let F of O)h(F,S)})}_checkEnabled(){const E=f.i(T.a)(this.editor.document.selection.getSelectedBlocks());if(!E||!E.is('listItem'))return!1;if(0=S;){if(R.getAttribute('indent')==S)return R.getAttribute('type')==O;R=R.previousSibling}return!1}return!0}}u.a=P},function(r,u,f){'use strict';function h(E,S,O){const R=S?E[0]:E[E.length-1];if(R.is('listItem'))for(let V=R[S?'previousSibling':'nextSibling'],F=R.getAttribute('indent');V&&V.is('listItem')&&V.getAttribute('indent')>=O;)F>V.getAttribute('indent')&&(F=V.getAttribute('indent')),V.getAttribute('indent')==F&&E[S?'unshift':'push'](V),V=V[S?'previousSibling':'nextSibling']}var w=f(11),C=f(1),T=f(66);class P extends w.a{constructor(E,S){super(E),this.type='bulleted'==S?'bulleted':'numbered',this.set('value',!1),this.listenTo(E.document,'changesDone',()=>{this.refreshValue(),this.refreshState()})}refreshValue(){const E=f.i(T.a)(this.editor.document.selection.getSelectedBlocks());this.value=E&&E.is('listItem')&&E.getAttribute('type')==this.type}_doExecute(E={}){const S=this.editor.document,O=Array.from(S.selection.getSelectedBlocks()),R=!0===this.value;S.enqueueChanges(()=>{const V=E.batch||S.batch();if(R){let F=O[O.length-1].nextSibling,I=_NumberPOSITIVE_INFINITY,N=[];for(;F&&'listItem'==F.name&&0!==F.getAttribute('indent');){const M=F.getAttribute('indent');M{this.refreshValue(),this.refreshState()})}_doExecute(P={}){const E=this.editor.document;E.enqueueChanges(()=>{const S=P.batch||E.batch(),O=(P.selection||E.selection).getSelectedBlocks();for(let R of O)R.is('paragraph')||S.rename(R,'paragraph')})}refreshValue(){const P=f.i(C.a)(this.editor.document.selection.getSelectedBlocks());this.value=!!P&&P.is('paragraph')}_checkEnabled(){const P=f.i(C.a)(this.editor.document.selection.getSelectedBlocks());return!!P&&this.editor.document.schema.check({name:'paragraph',inside:w.a.createBefore(P)})}}u.a=T},function(r,u,f){'use strict';var h=f(2),w=f(401),C=f(402);class T extends h.a{static get pluginName(){return'typing/delete'}init(){const P=this.editor,E=P.editing.view;E.addObserver(C.a),P.commands.set('forwardDelete',new w.a(P,'forward')),P.commands.set('delete',new w.a(P,'backward')),this.listenTo(E,'delete',(S,O)=>{P.execute('forward'==O.direction?'forwardDelete':'delete',{unit:O.unit}),O.preventDefault()})}}u.a=T},function(r,u,f){'use strict';var h=f(11),w=f(60),C=f(181),T=f(189);class P extends h.a{constructor(E,S){super(E),this.direction=S,this._buffer=new C.a(E.document,E.config.get('typing.undoStep'))}_doExecute(E={}){const S=this.editor.document,O=this.editor.data;S.enqueueChanges(()=>{this._buffer.lock();const R=w.a.createFromSelection(S.selection);if(R.isCollapsed&&O.modifySelection(R,{direction:this.direction,unit:E.unit}),R.isCollapsed)return;let V=0;R.getFirstRange().getMinimalFlatRanges().forEach((F)=>{V+=f.i(T.a)(F.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))}),O.deleteContent(R,this._buffer.batch,{merge:!0}),this._buffer.input(V),S.selection.setRanges(R.getRanges(),R.isBackward),this._buffer.unlock()})}}u.a=P},function(r,u,f){'use strict';var h=f(53),w=f(118),C=f(22);class T extends h.a{constructor(P){super(P),P.on('keydown',(E,S)=>{const O={};if(S.keyCode==C.d.delete)O.direction='forward',O.unit='character';else if(S.keyCode==C.d.backspace)O.direction='backward',O.unit='codePoint';else return;O.unit=S.altKey?'word':O.unit,P.fire('delete',new w.a(P,S.domEvent,O))})}observe(){}}u.a=T},function(r,u,f){'use strict';function h(M){return!!M.ctrlKey||N.includes(M.keyCode)}function w(M,D){return M instanceof E.a&&D instanceof E.a?M.data===D.data:M===D}var C=f(2),T=f(3),P=f(26),E=f(31),S=f(190),O=f(430),R=f(22),V=f(404);class F extends C.a{static get pluginName(){return'typing/input'}init(){const M=this.editor,D=M.editing.view,q=new V.a(M,M.config.get('typing.undoStep')||20);M.commands.set('input',q),this.listenTo(D,'keydown',(z,U)=>{this._handleKeydown(U,q.buffer)},{priority:'lowest'}),this.listenTo(D,'mutations',(z,U,$)=>{this._handleMutations(U,$)})}_handleKeydown(M,D){const q=this.editor.document;h(M)||q.selection.isCollapsed||(D.lock(),q.enqueueChanges(()=>{this.editor.data.deleteContent(q.selection,D.batch)}),D.unlock())}_handleMutations(M,D){new I(this.editor).handle(M,D)}}u.a=F;class I{constructor(M){this.editor=M,this.editing=this.editor.editing}handle(M,D){for(let q of M)this._handleTextMutation(q,D),this._handleTextNodeInsertion(q)}_handleTextMutation(M,D){if('text'!=M.type)return;const q=M.newText.replace(/\u00A0/g,' '),z=M.oldText.replace(/\u00A0/g,' '),U=f.i(S.a)(z,q);let $=null,K=null;for(let X=0;X=M;M++)N.push(M)},function(r,u,f){'use strict';var h=f(11),w=f(181);class C extends h.a{constructor(T,P){super(T),this._buffer=new w.a(T.document,P)}destroy(){super.destroy(),this._buffer.destroy(),this._buffer=null}get buffer(){return this._buffer}_doExecute(T={}){const P=this.editor.document,E=T.text||'',S=E.length,O=T.range||P.selection.getFirstRange(),R=T.resultRange;P.enqueueChanges(()=>{const V=O.isCollapsed;this._buffer.lock(),V||this._buffer.batch.remove(O),this._buffer.batch.weakInsert(O.start,E),R?this.editor.data.model.selection.setRanges([R]):V&&this.editor.data.model.selection.collapse(O.start.getShiftedBy(S)),this._buffer.unlock(),this._buffer.input(S)})}}u.a=C},function(r,u,f){'use strict';var h=f(2),w=f(403),C=f(400);class T extends h.a{static get requires(){return[w.a,C.a]}static get pluginName(){return'typing/typing'}}u.a=T},function(r,u,f){'use strict';var w=f(22);u.a=function({emitter:C,activator:T,callback:P}){C.listenTo(document,'keydown',(E,{keyCode:S})=>{S==w.d.esc&&T()&&P()})}},function(r,u,f){'use strict';var h=f(0);u.a=class{constructor(C){this.editor=C,this._components=new Map}add(C,T){if(this._components.get(C))throw new h.a('componentfactory-item-exists: The item already exists in the component factory.',{name:C});this._components.set(C,T)}create(C){const T=this._components.get(C);if(!T)throw new h.a('componentfactory-item-missing: There is no such UI component in the factory.',{name:C});return T(this.editor.locale)}}},function(r,u,f){'use strict';var w=f(21),C=f(410),T=f(409);u.a=function(P,E){const S=new w.a(E);S.bind('label','isOn','isEnabled','withText','keystroke','tooltip').to(P);const O=new T.a(E);return new C.a(E,S,O)}},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T){super(T);const P=this.bindTemplate;this.set('isVisible',!1),this.children=this.createCollection(),this.template=new w.a({tag:'div',attributes:{class:['ck-reset','ck-dropdown__panel',P.if('isVisible','ck-dropdown__panel-visible')]},children:this.children})}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(6),C=f(67),T=f(68);class P extends h.a{constructor(E,S,O){super(E),w.a.extend(S.template,{attributes:{class:['ck-dropdown__button']}}),this.buttonView=S,this.panelView=O,this.set('isOpen',!1),this.focusTracker=new C.a,this.keystrokes=new T.a,this.template=new w.a({tag:'div',attributes:{class:['ck-dropdown']},children:[S,O]}),this.listenTo(S,'execute',()=>this.isOpen=!this.isOpen),O.bind('isVisible').to(this,'isOpen')}init(){this.keystrokes.listenTo(this.element),this.focusTracker.add(this.element);const E=(S,O)=>{this.isOpen&&(this.buttonView.focus(),this.isOpen=!1,O())};return this.keystrokes.set('arrowdown',(S,O)=>{this.isOpen||(this.isOpen=!0,O())}),this.keystrokes.set('arrowright',(S,O)=>{this.isOpen&&O()}),this.keystrokes.set('arrowleft',E),this.keystrokes.set('esc',E),super.init()}focus(){this.buttonView.focus()}}u.a=P},function(r,u,f){'use strict';function w(E){E.listenTo(document,'click',(S,{target:O})=>{E.element==O||E.element.contains(O)||(E.isOpen=!1)})}var C=f(419),T=f(418),P=f(408);u.a=function(E,S){const O=f.i(P.a)(E,S),R=O.listView=new C.a(S);return R.items.bindTo(E.items).using((V)=>{const F=new T.a(S);return F.bind(...Object.keys(V)).to(V),F}),R.items.delegate('execute').to(O),O.panelView.children.add(R),O.on('change:isOpen',(V,F,I)=>{I?w(O):O.stopListening(document)}),O.on('execute',()=>{O.isOpen=!1}),O.keystrokes.set('arrowdown',(V,F)=>{O.isOpen&&(R.focus(),F())}),O.keystrokes.set('arrowup',(V,F)=>{O.isOpen&&(R.focusLast(),F())}),O}},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T,P){super(T);const E=this.bindTemplate;P&&(this.element=this.editableElement=P),this.template=new w.a({tag:'div',attributes:{class:[E.to('isFocused',(S)=>S?'ck-focused':'ck-blurred'),'ck-editor__editable'],contenteditable:E.to('isReadOnly',(S)=>!S)}}),this.set('isReadOnly',!1),this.set('isFocused',!1),this.externalElement=P}init(){return this.externalElement?this.template.apply(this.externalElement):this.editableElement=this.element,super.init()}destroy(){return this.externalElement&&this.template.revert(this.externalElement),super.destroy()}}u.a=C},function(r,u,f){'use strict';var h=f(412),w=f(6);class C extends h.a{constructor(T,P){super(T,P);const E=this.bindTemplate,S=this.t;this.set('name',null);w.a.extend(this.template,{attributes:{role:'textbox','aria-label':E.to('name',(R)=>{return S('Rich Text Editor, %0',[R])}),class:'ck-editor__editable_inline'}})}}u.a=C},function(r,u,f){'use strict';var h=f(415),w=f(72),C=f(6);class T extends h.a{constructor(P){super(P);const E=this.t,S=f.i(w.a)();this.set('width',null),this.set('height',null),this.top=this.createCollection(),this.main=this.createCollection(),this.template=new C.a({tag:'div',attributes:{class:['ck-reset','ck-editor','ck-rounded-corners'],role:'application',dir:'ltr',lang:P.lang,'aria-labelledby':`cke-editor__aria-label_${S}`},children:[{tag:'span',attributes:{id:`cke-editor__aria-label_${S}`,class:'cke-voice-label'},children:[E('Rich Text Editor')]},{tag:'div',attributes:{class:'ck-editor__top ck-reset_all',role:'presentation'},children:this.top},{tag:'div',attributes:{class:'ck-editor__main',role:'presentation'},children:this.main}]})}}u.a=T},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(T){super(T),this.body=this.createCollection()}init(){return Promise.resolve().then(()=>this._renderBodyCollection()).then(()=>super.init())}destroy(){return this._bodyCollectionContainer.remove(),super.destroy()}_renderBodyCollection(){const T=this._bodyCollectionContainer=new w.a({tag:'div',attributes:{class:['ck-body','ck-rounded-corners','ck-reset_all']},children:this.body}).render();document.body.appendChild(T)}}u.a=C},function(r,u,f){'use strict';var h=f(9),w=f(6);class C extends h.a{constructor(){super();const T=this.bindTemplate;this.set('content'),this.set('viewBox','0 0 20 20'),this.template=new w.a({tag:'svg',ns:'http://www.w3.org/2000/svg',attributes:{class:'ck-icon',viewBox:T.to('viewBox')}}),this.on('change:content',(P,E,S)=>{for(const O=new DOMParser().parseFromString(S.trim(),'image/svg+xml').firstChild;0{this.focusTracker.add(O.element)}),this.items.on('remove',(S,O)=>{this.focusTracker.remove(O.element)})}init(){return this.keystrokes.listenTo(this.element),super.init()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}u.a=E},function(r,u,f){'use strict';var h=f(50),w=f(4),C=f(33);class T{constructor(P,E){E&&f.i(h.a)(this,E),P&&this.set(P)}}u.a=T,f.i(w.a)(T,C.a)},function(r,u,f){'use strict';var h=f(2),w=f(187),C=f(0);class T extends h.a{static get pluginName(){return'ui/contextualballoon'}init(){return this.view=new w.a,this._stack=new Map,this.editor.ui.focusTracker.add(this.view.element),this.editor.ui.view.body.add(this.view)}get visibleView(){const P=this._stack.get(this.view.content.get(0));return P?P.view:null}hasView(P){return this._stack.has(P)}add(P){if(this.hasView(P.view))throw new C.a('contextualballoon-add-view-exist: Cannot add configuration of the same view twice.');return this.visibleView&&this.view.content.remove(this.visibleView),this._stack.set(P.view,P),this._show(P)}remove(P){if(!this.hasView(P))throw new C.a('contextualballoon-remove-view-not-exist: Cannot remove configuration of not existing view.');let E=Promise.resolve();if(this.visibleView===P){this.view.content.remove(P),this._stack.delete(P);const S=Array.from(this._stack.values()).pop();S?E=this._show(S):this.view.hide()}else this._stack.delete(P);return E}updatePosition(P){P&&(this._stack.values().next().value.position=P),this.view.attachTo(this._getBalloonPosition())}_show({view:P,balloonClassName:E=''}){return this.view.className=E,this.view.content.add(P).then(()=>{this.view.pin(this._getBalloonPosition())})}_getBalloonPosition(){return this._stack.values().next().value.position}destroy(){this.editor.ui.view.body.remove(this.view),this.view.destroy(),this._stack.clear(),super.destroy()}}u.a=T},function(r,u){'use strict';u.a=function({origin:w,originKeystrokeHandler:C,originFocusTracker:T,toolbar:P}){T.add(P.element),C.set('Alt+F10',(E,S)=>{T.isFocused&&!P.focusTracker.isFocused&&(P.focus(),S())}),P.keystrokes.set('Esc',(E,S)=>{P.focusTracker.isFocused&&(w.focus(),S())})}},function(r,u,f){'use strict';var h=f(47),w=f(6),C=f(188),T=f(193);const P=f.i(T.a)('px');class E extends C.a{constructor(S){super(S);const O=this.bindTemplate;this.set('isActive',!1),this.set('isSticky',!1),this.set('limiterElement',null),this.set('limiterOffset',50),this.set('_marginLeft',null),this.set('_isStickyToTheLimiter',!1),w.a.extend(this.template,{attributes:{class:[O.if('isSticky','ck-toolbar_sticky'),O.if('_isStickyToTheLimiter','ck-toolbar_sticky_bottom-limit')],style:{width:O.to('isSticky',(R)=>{return R?P(this._elementPlaceholder.getBoundingClientRect().width):null}),bottom:O.to('_isStickyToTheLimiter',(R)=>{return R?P(this.limiterOffset):null}),marginLeft:O.to('_marginLeft')}}}),this._elementPlaceholder=new w.a({tag:'div',attributes:{class:['ck-toolbar__placeholder'],style:{display:O.to('isSticky',(R)=>R?'block':'none'),height:O.to('isSticky',(R)=>{return R?P(this._toolbarRect.height):null})}}}).render()}init(){super.init(),this.element.parentNode.insertBefore(this._elementPlaceholder,this.element),this.listenTo(h.a.window,'scroll',()=>{this._checkIfShouldBeSticky()}),this.listenTo(this,'change:isActive',()=>{this._checkIfShouldBeSticky()})}destroy(){return super.destroy().then(()=>{this._elementPlaceholder.remove()})}_checkIfShouldBeSticky(){const S=this._limiterRect=this.limiterElement.getBoundingClientRect(),O=this._toolbarRect=this.element.getBoundingClientRect();this.isSticky=this.isActive&&0>S.top&&this._toolbarRect.height+this.limiterOffset{const P=T.batch.deltas[T.batch.deltas.length-1],E=P.baseVersion+P.operations.length,S=Array.from(this.editor.document.history.getDeltas(E)).filter((O)=>{return!this._createdBatches.has(O.batch)});this._restoreSelection(T.selection.ranges,T.selection.isBackward,S),this._redo(T.batch)}),this.refreshState()}_redo(T){const P=this.editor.document,E=P.batch();this._createdBatches.add(E);const S=T.deltas.slice();S.reverse();for(let O of S){const R=O.baseVersion+O.operations.length;let V=[O.getReversed()];for(let F of P.history.getDeltas(R))this._createdBatches.has(F.batch)||(V=f.i(w.a)(V,[F],!0).deltasA);for(let F of V){F.baseVersion=P.version,E.addDelta(F);for(let I of F.operations)P.applyOperation(I)}}}}u.a=C},function(r,u,f){'use strict';var h=f(2),w=f(428),C=f(21),T=f(316),P=f.n(T),E=f(315),S=f.n(E);class O extends h.a{static get requires(){return[w.a]}static get pluginName(){return'undo/undo'}init(){const R=this.editor,V=R.t;this._addButton('undo',V('Undo'),'CTRL+Z',P.a),this._addButton('redo',V('Redo'),'CTRL+Y',S.a),R.keystrokes.set('CTRL+Z','undo'),R.keystrokes.set('CTRL+Y','redo'),R.keystrokes.set('CTRL+SHIFT+Z','redo')}_addButton(R,V,F,I){const N=this.editor,M=N.commands.get(R);N.ui.componentFactory.add(R,(D)=>{const q=new C.a(D);return q.set({label:V,icon:I,keystroke:F,tooltip:!0}),q.bind('isEnabled').to(M,'isEnabled'),this.listenTo(q,'execute',()=>N.execute(R)),q})}}u.a=O},function(r,u,f){'use strict';var h=f(121),w=f(108);class C extends h.a{_doExecute(T=null){let P=T?this._stack.findIndex((S)=>S.batch==T):this._stack.length-1;const E=this._stack.splice(P,1)[0];this.editor.document.enqueueChanges(()=>{const S=this._undo(E.batch),O=this.editor.document.history.getDeltas(E.batch.baseVersion);this._restoreSelection(E.selection.ranges,E.selection.isBackward,O),this.fire('revert',E.batch,S)}),this.refreshState()}_getItemIndexFromBaseVersion(T){for(let P=0;P{this._batchRegistry.has(O)||'transparent'==O.type||(this._redoCommand._createdBatches.has(O)?this._undoCommand.addBatch(O):!this._undoCommand._createdBatches.has(O)&&(this._undoCommand.addBatch(O),this._redoCommand.clearStack()),this._batchRegistry.add(O))},{priority:'highest'}),this.listenTo(this._undoCommand,'revert',(P,E,S)=>{this._redoCommand.addBatch(S)})}}u.a=T},function(r,u,f){'use strict';var h=f(99);u.a=class{constructor(C,T){this._config={},T&&this.define(T),C&&this._setObjectToTarget(this._config,C)}set(C,T){this._setToTarget(this._config,C,T)}define(C,T){this._setToTarget(this._config,C,T,!0)}get(C){return this._getFromSource(this._config,C)}_setToTarget(C,T,P,E=!1){if(f.i(h.a)(T))return void this._setObjectToTarget(C,T,E);const S=T.split('.');T=S.pop();for(let O of S)f.i(h.a)(C[O])||(C[O]={}),C=C[O];return f.i(h.a)(P)?(f.i(h.a)(C[T])||(C[T]={}),C=C[T],void this._setObjectToTarget(C,P,E)):void(E&&'undefined'!=typeof C[T]||(C[T]=P))}_getFromSource(C,T){const P=T.split('.');T=P.pop();for(let E of P){if(!f.i(h.a)(C[E])){C=null;break}C=C[E]}return C?C[T]:void 0}_setObjectToTarget(C,T,P){Object.keys(T).forEach((E)=>{this._setToTarget(C,E,T[E],P)})}}},function(r,u){'use strict';u.a=function(w,C){function T(){O&&(E.push(O),O=null)}function P(R){return O&&O.type==R}const E=[];let S=0,O;return w.forEach((R)=>{'equal'==R?(T(),S++):'insert'==R?(P('insert')?O.values.push(C[S]):(T(),O={type:'insert',index:S,values:[C[S]]}),S++):P('delete')?O.howMany++:(T(),O={type:'delete',index:S,howMany:1})}),T(),E}},function(r,u,f){'use strict';var w=f(191);u.a=function(C,T){const P=f.i(w.a)(C),E=f.i(w.a)(T);let S=0;for(;P[S]==E[S]&&P[S];)S++;return 0==S?null:P[S-1]}},function(r,u){'use strict';u.a=function(w){return w instanceof HTMLTextAreaElement?w.value:w.innerHTML}},function(r,u,f){'use strict';var w=f(47);u.a=function(C){for(;C&&'html'!=C.tagName.toLowerCase();){if('static'!=w.a.window.getComputedStyle(C).position)return C;C=C.parentElement}return null}},function(r,u){'use strict';u.a=function(w){let C=0;for(;w.previousSibling;)w=w.previousSibling,C++;return C}},function(r,u){'use strict';u.a=function(w,C,T){w.insertBefore(T,w.childNodes[C]||null)}},function(r,u,f){'use strict';function w(O,R,V){const{left:F,top:I,name:N}=O(R,V);return[N,V.clone().moveTo(F,I)]}function C(O,R,V,F,I){let N=0,M=0,D,q;const z=V.getArea();return O.some((U)=>{function $(){M=Y,N=H,D=W,q=K}const[K,W]=w(U,R,V);let H,Y;if(F)if(I){const G=F.getIntersection(I);H=G?G.getIntersectionArea(W):0}else H=F.getIntersectionArea(W);return I&&(Y=I.getIntersectionArea(W)),I&&!F?Y>M&&$():!I&&F?H>N&&$():Y>M&&H>=N?$():Y>=M&&H>N&&$(),H===z}),D?[q,D]:null}function T({left:O,top:R}){const{scrollX:V,scrollY:F}=P.a.window;return{left:O+V,top:R+F}}var P=f(47),E=f(437),S=f(433);u.a=function({element:O,target:R,positions:V,limiter:F,fitInViewport:I}){const N=f.i(S.a)(O.parentElement),M=new E.a(O),D=new E.a(R);let q,z;if(!F&&!I)[z,q]=w(V[0],D,M);else{const K=F&&new E.a(F).getVisible(),W=I&&E.a.getViewportRect();[z,q]=C(V,D,M,K,W)||w(V[0],D,M)}let{left:U,top:$}=T(q);if(N){const K=T(new E.a(N)),W=P.a.window.getComputedStyle(N);U-=K.left,$-=K.top,U+=N.scrollLeft,$+=N.scrollTop,U-=parseInt(W.borderLeftWidth,10),$-=parseInt(W.borderTopWidth,10)}return{left:U,top:$,name:z}}},function(r,u,f){'use strict';var h=f(47),w=f(192),C=f(237);const T=['top','right','bottom','left','width','height'];class P{constructor(E){Object.defineProperty(this,'_source',{value:E._source||E,writable:!1,enumerable:!1}),(f.i(C.a)(E)||f.i(w.a)(E))&&(E=E.getBoundingClientRect()),T.forEach((S)=>this[S]=E[S])}clone(){return new P(this)}moveTo(E,S){return this.top=S,this.right=E+this.width,this.bottom=S+this.height,this.left=E,this}moveBy(E,S){return this.top+=S,this.right+=E,this.left+=E,this.bottom+=S,this}getIntersection(E){const S={top:_Mathmax(this.top,E.top),right:_Mathmin(this.right,E.right),bottom:_Mathmin(this.bottom,E.bottom),left:_Mathmax(this.left,E.left)};return S.width=S.right-S.left,S.height=S.bottom-S.top,0>S.width||0>S.height?null:new P(S)}getIntersectionArea(E){const S=this.getIntersection(E);return S?S.getArea():0}getArea(){return this.width*this.height}getVisible(){const E=this._source;let S=this.clone();if(E!=h.a.document.body)for(let O=E.parentNode||E.commonAncestorContainer;O&&O!=h.a.document.body;){const R=new P(O),V=S.getIntersection(R);if(V)V.getArea(){w.style.display='',C&&C.remove()}),this._replacedElements=[]}}},function(r,u){'use strict';const w=navigator.userAgent.toLowerCase(),C={mac:function(T){return-1=C?w:C)),w}},function(r,u,f){'use strict';var w=f(14),C=Object.create;u.a=function(T){return f.i(w.a)(T)?C(T):{}}},function(r,u,f){'use strict';var w=f(15),C=f(537);u.a=function(T,P,E,S){var O=T.length;for(E=f.i(w.a)(E),0>E&&(E=-E>O?0:O+E),S=void 0===S||S>O?O:f.i(w.a)(S),0>S&&(S+=O),S=E>S?0:f.i(C.a)(S);ET?P:0,f.i(w.a)(T,P)?C[T]:void 0}},function(r,u,f){'use strict';var w=f(127);u.a=function(C){return function(T){return f.i(w.a)(T,C)}}},function(r,u,f){'use strict';var w=f(69),C=f(89),T=f(39),P=f(56),E=f(14),S=f(57);u.a=function(O,R,V,F){R=f.i(P.a)(R,O)?[R]:f.i(C.a)(R);for(var I=-1,N=R.length,D=O,q;null!=D&&++IT||O&&R&&F&&!V&&!I||E&&R&&F||!P&&F||!S)return 1;if(!E&&!O&&!I&&CO?void 0:R,O=1),P=Object(P);++SS)return!1;var O=E.length-1;return S==O?E.pop():T.call(E,S,1),!0}},function(r,u,f){'use strict';var w=f(86);u.a=function(C){var T=this.__data__,P=f.i(w.a)(T,C);return 0>P?void 0:T[P][1]}},function(r,u,f){'use strict';var w=f(86);u.a=function(C){return-1E?P.push([C,T]):P[E][1]=T,this}},function(r,u,f){'use strict';var w=f(444),C=f(82),T=f(194);u.a=function(){this.__data__={hash:new w.a,map:new(T.a||C.a),string:new w.a}}},function(r,u,f){'use strict';var w=f(90);u.a=function(C){return f.i(w.a)(this,C)['delete'](C)}},function(r,u,f){'use strict';var w=f(90);u.a=function(C){return f.i(w.a)(this,C).get(C)}},function(r,u,f){'use strict';var w=f(90);u.a=function(C){return f.i(w.a)(this,C).has(C)}},function(r,u,f){'use strict';var w=f(90);u.a=function(C,T){return f.i(w.a)(this,C).set(C,T),this}},function(r,u,f){'use strict';var w=f(127),C=f(38);u.a=function(T,P){return 1==P.length?T:f.i(w.a)(T,f.i(C.a)(P,0,-1))}},function(r,u){'use strict';u.a=function(C){return this.__data__.set(C,'__lodash_hash_undefined__'),this}},function(r,u){'use strict';u.a=function(w){return this.__data__.has(w)}},function(r,u){'use strict';u.a=function(w){var C=-1,T=Array(w.size);return w.forEach(function(P){T[++C]=[P,P]}),T}},function(r,u,f){'use strict';var w=f(82);u.a=function(){this.__data__=new w.a}},function(r,u){'use strict';u.a=function(w){return this.__data__['delete'](w)}},function(r,u){'use strict';u.a=function(w){return this.__data__.get(w)}},function(r,u){'use strict';u.a=function(w){return this.__data__.has(w)}},function(r,u,f){'use strict';var w=f(82),C=f(122);u.a=function(P,E){var S=this.__data__;return S instanceof w.a&&S.__data__.length==200&&(S=this.__data__=new C.a(S.__data__)),S.set(P,E),this}},function(r,u,f){'use strict';var h=f(531),w=f(539),C=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,T=/\\(\\)?/g,P=f.i(h.a)(function(E){var S=[];return f.i(w.a)(E).replace(C,function(O,R,V,F){S.push(V?F.replace(T,'$1'):R||O)}),S});u.a=P},function(r,u,f){'use strict';var h=f(214),w=f(215),C=f(216),T=f(217),P=f(218),E=f(219),S=f(144),O=f(145),R=f(220),V=f(221),F=f(222),I=f(223),N=f(224),M=f(225),D=f(226),q=f(227),z=f(228),U=f(229),$=f(146),K=f(232),W=f(233),H=f(234),Y=f(235),G=f(236),Z=f(239),J=f(19),Q=f(240),X=f(241),ee=f(242),te=f(150),ae=f(243),ne=f(244),oe=f(245),ie=f(246),re=f(247),se=f(248),le=f(249),de=f(250),ce=f(251),ue=f(252),me=f(253),pe=f(254),ge=f(255),fe=f(256),he=f(257),be=f(258),_e=f(259),ke=f(260),we=f(261),ye=f(263),ve=f(264),xe=f(265),Ce=f(266),Ae=f(267),Te=f(268),Pe=f(100),Ee=f(151),Se=f(269),Oe=f(270),Re=f(271),Ve=f(272),Fe=f(273),Ie=f(274),Be=f(275),Le=f(276);u.a={chunk:h.a,compact:w.a,concat:C.a,difference:T.a,differenceBy:P.a,differenceWith:E.a,drop:S.a,dropRight:O.a,dropRightWhile:R.a,dropWhile:V.a,fill:F.a,findIndex:I.a,findLastIndex:N.a,first:M.a,flatten:D.a,flattenDeep:q.a,flattenDepth:z.a,fromPairs:U.a,head:$.a,indexOf:K.a,initial:W.a,intersection:H.a,intersectionBy:Y.a,intersectionWith:G.a,join:Z.a,last:J.a,lastIndexOf:Q.a,nth:X.a,pull:ee.a,pullAll:te.a,pullAllBy:ae.a,pullAllWith:ne.a,pullAt:oe.a,remove:ie.a,reverse:re.a,slice:se.a,sortedIndex:le.a,sortedIndexBy:de.a,sortedIndexOf:ce.a,sortedLastIndex:ue.a,sortedLastIndexBy:me.a,sortedLastIndexOf:pe.a,sortedUniq:ge.a,sortedUniqBy:fe.a,tail:he.a,take:be.a,takeRight:_e.a,takeRightWhile:ke.a,takeWhile:we.a,union:ye.a,unionBy:ve.a,unionWith:xe.a,uniq:Ce.a,uniqBy:Ae.a,uniqWith:Te.a,unzip:Pe.a,unzipWith:Ee.a,without:Se.a,xor:Oe.a,xorBy:Re.a,xorWith:Ve.a,zip:Fe.a,zipObject:Ie.a,zipObjectDeep:Be.a,zipWith:Le.a}},function(r,u,f){'use strict';var h=f(214),w=f(215),C=f(216),T=f(217),P=f(218),E=f(219),S=f(144),O=f(145),R=f(220),V=f(221),F=f(222),I=f(223),N=f(224),M=f(225),D=f(226),q=f(227),z=f(228),U=f(229),$=f(146),K=f(232),W=f(233),H=f(234),Y=f(235),G=f(236),Z=f(239),J=f(19),Q=f(240),X=f(241),ee=f(242),te=f(150),ae=f(243),ne=f(244),oe=f(245),ie=f(246),re=f(247),se=f(248),le=f(249),de=f(250),ce=f(251),ue=f(252),me=f(253),pe=f(254),ge=f(255),fe=f(256),he=f(257),be=f(258),_e=f(259),ke=f(260),we=f(261),ye=f(263),ve=f(264),xe=f(265),Ce=f(266),Ae=f(267),Te=f(268),Pe=f(100),Ee=f(151),Se=f(269),Oe=f(270),Re=f(271),Ve=f(272),Fe=f(273),Ie=f(274),Be=f(275),Le=f(276),Ne=f(521);f.d(u,'a',function(){return Ne.a})},function(r,u,f){'use strict';var h=f(69),w=f(139),C=f(481),T=f(97),P=f(93),E=f(530),S=Object.prototype,O=S.propertyIsEnumerable,R=!O.call({valueOf:1},'valueOf'),V=f.i(C.a)(function(F,I){if(R||f.i(P.a)(I)||f.i(T.a)(I))return void f.i(w.a)(I,f.i(E.a)(I),F);for(var N in I)f.i(h.a)(F,N,I[N])});u.a=V},function(r,u,f){'use strict';var w=f(199);u.a=function(C,T){return f.i(w.a)(C,!0,!0,T)}},function(r,u){'use strict';u.a=function(w){return function(){return w}}},function(r,u,f){'use strict';var w=f(458),C=f(489);u.a=function(T,P){return null!=T&&f.i(C.a)(T,P,w.a)}},function(r,u,f){'use strict';(function(h){var w=f(525),C=f(32),T={'function':!0,object:!0},P=T[typeof exports]&&exports&&!exports.nodeType?exports:void 0,E=T[typeof h]&&h&&!h.nodeType?h:void 0,S=E&&E.exports===P?P:void 0,O=S?C.a.Buffer:void 0,R=O?function(V){return V instanceof O}:f.i(w.a)(!1);u.a=R}).call(u,f(156)(r))},function(r,u,f){'use strict';var w=f(130);u.a=function(C,T){return f.i(w.a)(C,T)}},function(r,u,f){'use strict';var w=f(98),C=f(51),X={};X['[object Float32Array]']=X['[object Float64Array]']=X['[object Int8Array]']=X['[object Int16Array]']=X['[object Int32Array]']=X['[object Uint8Array]']=X['[object Uint8ClampedArray]']=X['[object Uint16Array]']=X['[object Uint32Array]']=!0,X['[object Arguments]']=X['[object Array]']=X['[object ArrayBuffer]']=X['[object Boolean]']=X['[object DataView]']=X['[object Date]']=X['[object Error]']=X['[object Function]']=X['[object Map]']=X['[object Number]']=X['[object Object]']=X['[object RegExp]']=X['[object Set]']=X['[object String]']=X['[object WeakMap]']=!1;var ee=Object.prototype,te=ee.toString;u.a=function(ae){return f.i(C.a)(ae)&&f.i(w.a)(ae.length)&&!!X[te.call(ae)]}},function(r,u,f){'use strict';var w=f(463),C=f(209),T=f(39),P=f(93),E=Object.prototype,S=E.hasOwnProperty;u.a=function(O){for(var R=-1,V=f.i(P.a)(O),F=f.i(w.a)(O),I=F.length,N=f.i(C.a)(O),D=N||[],q=D.length,z;++RP?-1:1;return E*1.7976931348623157e308}return P===P?P:0}},function(r,u,f){'use strict';var w=f(454),C=f(15);u.a=function(P){return P?f.i(w.a)(f.i(C.a)(P),0,4294967295):0}},function(r,u,f){'use strict';var h=f(483),w=f(71),C=f.i(h.a)(w.a);u.a=C},function(r,u,f){'use strict';var w=f(470);u.a=function(C){return null==C?'':f.i(w.a)(C)}},function(r,u,f){'use strict';var h=f(544);u.a=class{constructor(C){this.lang=C||'en',this.t=(...T)=>this._t(...T)}_t(C,T){let P=f.i(h.a)(this.lang,C);return T&&(P=P.replace(/\%(\d+)/g,(E,S)=>{return S{z&&z.hasClass(F.d)&&z.removeClass(F.d);const H=W.viewSelection,Y=H.getSelectedElement();Y&&f.i(F.b)(Y)&&(H.setFake(!0,{label:f.i(F.e)(Y)}),Y.addClass(F.d),z=Y)},{priority:'low'}),q.addObserver(P.a),this.listenTo(q,'mousedown',(...U)=>this._onMousedown(...U)),this.listenTo(q,'keydown',(...U)=>this._onKeydown(...U),{priority:'high'})}_onMousedown(q,z){const U=this.editor,$=U.editing.view;let K=z.target;if(C(K))return;if(!f.i(F.b)(K)&&(K=K.findAncestor(F.b),!K))return;z.preventDefault(),$.isFocused||$.focus();const W=U.editing.mapper.toModelElement(K);U.document.enqueueChanges(()=>{this._setSelectionOverElement(W)})}_onKeydown(q,z){const U=z.keyCode,$=U==I.d.delete||U==I.d.arrowdown||U==I.d.arrowright;(w(U)&&this._handleDelete($)||h(U)&&this._handleArrowKeys($))&&(z.preventDefault(),q.stop())}_handleDelete(q){const z=this.editor.document,U=z.selection;if(!U.isCollapsed)return;const $=this._getObjectElementNextToSelection(q);if($)return z.enqueueChanges(()=>{const K=U.anchor.parent;if(K.isEmpty){const W=z.batch();W.remove(K)}this._setSelectionOverElement($)}),!0}_handleArrowKeys(q){const z=this.editor.document,U=z.schema,$=z.selection,K=$.getSelectedElement();if(K&&U.objects.has(K.name)){const H=q?$.getLastPosition():$.getFirstPosition(),Y=z.getNearestSelectionRange(H,q?'forward':'backward');return Y&&z.enqueueChanges(()=>{$.setRanges([Y])}),!0}if(!$.isCollapsed)return;const W=this._getObjectElementNextToSelection(q);if(W instanceof O.a&&z.schema.objects.has(W.name))return z.enqueueChanges(()=>{this._setSelectionOverElement(W)}),!0}_setSelectionOverElement(q){this.editor.document.selection.setRanges([E.a.createOn(q)])}_getObjectElementNextToSelection(q){const z=this.editor.document,U=z.schema,$=z.selection,K=this.editor.data,W=S.a.createFromSelection($);K.modifySelection(W,{direction:q?'forward':'backward'});const H=q?W.focus.nodeBefore:W.focus.nodeAfter;return H instanceof O.a&&U.objects.has(H.name)?H:null}}u.a=D}])}); //# sourceMappingURL=ckeditor.js.map \ No newline at end of file diff --git a/build/ckeditor.js.map b/build/ckeditor.js.map index 492f2cffc0..b0af8e576e 100644 --- a/build/ckeditor.js.map +++ b/build/ckeditor.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///../ckeditor5-engine/src/view/writer.js","webpack:///../ckeditor5-utils/src/lib/lodash/rest.js","webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap fc2add8038d1ab7dc55f","webpack:///../ckeditor5-utils/src/ckeditorerror.js","webpack:///../ckeditor5-engine/src/model/position.js","webpack:///../ckeditor5-engine/src/model/range.js","webpack:///../ckeditor5-core/src/plugin.js","webpack:///../ckeditor5-utils/src/mix.js","webpack:///../ckeditor5-engine/src/model/element.js","webpack:///../ckeditor5-ui/src/template.js","webpack:///../ckeditor5-utils/src/emittermixin.js","webpack:///../ckeditor5-ui/src/view.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIteratee.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArray.js","webpack:///../ckeditor5-core/src/command/command.js","webpack:///../ckeditor5-engine/src/model/writer.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArrayLikeObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/isObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/toInteger.js","webpack:///../ckeditor5-engine/src/model/batch.js","webpack:///../ckeditor5-engine/src/model/delta/deltafactory.js","webpack:///../ckeditor5-utils/src/lib/lodash/last.js","webpack:///../ckeditor5-engine/src/model/delta/delta.js","webpack:///../ckeditor5-engine/src/view/element.js","webpack:///../ckeditor5-utils/src/keyboard.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseFlatten.js","webpack:///../ckeditor5-engine/src/model/text.js","webpack:///../ckeditor5-engine/src/view/position.js","webpack:///../ckeditor5-ui/src/button/buttonview.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayMap.js","webpack:///../ckeditor5-engine/src/model/operation/moveoperation.js","webpack:///../ckeditor5-engine/src/view/text.js","webpack:///../ckeditor5-utils/src/lib/lodash/_root.js","webpack:///../ckeditor5-utils/src/observablemixin.js","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/style-loader/addStyles.js","webpack:///../ckeditor5-engine/src/model/operation/operation.js","webpack:///../ckeditor5-engine/src/model/treewalker.js","webpack:///../ckeditor5-engine/src/view/range.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSlice.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isIndex.js","webpack:///../ckeditor5-engine/src/model/operation/insertoperation.js","webpack:///../ckeditor5-engine/src/model/operation/removeoperation.js","webpack:///../ckeditor5-engine/src/view/containerelement.js","webpack:///../ckeditor5-image/src/image/utils.js","webpack:///../ckeditor5-utils/src/isiterable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseUniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/extend.js","webpack:///../ckeditor5-utils/src/lib/lodash/isObjectLike.js","webpack:///../ckeditor5-utils/src/lib/lodash/isSymbol.js","webpack:///../ckeditor5-utils/src/log.js","webpack:///../ckeditor5-engine/src/conversion/buildmodelconverter.js","webpack:///../ckeditor5-engine/src/conversion/buildviewconverter.js","webpack:///../ckeditor5-engine/src/model/documentfragment.js","webpack:///../ckeditor5-engine/src/view/observer/observer.js","webpack:///../ckeditor5-engine/src/view/treewalker.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getNative.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isKey.js","webpack:///../ckeditor5-utils/src/lib/lodash/_toKey.js","webpack:///../ckeditor5-utils/src/lib/lodash/eq.js","webpack:///../ckeditor5-engine/src/model/node.js","webpack:///../ckeditor5-engine/src/model/selection.js","webpack:///../ckeditor5-engine/src/model/textproxy.js","webpack:///../ckeditor5-engine/src/view/filler.js","webpack:///../ckeditor5-engine/src/view/observer/domeventobserver.js","webpack:///../ckeditor5-engine/src/view/selection.js","webpack:///../ckeditor5-utils/src/comparearrays.js","webpack:///../ckeditor5-utils/src/dom/global.js","webpack:///../ckeditor5-utils/src/focustracker.js","webpack:///../ckeditor5-utils/src/keystrokehandler.js","webpack:///../ckeditor5-utils/src/lib/lodash/_assignValue.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseDifference.js","webpack:///../ckeditor5-utils/src/lib/lodash/keys.js","webpack:///../ckeditor5-utils/src/uid.js","webpack:///../ckeditor5-paragraph/src/paragraph.js","webpack:///../ckeditor5-engine/src/model/nodelist.js","webpack:///../ckeditor5-engine/src/model/operation/attributeoperation.js","webpack:///../ckeditor5-engine/src/model/operation/nooperation.js","webpack:///../ckeditor5-engine/src/view/editableelement.js","webpack:///../ckeditor5-engine/src/view/node.js","webpack:///../ckeditor5-utils/src/collection.js","webpack:///../ckeditor5-utils/src/dom/emittermixin.js","webpack:///../ckeditor5-utils/src/first.js","webpack:///../ckeditor5-utils/src/lib/lodash/_ListCache.js","webpack:///../ckeditor5-utils/src/lib/lodash/_SetCache.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayFilter.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayPush.js","webpack:///../ckeditor5-utils/src/lib/lodash/_assocIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSortedIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/_castPath.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getMapData.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isHostObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isIterateeCall.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isPrototype.js","webpack:///../ckeditor5-utils/src/lib/lodash/_nativeCreate.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setToArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/clone.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArrayLike.js","webpack:///../ckeditor5-utils/src/lib/lodash/isLength.js","webpack:///../ckeditor5-utils/src/lib/lodash/isPlainObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/unzip.js","webpack:///../ckeditor5-core/src/command/helpers/getschemavalidranges.js","webpack:///../ckeditor5-engine/src/conversion/model-to-view-converters.js","webpack:///../ckeditor5-engine/src/model/delta/insertdelta.js","webpack:///../ckeditor5-engine/src/model/delta/mergedelta.js","webpack:///../ckeditor5-engine/src/model/delta/movedelta.js","webpack:///../ckeditor5-engine/src/model/delta/removedelta.js","webpack:///../ckeditor5-engine/src/model/delta/splitdelta.js","webpack:///../ckeditor5-engine/src/model/delta/transform.js","webpack:///../ckeditor5-engine/src/model/delta/unwrapdelta.js","webpack:///../ckeditor5-engine/src/model/delta/wrapdelta.js","webpack:///../ckeditor5-engine/src/model/liverange.js","webpack:///../ckeditor5-engine/src/model/operation/markeroperation.js","webpack:///../ckeditor5-engine/src/model/operation/reinsertoperation.js","webpack:///../ckeditor5-engine/src/model/operation/renameoperation.js","webpack:///../ckeditor5-engine/src/model/operation/rootattributeoperation.js","webpack:///../ckeditor5-engine/src/view/attributeelement.js","webpack:///../ckeditor5-engine/src/view/documentfragment.js","webpack:///../ckeditor5-engine/src/view/observer/domeventdata.js","webpack:///../ckeditor5-ui/src/focuscycler.js","webpack:///../ckeditor5-ui/src/viewcollection.js","webpack:///../ckeditor5-undo/src/basecommand.js","webpack:///../ckeditor5-utils/src/lib/lodash/_MapCache.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Stack.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Symbol.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayIncludes.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayIncludesWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIntersection.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIsEqual.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseProperty.js","webpack:///../ckeditor5-utils/src/lib/lodash/_basePullAll.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSortedIndexBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseUnary.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseXor.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_castArrayLikeObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneArrayBuffer.js","webpack:///../ckeditor5-utils/src/lib/lodash/_copyObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getPrototype.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getTag.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapToArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/debounce.js","webpack:///../ckeditor5-utils/src/lib/lodash/drop.js","webpack:///../ckeditor5-utils/src/lib/lodash/dropRight.js","webpack:///../ckeditor5-utils/src/lib/lodash/head.js","webpack:///../ckeditor5-utils/src/lib/lodash/isArguments.js","webpack:///../ckeditor5-utils/src/lib/lodash/isFunction.js","webpack:///../ckeditor5-utils/src/lib/lodash/isString.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAll.js","webpack:///../ckeditor5-utils/src/lib/lodash/unzipWith.js","webpack:///../ckeditor5-utils/src/tomap.js","webpack:///../ckeditor5-widget/src/utils.js","webpack:///../ckeditor5-image/src/imagetoolbar.js","webpack:///../ckeditor5-basic-styles/src/boldengine.js","webpack:///../ckeditor5-basic-styles/src/italicengine.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///../ckeditor5-core/src/command/helpers/isattributeallowedinselection.js","webpack:///../ckeditor5-core/src/command/toggleattributecommand.js","webpack:///../ckeditor5-engine/src/conversion/mapper.js","webpack:///../ckeditor5-engine/src/conversion/model-selection-to-view-converters.js","webpack:///../ckeditor5-engine/src/conversion/modelconversiondispatcher.js","webpack:///../ckeditor5-engine/src/dataprocessor/htmldataprocessor.js","webpack:///../ckeditor5-engine/src/model/delta/attributedelta.js","webpack:///../ckeditor5-engine/src/model/delta/renamedelta.js","webpack:///../ckeditor5-engine/src/model/delta/weakinsertdelta.js","webpack:///../ckeditor5-engine/src/model/liveposition.js","webpack:///../ckeditor5-engine/src/view/domconverter.js","webpack:///../ckeditor5-engine/src/view/emptyelement.js","webpack:///../ckeditor5-engine/src/view/matcher.js","webpack:///../ckeditor5-engine/src/view/observer/mutationobserver.js","webpack:///../ckeditor5-engine/src/view/rooteditableelement.js","webpack:///../ckeditor5-engine/src/view/uielement.js","webpack:///../ckeditor5-heading/src/headingengine.js","webpack:///../ckeditor5-image/src/image/imageengine.js","webpack:///../ckeditor5-image/src/image/ui/imageballoonpanelview.js","webpack:///../ckeditor5-link/src/findlinkrange.js","webpack:///../ckeditor5-link/src/linkelement.js","webpack:///../ckeditor5-list/src/listengine.js","webpack:///../ckeditor5-typing/src/changebuffer.js","webpack:///../ckeditor5-ui/src/bindings/clickoutsidehandler.js","webpack:///../ckeditor5-ui/src/bindings/submithandler.js","webpack:///../ckeditor5-ui/src/inputtext/inputtextview.js","webpack:///../ckeditor5-ui/src/labeledinput/labeledinputview.js","webpack:///../ckeditor5-ui/src/panel/balloon/balloonpanelview.js","webpack:///../ckeditor5-ui/src/toolbar/toolbarview.js","webpack:///../ckeditor5-utils/src/count.js","webpack:///../ckeditor5-utils/src/diff.js","webpack:///../ckeditor5-utils/src/dom/getancestors.js","webpack:///../ckeditor5-utils/src/dom/tounit.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Map.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Set.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Uint8Array.js","webpack:///../ckeditor5-utils/src/lib/lodash/_apply.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayReduce.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseClone.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseFindIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_basePullAt.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSortedUniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseTimes.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseZipObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_copyArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_equalArrays.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getSymbols.js","webpack:///../ckeditor5-utils/src/lib/lodash/_indexKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_indexOfNaN.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isStrictComparable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_matchesStrictComparable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_toSource.js","webpack:///../ckeditor5-utils/src/lib/lodash/chunk.js","webpack:///../ckeditor5-utils/src/lib/lodash/compact.js","webpack:///../ckeditor5-utils/src/lib/lodash/concat.js","webpack:///../ckeditor5-utils/src/lib/lodash/difference.js","webpack:///../ckeditor5-utils/src/lib/lodash/differenceBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/differenceWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/dropRightWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/dropWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/fill.js","webpack:///../ckeditor5-utils/src/lib/lodash/findIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/findLastIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/first.js","webpack:///../ckeditor5-utils/src/lib/lodash/flatten.js","webpack:///../ckeditor5-utils/src/lib/lodash/flattenDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/flattenDepth.js","webpack:///../ckeditor5-utils/src/lib/lodash/fromPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/get.js","webpack:///../ckeditor5-utils/src/lib/lodash/identity.js","webpack:///../ckeditor5-utils/src/lib/lodash/indexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/initial.js","webpack:///../ckeditor5-utils/src/lib/lodash/intersection.js","webpack:///../ckeditor5-utils/src/lib/lodash/intersectionBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/intersectionWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/isNative.js","webpack:///../ckeditor5-utils/src/lib/lodash/join.js","webpack:///../ckeditor5-utils/src/lib/lodash/lastIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/nth.js","webpack:///../ckeditor5-utils/src/lib/lodash/pull.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAllBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAllWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/pullAt.js","webpack:///../ckeditor5-utils/src/lib/lodash/remove.js","webpack:///../ckeditor5-utils/src/lib/lodash/reverse.js","webpack:///../ckeditor5-utils/src/lib/lodash/slice.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedIndexBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedLastIndex.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedLastIndexBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedLastIndexOf.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedUniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/sortedUniqBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/tail.js","webpack:///../ckeditor5-utils/src/lib/lodash/take.js","webpack:///../ckeditor5-utils/src/lib/lodash/takeRight.js","webpack:///../ckeditor5-utils/src/lib/lodash/takeRightWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/takeWhile.js","webpack:///../ckeditor5-utils/src/lib/lodash/toNumber.js","webpack:///../ckeditor5-utils/src/lib/lodash/union.js","webpack:///../ckeditor5-utils/src/lib/lodash/unionBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/unionWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/uniq.js","webpack:///../ckeditor5-utils/src/lib/lodash/uniqBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/uniqWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/without.js","webpack:///../ckeditor5-utils/src/lib/lodash/xor.js","webpack:///../ckeditor5-utils/src/lib/lodash/xorBy.js","webpack:///../ckeditor5-utils/src/lib/lodash/xorWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/zip.js","webpack:///../ckeditor5-utils/src/lib/lodash/zipObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/zipObjectDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/zipWith.js","webpack:///../ckeditor5-utils/src/objecttomap.js","webpack:///../ckeditor5-utils/src/unicode.js","webpack:///../ckeditor5-autoformat/src/autoformat.js","webpack:///../ckeditor5-basic-styles/src/bold.js","webpack:///../ckeditor5-basic-styles/src/italic.js","webpack:///./config-editor.js","webpack:///../ckeditor5-clipboard/src/clipboard.js","webpack:///../ckeditor5-editor-classic/src/classic.js","webpack:///../ckeditor5-enter/src/enter.js","webpack:///../ckeditor5-heading/src/heading.js","webpack:///../ckeditor5-image/src/image.js","webpack:///../ckeditor5-image/src/imagecaption.js","webpack:///../ckeditor5-image/src/imagestyle.js","webpack:///../ckeditor5-link/src/link.js","webpack:///../ckeditor5-list/src/list.js","webpack:///../ckeditor5-typing/src/typing.js","webpack:///../ckeditor5-undo/src/undo.js","webpack:///../ckeditor5-basic-styles/theme/icons/bold.svg","webpack:///../ckeditor5-basic-styles/theme/icons/italic.svg","webpack:///../ckeditor5-core/theme/icons/low-vision.svg","webpack:///../ckeditor5-core/theme/icons/object-center.svg","webpack:///../ckeditor5-core/theme/icons/object-right.svg","webpack:///../ckeditor5-link/theme/icons/link.svg","webpack:///../ckeditor5-link/theme/icons/unlink.svg","webpack:///../ckeditor5-list/theme/icons/bulletedlist.svg","webpack:///../ckeditor5-list/theme/icons/numberedlist.svg","webpack:///../ckeditor5-undo/theme/icons/redo.svg","webpack:///../ckeditor5-undo/theme/icons/undo.svg","webpack:///../ckeditor5-autoformat/src/blockautoformatengine.js","webpack:///../ckeditor5-autoformat/src/inlineautoformatengine.js","webpack:///./ckeditor.js","webpack:///./~/base64-js/index.js","webpack:///./~/buffer/index.js","webpack:///../ckeditor5-editor-classic/theme/theme.scss","webpack:///../ckeditor5-engine/theme/placeholder.scss","webpack:///../ckeditor5-heading/theme/theme.scss","webpack:///../ckeditor5-image/theme/imagecaption/theme.scss","webpack:///../ckeditor5-image/theme/imagetextalternative/theme.scss","webpack:///../ckeditor5-image/theme/theme.scss","webpack:///../ckeditor5-link/theme/theme.scss","webpack:///../ckeditor5-widget/theme/theme.scss","webpack:///./~/ieee754/index.js","webpack:///./~/isarray/index.js","webpack:///./~/style-loader/fixUrls.js","webpack:///../ckeditor5-editor-classic/theme/theme.scss?6b4a","webpack:///../ckeditor5-engine/theme/placeholder.scss?4d96","webpack:///../ckeditor5-heading/theme/theme.scss?a058","webpack:///../ckeditor5-image/theme/imagecaption/theme.scss?0255","webpack:///../ckeditor5-image/theme/imagetextalternative/theme.scss?a39b","webpack:///../ckeditor5-image/theme/theme.scss?19e7","webpack:///../ckeditor5-link/theme/theme.scss?4d4f","webpack:///../ckeditor5-widget/theme/theme.scss?7c97","webpack:///../ckeditor5-clipboard/src/clipboardobserver.js","webpack:///../ckeditor5-clipboard/src/datatransfer.js","webpack:///../ckeditor5-clipboard/src/utils/normalizeclipboarddata.js","webpack:///../ckeditor5-clipboard/src/utils/plaintexttohtml.js","webpack:///../ckeditor5-core/src/editingkeystrokehandler.js","webpack:///../ckeditor5-core/src/editor/editor.js","webpack:///../ckeditor5-core/src/editor/standardeditor.js","webpack:///../ckeditor5-core/src/plugincollection.js","webpack:///../ckeditor5-editor-classic/src/classiceditorui.js","webpack:///../ckeditor5-editor-classic/src/classiceditoruiview.js","webpack:///../ckeditor5-engine/src/controller/datacontroller.js","webpack:///../ckeditor5-engine/src/controller/deletecontent.js","webpack:///../ckeditor5-engine/src/controller/editingcontroller.js","webpack:///../ckeditor5-engine/src/controller/getselectedcontent.js","webpack:///../ckeditor5-engine/src/controller/insertcontent.js","webpack:///../ckeditor5-engine/src/controller/modifyselection.js","webpack:///../ckeditor5-engine/src/conversion/modelconsumable.js","webpack:///../ckeditor5-engine/src/conversion/view-selection-to-model-converters.js","webpack:///../ckeditor5-engine/src/conversion/view-to-model-converters.js","webpack:///../ckeditor5-engine/src/conversion/viewconsumable.js","webpack:///../ckeditor5-engine/src/conversion/viewconversiondispatcher.js","webpack:///../ckeditor5-engine/src/dataprocessor/basichtmlwriter.js","webpack:///../ckeditor5-engine/src/model/delta/basic-deltas.js","webpack:///../ckeditor5-engine/src/model/delta/basic-transformations.js","webpack:///../ckeditor5-engine/src/model/delta/markerdelta.js","webpack:///../ckeditor5-engine/src/model/document.js","webpack:///../ckeditor5-engine/src/model/history.js","webpack:///../ckeditor5-engine/src/model/liveselection.js","webpack:///../ckeditor5-engine/src/model/markercollection.js","webpack:///../ckeditor5-engine/src/model/operation/operationfactory.js","webpack:///../ckeditor5-engine/src/model/operation/transform.js","webpack:///../ckeditor5-engine/src/model/rootelement.js","webpack:///../ckeditor5-engine/src/model/schema.js","webpack:///../ckeditor5-engine/src/view/document.js","webpack:///../ckeditor5-engine/src/view/observer/clickobserver.js","webpack:///../ckeditor5-engine/src/view/observer/fakeselectionobserver.js","webpack:///../ckeditor5-engine/src/view/observer/focusobserver.js","webpack:///../ckeditor5-engine/src/view/observer/keyobserver.js","webpack:///../ckeditor5-engine/src/view/observer/mouseobserver.js","webpack:///../ckeditor5-engine/src/view/observer/selectionobserver.js","webpack:///../ckeditor5-engine/src/view/placeholder.js","webpack:///../ckeditor5-engine/src/view/renderer.js","webpack:///../ckeditor5-engine/src/view/textproxy.js","webpack:///../ckeditor5-enter/src/entercommand.js","webpack:///../ckeditor5-enter/src/enterobserver.js","webpack:///../ckeditor5-heading/src/headingcommand.js","webpack:///../ckeditor5-image/src/image/converters.js","webpack:///../ckeditor5-image/src/imagecaption/imagecaptionengine.js","webpack:///../ckeditor5-image/src/imagecaption/utils.js","webpack:///../ckeditor5-image/src/imagestyle/converters.js","webpack:///../ckeditor5-image/src/imagestyle/imagestylecommand.js","webpack:///../ckeditor5-image/src/imagestyle/imagestyleengine.js","webpack:///../ckeditor5-image/src/imagetextalternative.js","webpack:///../ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.js","webpack:///../ckeditor5-image/src/imagetextalternative/imagetextalternativeengine.js","webpack:///../ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.js","webpack:///../ckeditor5-link/src/linkcommand.js","webpack:///../ckeditor5-link/src/linkengine.js","webpack:///../ckeditor5-link/src/ui/linkformview.js","webpack:///../ckeditor5-link/src/unlinkcommand.js","webpack:///../ckeditor5-list/src/converters.js","webpack:///../ckeditor5-list/src/indentcommand.js","webpack:///../ckeditor5-list/src/listcommand.js","webpack:///../ckeditor5-list/src/viewlistitemelement.js","webpack:///../ckeditor5-paragraph/src/paragraphcommand.js","webpack:///../ckeditor5-typing/src/delete.js","webpack:///../ckeditor5-typing/src/deletecommand.js","webpack:///../ckeditor5-typing/src/deleteobserver.js","webpack:///../ckeditor5-typing/src/input.js","webpack:///../ckeditor5-typing/src/inputcommand.js","webpack:///../ckeditor5-ui/src/bindings/escpresshandler.js","webpack:///../ckeditor5-ui/src/componentfactory.js","webpack:///../ckeditor5-ui/src/dropdown/createdropdown.js","webpack:///../ckeditor5-ui/src/dropdown/dropdownpanelview.js","webpack:///../ckeditor5-ui/src/dropdown/dropdownview.js","webpack:///../ckeditor5-ui/src/dropdown/list/createlistdropdown.js","webpack:///../ckeditor5-ui/src/editableui/editableuiview.js","webpack:///../ckeditor5-ui/src/editableui/inline/inlineeditableuiview.js","webpack:///../ckeditor5-ui/src/editorui/boxed/boxededitoruiview.js","webpack:///../ckeditor5-ui/src/editorui/editoruiview.js","webpack:///../ckeditor5-ui/src/icon/iconview.js","webpack:///../ckeditor5-ui/src/label/labelview.js","webpack:///../ckeditor5-ui/src/list/listitemview.js","webpack:///../ckeditor5-ui/src/list/listview.js","webpack:///../ckeditor5-ui/src/model.js","webpack:///../ckeditor5-ui/src/toolbar/enabletoolbarkeyboardfocus.js","webpack:///../ckeditor5-ui/src/toolbar/sticky/stickytoolbarview.js","webpack:///../ckeditor5-ui/src/toolbar/toolbarseparatorview.js","webpack:///../ckeditor5-undo/src/redocommand.js","webpack:///../ckeditor5-undo/src/undocommand.js","webpack:///../ckeditor5-undo/src/undoengine.js","webpack:///../ckeditor5-utils/src/config.js","webpack:///../ckeditor5-utils/src/difftochanges.js","webpack:///../ckeditor5-utils/src/dom/getcommonancestor.js","webpack:///../ckeditor5-utils/src/dom/getdatafromelement.js","webpack:///../ckeditor5-utils/src/dom/getpositionedancestor.js","webpack:///../ckeditor5-utils/src/dom/indexof.js","webpack:///../ckeditor5-utils/src/dom/insertat.js","webpack:///../ckeditor5-utils/src/dom/isrange.js","webpack:///../ckeditor5-utils/src/dom/position.js","webpack:///../ckeditor5-utils/src/dom/rect.js","webpack:///../ckeditor5-utils/src/dom/remove.js","webpack:///../ckeditor5-utils/src/dom/setdatainelement.js","webpack:///../ckeditor5-utils/src/elementreplacer.js","webpack:///../ckeditor5-utils/src/env.js","webpack:///../ckeditor5-utils/src/eventinfo.js","webpack:///../ckeditor5-utils/src/lib/lodash/_DataView.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Hash.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Promise.js","webpack:///../ckeditor5-utils/src/lib/lodash/_Reflect.js","webpack:///../ckeditor5-utils/src/lib/lodash/_WeakMap.js","webpack:///../ckeditor5-utils/src/lib/lodash/_addMapEntry.js","webpack:///../ckeditor5-utils/src/lib/lodash/_addSetEntry.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arrayEach.js","webpack:///../ckeditor5-utils/src/lib/lodash/_arraySome.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseAssign.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseAt.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseClamp.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseCreate.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseFill.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseGetAllKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseHasIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIndexOfWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIsEqualDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseIsMatch.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseKeysIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseMatches.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseMatchesProperty.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseNth.js","webpack:///../ckeditor5-utils/src/lib/lodash/_basePropertyDeep.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseToPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/_baseToString.js","webpack:///../ckeditor5-utils/src/lib/lodash/_checkGlobal.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneBuffer.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneDataView.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneMap.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneRegExp.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneSymbol.js","webpack:///../ckeditor5-utils/src/lib/lodash/_cloneTypedArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_compareAscending.js","webpack:///../ckeditor5-utils/src/lib/lodash/_copySymbols.js","webpack:///../ckeditor5-utils/src/lib/lodash/_createAssigner.js","webpack:///../ckeditor5-utils/src/lib/lodash/_createSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_createToPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/_equalByTag.js","webpack:///../ckeditor5-utils/src/lib/lodash/_equalObjects.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getAllKeys.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getLength.js","webpack:///../ckeditor5-utils/src/lib/lodash/_getMatchData.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hasPath.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_hashSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_initCloneArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_initCloneByTag.js","webpack:///../ckeditor5-utils/src/lib/lodash/_initCloneObject.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isFlattenable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_isKeyable.js","webpack:///../ckeditor5-utils/src/lib/lodash/_iteratorToArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_listCacheSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_mapCacheSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_parent.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setCacheAdd.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setCacheHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_setToPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackClear.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackDelete.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackGet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackHas.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stackSet.js","webpack:///../ckeditor5-utils/src/lib/lodash/_stringToPath.js","webpack:///../ckeditor5-utils/src/lib/lodash/array.default.js","webpack:///../ckeditor5-utils/src/lib/lodash/array.js","webpack:///../ckeditor5-utils/src/lib/lodash/assignIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/cloneDeepWith.js","webpack:///../ckeditor5-utils/src/lib/lodash/constant.js","webpack:///../ckeditor5-utils/src/lib/lodash/hasIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/isBuffer.js","webpack:///../ckeditor5-utils/src/lib/lodash/isElement.js","webpack:///../ckeditor5-utils/src/lib/lodash/isEqual.js","webpack:///../ckeditor5-utils/src/lib/lodash/isTypedArray.js","webpack:///../ckeditor5-utils/src/lib/lodash/keysIn.js","webpack:///../ckeditor5-utils/src/lib/lodash/memoize.js","webpack:///../ckeditor5-utils/src/lib/lodash/noop.js","webpack:///../ckeditor5-utils/src/lib/lodash/now.js","webpack:///../ckeditor5-utils/src/lib/lodash/property.js","webpack:///../ckeditor5-utils/src/lib/lodash/throttle.js","webpack:///../ckeditor5-utils/src/lib/lodash/toFinite.js","webpack:///../ckeditor5-utils/src/lib/lodash/toLength.js","webpack:///../ckeditor5-utils/src/lib/lodash/toPairs.js","webpack:///../ckeditor5-utils/src/lib/lodash/toString.js","webpack:///../ckeditor5-utils/src/locale.js","webpack:///../ckeditor5-utils/src/mapsequal.js","webpack:///../ckeditor5-utils/src/priorities.js","webpack:///../ckeditor5-utils/src/spy.js","webpack:///../ckeditor5-utils/src/translation-service.js","webpack:///../ckeditor5-widget/src/widget.js"],"names":[],"mappings":";;;;sDAilBA,8FChjBA,sBCjCA,cACA,8BACA,uCACA,8CACA,cACA,OACA,OACA,6DACA,EACA,CAAC,mBACD,kBCTA,cAMA,MACA,eAGA,mBACA,GACA,EACA,KAIA,mDAGA,KAGA,OACA,OAIA,IAzBA,iBA4BA,MAGA,iBAA2C,OAAc,EAGzD,qBACA,OACA,8BACA,CACA,gBACA,kBAGA,GAGA,iBACA,YACA,qBAA2B,UAA0B,UACrD,YAAiC,OAAe,EAChD,mBACA,GACA,CAGA,mBAAsD,+CAA+D,EAGrH,MAGA,8BC9CA,aACA,qBAaA,iBACA,CACA,0BAGA,UAKA,aAOA,0BACA,CAQA,0BACA,oBACA,EACA,sEC7DA,OAoCA,IACA,OAOA,iBACA,4BAMA,kCAGA,iFAOA,mHAAsH,MAItH,yBACA,OASA,eA+BA,YACA,CAQA,aACA,sBACA,KAKA,cACA,+BACA,CAcA,aACA,YAEA,eAAkB,qBAA0B,EAC5C,2CAGA,WACA,EAUA,YACA,uCACA,OASA,eACA,iCAEA,4DACA,IAQA,gBACA,8DACA,IAQA,iBACA,gEACA,IAQA,gBACA,OACA,gBAQA,cACA,iCACA,SAQA,eACA,iBACA,WAGA,yCAEA,YAEA,SADA,EAGA,OACA,aAEA,SACA,gBAGA,4BACA,GAEA,SAGA,OAuBA,2BAA4C,KAC5C,iBAEA,qBACA,iBAEA,KACA,QAUA,gBACA,2BACA,EAOA,eACA,uBACA,0BAEA,iCAAqC,CAErC,gBASA,iBACA,iBACA,KAIA,oCAEA,oEAEA,2BACA,EASA,gBACA,4BAEA,iBACA,wBAEA,EACA,CAUA,WACA,OACA,4BAiCA,YACA,OACA,6BAQA,WACA,OACA,2BAYA,cACA,OACA,OACA,wBAEA,UACA,OACA,OAEA,aACA,gCACA,6BACA,GAEA,UACA,+BACA,0BACA,MAEA,MACA,QAIA,sBAEA,oCACA,cACA,GAGA,wCACA,iBACA,UAGA,gCACA,OACA,SACA,QAAI,KACJ,IACA,aAGA,gCACA,EACA,CACA,CAWA,+BACA,4BAGA,sBACA,WAGA,MAEA,kFAEA,oBAEA,aAGA,gBAEA,CACG,qEAEH,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,SACA,EAOA,SACA,aAEA,wBAEA,6BACA,GAEA,8BACA,4BAEA,SAEA,OACA,EASA,mBACA,OAEA,mBACA,CAEA,oBACA,WAEA,uBAGA,wBAGA,GAEA,kCACA,EACA,MAKY,gCColBZ,cACA,SAWA,SACA,cAGA,qBACA,aACE,mBAKF,KAQY,CACZ,iBACA,qBAEA,qBACA,gBAIA,IACA,EACA,EAOgG,CAChG,iBAAiD,CAAO,SACxD,aAMA,oCACA,OAEA,eAGA,MACA,OAEA,gBAEA,GAOa,CACb,cACA,OACA,QACA,gBACA,EAEA,UACA,gBACA,EAEA,EASa,CACb,oBACA,OACA,QACA,yBACA,GAEA,UACA,yBACA,GAEA,EAQa,CACb,iBACA,OACA,QACA,cACA,EAEA,UACA,cACA,IAEA,EAKa,CACb,cACA,6BAYA,2CACA,WAEA,GAEA,SACA,GAWmD,CACnD,cACA,IACA,yBACE,OACF,QAGA,OACA,4BAGA,cAGA,aACA,IACA,iBAGA,wBAEA,WACA,iBACA,oBAEA,gCACA,kBACA,WAEA,kBAMA,iBACA,EAEA,OACA,GAsBkB,CAClB,cACA,cACA,WACA,sCAGA,aAEA,GAmBoB,CACpB,cACA,cACA,SAGA,UACA,GAWmD,CACnD,cACA,OACA,OAEA,IAgBiD,CACjD,cACA,kBACA,oBAEA,MAiBkB,CAClB,iBACA,kBACA,kBAEA,KAOa,CACb,iBACA,UACA,IACE,KACF,IAEA,MAAY,EAAK,IAAG,EAEpB,EAea,CACb,iBACA,cACA,OACA,sBAEA,eAGA,GAMiD,CACjD,iBACA,OACA,iBACA,gBAGA,kCAGA,gBACA,qBACA,oBAGA,0CAGA,oBACA,yBAGA,sCACA,oCAMA,qBAGA,8GAEA,mBACA,iCAEA,GACA,CAMa,CACb,cACA,YACA,MAKa,CACb,cACA,qBACA,IAKa,CACb,cACA,qBACA,GAKa,CACb,cACA,qBACA,IAKA,CACA,YACA,OACA,CACA,YACA,YAEA,cAMkB,CAClB,cACA,oBACA,WAkPA,iEA5jDA,SAqBA,IA4BA,QAMA,gBACA,wBAUA,WAiDA,gCACA,IASA,SACA,2BACA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A,GACA,YAEA,EACA,CAGA,OAUA,iDVvXA,mBA8BA,aACA,IACA,8BAEA,WA/BA,oEAgCA,aACA,WACA,aACA,iBACA,WAEA,OACA,YAEA,UACA,6BACA,kCACA,uCAEA,kBACA,UACA,MACA,UAEA,eACA,kBACA,EACA,CAEA,uFW/DA,OAoDA,IACA,OAMA,eAOA,aAUA,cASA,WAQA,qCASA,gCAGA,yDACA,UACA,CAsBA,EAQA,cACA,aACA,cAIA,cACA,eAKA,mDACA,UAHA,IAQA,eACA,eACA,CASA,mBACA,aACA,mBAGA,+CACA,KAmCA,mBACA,YAEA,sCAEA,GACA,CA2DA,eACA,UACA,QAGA,gBACA,6BAEA,EAOA,OACA,SAMA,oBAGA,+EAEA,mBACA,qDACA,QAEA,YACA,MACA,QACA,EAOA,UACA,MAEA,yDAEA,wCACA,8BAEA,oDACA,8CAEA,iBACA,EAQA,uBACA,cACA,MACA,wBACA,qBACA,oBAEA,KAIA,EAEA,SACA,SACA,QAEA,gBACA,yFCnVA,SACA,WAGA,OACA,qBAEA,EACA,QAEA,IACA,4BACA,mBACA,aAEA,YACA,EAEA,iBCNA,aACA,YAEA,4CCwGA,eACA,GACA,qBArIA,QAwBA,GACA,OAMA,eAOA,aASA,WAIA,qBACA,6CACA,kBACA,eAEA,EAEA,UACA,MACA,eASA,eACA,SAAgB,CAChB,uCAEA,oBACA,SAQA,YACA,MACA,2BAEA,EAQA,WACA,wBACA,QACA,cASA,UACA,yBACA,QACA,cAQA,cAYA,QAMA,WAUA,mCChEA,aACA,OAMA,gBAIA,gIAGA,WACA,WAGA,gEAIA,0BAEA,OACA,CAQA,CAyEA,aACA,MAEA,kBACA,YAIA,cAAiB,MAAkB,OACnC,OACA,uCACG,2BACH,mCACG,4DACH,oBACA,UAEG,sBACH,eAMA,cAAiB,MAAuB,WACxC,WACA,SAEA,2CAEA,4CACA,kBAEA,IAEA,OACA,EAYA,CACA,eACA,sBACA,gBAGA,+CAEA,iCAGA,sCAGA,wBACA,EACA,CASA,CACA,aACA,WACA,aAEA,YACA,oBACA,gBAEA,yBAEA,wCACA,8CAEA,uCACA,GACA,CAUA,CACA,eACA,WACA,oBAEA,+BACA,4BACA,IAGA,WACA,MAEA,iBACA,IAmBA,+DA/TA,MAiCA,EAkBA,IAjBA,CACA,OAiBA,aACA,KAGA,0CACA,OAGA,SACA,aAIA,gCAGA,WACA,YAEA,4BACA,GAQA,EA5CA,SACA,KA8EA,aAEA,OAMA,gBAIA,gIAIA,qEAEA,sBACA,EAQA,EAxGA,aAyGA,eAEA,KACA,WAGA,+BAIA,oCAEA,EACA,2BAMA,oBAJA,gBAKA,MAGA,sBACA,MAOA,EAvIA,gBAwIA,aAEA,uBACA,KAQA,EAhJA,gECfA,QACA,WACA,8BACA,EAEA,iBCRA,iBACA,WACA,aACA,4BACA,cAEA,wCCHA,SACA,WACA,gBACA,OAEA,uBACA,CAEA,wCCnCA,GA8BA,IA8GA,aACA,gBAOA,YACA,KACA,uEAAI,MAGJ,mBACA,GA3HA,OAOA,2BAOA,eAQA,OAYA,oBACA,CASA,kBACA,wDACA,IASA,YACA,gBACA,sBAEA,GACA,CAOA,iBACA,mBACA,eAEA,UACA,MAoCA,wCC3IA,OAWA,KAEA,WASA,KA0CA,IAzCA,KAQA,qBACA,aAOA,sBACA,KACA,yEAAK,QAIL,4BAEA,kBAEA,kBACA,yCAGA,UACA,EAOA,mBACA,mBACA,EACA,kBCnDA,iBACA,WACA,kBACA,eACA,SAEA,wCCnBA,QAmBA,IACA,OAIA,cAQA,YAQA,UACA,aASA,kBACA,OACA,6CAGA,YACA,IAKA,mBACA,mBACA,yBAEA,GAQA,yBACA,OACA,EAcA,gBACA,gBACA,0BAEA,GACA,CAOA,QACA,gBAEA,8BACA,4BAGA,eACA,EAaA,cACA,gBAEA,qCACA,4BAGA,4BAEA,oBAAkB,iBAA6B,OAC/C,wFAGA,QACA,EAOA,SACA,gBAEA,4CAGA,mBAEA,MACA,CASA,uBACA,OACA,0BAUA,uBACA,OACA,EACA,QAEA,8CC4fA,eACA,SACA,4CACA,SAEA,QACA,sCAEA,OAMkB,CAClB,eACA,iBACA,SACA,6BACA,GAKY,CACZ,aAEA,OACA,4BAGA,cACA,QAIA,yDACA,6CAntBA,QA4BA,KACA,mBAeA,mBACA,IAQA,kBAQA,uBACA,YAEA,WASA,QAEA,aACA,yBASA,oBAEA,8BAEA,yBACA,yBACA,sBACA,QAQA,iBAEA,qBAEA,0CACA,6BAUA,oCACA,IAQA,iBACA,uBACA,MAQA,cACA,OACA,0BAWA,aACA,OACA,yBAIA,2BAFA,IAWA,SACA,MAEA,SACA,oBACA,6BAKA,uDAIA,kCACA,iCAGA,0CAGA,0CAEA,gBACA,CAUA,kBACA,4CACA,EAQA,YACA,uBACA,EAQA,iBACA,+BACA,EAOA,cACA,8BACA,WAOA,oBACA,CACA,4BAGA,SACA,2BAKA,kCACA,YAEA,EAUA,iBACA,mBAEA,UACA,uDAGA,WACA,sDAEA,UAQA,gBACA,IACA,iBACA,8CAMA,0BACA,wBACA,OAEA,uBACA,WAAuB,IAAc,KAGrC,UACA,EAEA,CACA,MAEA,wBACA,EAQA,gBACA,OACA,WAGA,qBACA,WAGA,oCACA,EASA,kBACA,+BAEA,MACA,2BACG,GACH,0BAEA,qBAEA,EAWA,oBACA,6BACA,YAEA,MAEA,eACA,YAEA,+BACA,GACA,IAGA,UACA,EASA,mBACA,sCAGA,MACA,cACA,sCASA,YACA,cACA,oCASA,+BACA,EAUA,sBACA,6BAEA,gBAAsB,MAAqB,EAC3C,6BAGA,oCACA,EAUA,aACA,kBACA,IAIA,mBACA,EAIA,yBACA,KAIA,8EACA,oCACA,KAIA,6BACA,8CACA,EAKA,2BACA,4BACA,GAKA,6BACA,iDACA,EAIA,SACA,QAWA,eACA,+BACA,uCACA,GAWA,kBACA,+BACA,0CACA,GAWA,eACA,aACA,yBACA,GAIA,SACA,QAOA,gBACA,sBACA,MAeA,cACA,kCAEA,kBACA,qBAEA,eACA,wBAEA,GACA,yBAEA,EASA,YACA,yBACA,EAOA,gBACA,qBACA,MAWA,eACA,aACA,wBACA,GAIA,SACA,QAWA,kBACA,+BACA,yCACA,GAWA,mBACA,oBACA,kBAEA,UACA,YACA,SAGA,OACA,MAEA,OACA,KASA,uBACA,8BACA,EAQA,qBACA,mCACA,EAQA,wBACA,sCACA,EAQA,uBACA,8BACA,SAQA,MAMkB,gCCxoBlB,aACA,IAEA,MACA,uBAaA,wBACA,qBACA,uBAGA,iBAhBA,gBAOA,0DAAwE,CAGxE,cAOA,EAmBA,CAwEA,aACA,gBACA,WA8BA,2BAvLA,IAgFA,WACA,OACA,yBAGA,IACA,mCACA,qBACA,EAQA,EAvEA,IAwEA,WACA,WAEA,cACA,KACA,2CAIA,IACA,GAjFA,QAmFA,UACA,SACA,WACA,WACA,cACA,aACA,aACA,SACA,SACA,OACA,OAIA,OAGA,YACA,cACA,YAIA,mBAAqB,GAAY,UACjC,6BAEA,sBACA,CAGA,WAAqB,GAAY,MACjC,YAIA,YAAsB,IAAa,OACnC,mBAGA,QACA,GA3HA,OAUA,gCCtBA,qBACA,QACA,MAEA,iBACA,SAEA,aACA,SACA,UACA,GAEA,gBAEA,cAEK,IACL,gBAEA,EACA,OACA,EAEA,iBAxBA,4BCbA,qBAqBA,IACA,mBAOA,iBACA,OAOA,gBACA,EAKA,iBACA,kBACA,MAKA,MACA,OACA,SAKA,QACA,6BACA,gBAOA,SACA,aAEA,4BAEA,KACA,CAQA,mBACA,uBACA,WACA,8DCnFA,OAiBA,IACA,OAOA,iBAOA,aAOA,cACA,CASA,gBACA,uBACA,QAGA,wCACA,IASA,iBACA,uBACA,QAGA,0CACA,IAQA,gBACA,OACA,gBAQA,cACA,oEAEA,gCACA,CAQA,WACA,oBACA,IAQA,sBACA,YAEA,0BACA,YACA,WAEA,kBAIA,YACA,EAQA,gBACA,4BAEA,iBACA,wBAEA,EACA,CAkBA,2BAA4C,KAC5C,iBAEA,qBACA,iBAEA,KACA,QAOA,eACA,uBACA,0BAEA,iCAAqC,CAErC,gBAQA,WACA,8CACA,MAYA,YACA,OACA,6BAYA,WACA,OACA,4BASA,eACA,iBACA,SAIA,0BACA,8CAIA,qBACA,mBAGA,4BAEA,MAEA,UACA,OAEA,SAEA,gBACA,oBACA,EAEA,UACA,uBACA,EAEA,MACA,YAIA,aACA,SACA,SAGA,sBACA,uBAEA,2BACA,OAAG,iBACH,mBAEA,2BACA,OAEA,mBAGA,0BACA,OAoBA,qBACA,gBACA,kCAEA,SAEA,KACA,wCACI,mBACJ,qCACI,MACJ,mCACI,GACJ,MAGA,kBAEA,EAQA,sBAEA,SACA,2DAGA,cAOA,uFAAgG,MAGhG,kCACA,EAQA,uBAEA,SACA,uCAGA,oBAOA,yFAAkG,MAGlG,4BACA,MAQA,6BACA,4BACA,OACA,MAOA,sDChYA,SAmBA,IACA,mBAIA,eACA,OAQA,YASA,kBAiBA,sBAQA,2BASA,mBAQA,oBAQA,yBAQA,wBASA,6BAWA,+BACA,QACA,eACA,aACA,wCAUA,oBAEA,mCACA,KAEA,oBACA,OACA,CACA,kCACA,qDACA,0CACA,0BAEA,kDACA,4BACA,MAEA,iCAGA,sBACA,CACA,KAEA,kBACA,CAGA,qCACA,CACA,WAMA,gBACA,qBACA,GACA,gBAEA,mBAGA,MACA,oBAIA,aAEA,gBASA,KAKA,OACA,eAEA,uCACA,0BAEA,+BAEA,yDAGA,0CACA,GAEA,yBACA,OAKA,QACA,cACA,OAcA,yBACA,MACA,IACA,yBAEA,MACA,eAGA,gBACA,qBACK,MACL,aAAe,IAAU,KAAkB,MAAY,MAGvD,EAEA,CACA,QACA,uBCtPA,iBACA,aACA,YACA,MACA,eAEA,OACA,iBAEA,SACA,EAEA,qECpBA,QAmBA,IACA,mBAWA,qBACA,OAOA,8CAOA,gBAOA,6CAUA,QACA,WAKA,WACA,OACA,MAMA,QACA,wFACA,oCAEA,SACA,CAgBA,qBACA,+EACA,QAMA,cACA,+EAEA,gGACA,0BAEA,SACA,CAKA,WACA,2BACA,6BACA,6BACA,6BAKA,eAMA,WACA,KAEG,4GAMH,mBACA,KAEG,iHAMH,iBACA,KAEG,wJACH,kGACA,uCAEA,wEAMA,iBACA,KAGA,sGAGA,wFAEA,sBACA,qBACA,qBAEA,EAKA,uBACA,OACA,sCASA,qBACA,qCACA,mCAEA,oCAEA,sBACA,aAGA,aACA,CACA,yBC7MA,qBAeA,IACA,mBAMA,eACA,CAUA,mBACA,CAOA,QACA,mBACA,KAKA,MACA,OACA,SAOA,WACA,aACA,KAEA,YACA,yBAEA,iBACA,CASA,aACA,sBAIA,8BACA,KACA,6DC9EA,KAMA,mEACA,SAIA,oCACA,SAIA,8CAGA,8BAGA,mCAGA,mCAQA,QACA,sBACA,kBAEA,gFCyOA,aAEA,KAQA,+BACA,UAgDA,iCACA,UA+BA,iCACA,UAEA,OAK2C,CAC3C,gBAEA,cACA,+BACA,YAGA,uBAMA,4BAIA,uGAMA,uBAGA,2HAEA,qCAMA,gBAKA,iFACA,sBAEA,WAEA,cAGA,KACA,+CAGA,kCAGA,OAGA,mCACA,oBACA,EACA,EAMa,CACb,aACA,qBACA,mBAmBa,CACb,gBAEA,OAMA,qBAGA,8EAAiB,CACjB,UAEA,SACA,gDAGA,sBACA,IACA,gCACG,WACH,qBAAqB,cACrB,oBAEA,sBAEA,qEAEA,GACA,CAOkB,CAClB,mBACA,WACA,WACA,KAEA,QACA,aAIA,eAEA,GACA,WAEA,EAuC8E,CAC9E,aACA,IAEA,8BAIA,oBACA,6CAEA,4BACA,mCACA,EACA,EACA,EAOkB,CAClB,eACA,WACA,WACA,MAOA,KACA,mDAEA,cACA,YAGA,sBACA,QAEA,UAEA,EAO4E,CAC5E,eACA,gBACA,WACA,MAIA,WACA,qDACA,uBAIA,GACA,kBACA,OACA,KAEA,EAEA,EACA,yBApnBA,QAYA,IAEA,eACA,uBACA,6BAUA,qBAeA,SAEA,aACA,GAOA,wCANA,cACA,GAAI,EAEJ,QAKA,mBAEA,wBAgBA,iBAGA,sGACA,CACA,cAEA,qBACA,cACA,EAEA,QACA,eAIA,gBACA,aACA,6BAEA,GAGA,YACA,CAqBA,YACA,kBAMA,iBAGA,uFAMA,qBAGA,iEAEA,mBAEA,kBACA,UAMA,iBAEA,yEAEA,cASA,2BACA,SAAoB,QAEpB,eACA,WACA,EAaA,GACA,IAEA,cACA,gBACA,EACA,iBAEA,EAYA,cAEA,UACA,OAGA,oBACA,UAEA,eACA,OAMA,iBAGA,6EACA,eACA,aAEA,oBAEA,KACA,OACA,WACA,OAEA,YAEA,KACA,eAGA,kBACA,kBACA,wBAEA,UAEA,YACA,EACA,EACA,uBACA,sBACA,SAEA,KACA,UAEA,OAkBA,OAKwD,EAsWxD,WAeA,qBCroBA,aAIA,CA6CA,eACA,aACA,OACA,OACA,QAGA,QACA,SACA,8BACA,uCACA,KAEA,wCACA,KAEA,gBACA,KAEA,CACA,aACA,yCACA,wBAAmE,+DAEnE,GACA,MArEA,qBACA,IAGA,kCACA,4BACA,WACA,YACA,kBAAmC,MAEnC,IAEA,CAAG,QACH,GAGA,mBACA,CACA,gCACA,aACA,QAAgB,WAAiB,OACjC,cACA,GACA,uBAEA,aAAY,MAAoB,WAChC,SAKA,8BACA,YACA,QACK,EACL,8BAEA,YAEA,GACA,CACA,EACA,2CC5CA,CA6EA,eACA,WAAe,MAAmB,WAClC,SACA,SACA,SACA,GACA,iBAAiB,YAA2B,OAC5C,uBAEA,IAAQ,eAAuB,OAC/B,8BAEA,GAAG,KACH,QACA,QAAiB,YAAuB,OACxC,wBAEA,aAA2B,qBAC3B,EACA,CACA,EAEA,aACA,QACA,MACA,OAAe,MAAiB,WAChC,SACA,OACA,OACA,OACA,QACA,OAAc,wBACd,MACA,mBAGA,iBAHgC,YAEhC,KAEA,OACA,GAEA,eACA,WACA,gBACA,kBAEA,mIACA,MACA,mBACA,IAEA,+BAEA,2BAEA,sBALG,mBAMD,WACF,oCAEA,wBAEA,4EAEA,aACA,0BACA,mBACA,GACA,iBAEA,GAEA,aACA,8BACA,6BAEA,iBACA,WACA,GACA,EAEA,aACA,8BACA,4BACA,uBAEA,mBACA,WACA,GACA,EAEA,eACA,mCACA,oBACA,GACA,GAEA,eACA,SAEA,iBACA,OACA,cACA,oBACA,sBACA,KAAE,QACF,WACA,wBACA,wCACA,wCACA,yBACA,6BACA,mBACA,eACA,GACA,KACA,4BACA,KAEA,QACA,iBACA,eACA,GACA,EAGA,YAEA,cACA,MACA,sDACA,UACA,WACA,EACA,KAEA,IACA,EAWA,mBACA,cAEA,SACA,oCACE,OACF,+BACA,OACA,iCACA,MACA,0BAEA,kBAEA,EACA,EAEA,eACA,SACA,QAEA,SACA,0BAGA,KACA,gCACE,MACF,QACA,4BAEA,kDACA,GACA,EAEA,iBACA,SACA,QAOA,8CAEA,4BACA,SAGA,IAEA,OAAuD,6GAGvD,0BAA6B,MAE7B,iBAEA,gCAEA,GACA,uBACA,GA7RA,GACA,mBACA,IACA,oBACA,8CACA,YACA,CACA,CACA,YAMA,gDACA,IACA,gBACA,IACA,wBACA,OACA,4CAEA,MACA,EACA,CAAE,aACF,+BACA,EACA,KACA,OACA,EACA,cAEA,uBACA,+BACA,iDAGA,kEACA,yCAIA,uDAGA,qDAGA,oDAEA,kBACA,cAEA,cACA,QACA,QAAgB,MAAmB,WACnC,SACA,UACA,OACA,cACA,GACA,MACA,UACA,QACA,EACA,WAAgB,SAAsB,OACtC,YACA,eACA,YAAkB,cAA2B,OAC7C,cACA,kBACA,GAEA,CACA,GA2IA,gBACA,IAEA,0BACA,aACA,yBACA,KACA,CAAC,qBChOD,qBAeA,IACA,OAKA,eASA,kBA8CA,CAQA,SACA,kBAEA,+CAGA,mBAEA,MACA,CAOA,uBACA,OACA,kCASA,mBACA,mBACA,YACA,sCC2OA,qBACA,OACA,CACA,cACA,MACA,OACA,mBACA,eACA,SAGA,GAsCA,gCA9YA,OAiBA,GACA,OAmBA,aAA0B,KAC1B,sBAMA,4BAGA,yHAEA,2BACA,uBACA,KACA,wFAAK,CAUL,6BAaA,gCAWA,qBACA,uCAEA,uFAUA,oCASA,kCAWA,kCAQA,wFAQA,wEASA,uCACA,MAKA,oBACA,OACA,KAcA,QACA,WAEA,EACA,UACA,gBAEA,gBAAM,QAAc,cACjB,oBAEH,IACA,kBACA,sBAEA,EAQA,OACA,OACA,+BAEA,aAEA,WAUA,QACA,cACA,uCACA,iBAGA,gDACA,gBAAW,CAIX,uEACA,aAAW,CAGX,yCAEA,yBACA,iBAEA,UAMA,sBALA,uBAEA,iBAKA,yBACG,uBACH,OAEA,UACA,mBACI,MACJ,SAEA,iEACA,0BAGA,cACA,MAEA,cAEA,gCAEA,oBACA,gBAEA,iBACA,EAEA,eACA,QACA,uBACA,wBAEA,YACA,sBAEA,2BAGA,EAUA,YACA,cACA,uCACA,iBAGA,mCACA,mBAAW,CAIX,0EACA,aAAW,CAIX,yCAEA,0BACA,cAEA,cACA,uBAYA,yBAEG,mBAbH,yBACA,sBAEA,OACA,sBAEA,+BAGA,wBAKA,OAEA,UACA,mBACI,MACJ,SAEA,uEACA,4BAGA,mBACA,CAEA,cAEA,kCAEA,oBACA,gBAEA,iBACA,EAEA,eACA,oBACA,wBAEA,8BAEA,EACA,sCCwEA,aACA,iDAKA,qBAzaA,QAcA,IACA,OASA,sBAMA,mCAOA,+DACA,EAaA,qBACA,eAA0B,iBAC1B,qBAOA,kBACA,gCACA,IAQA,aACA,qCACA,MAOA,WACA,mBACA,IAkBA,cACA,4CAAsE,WACtE,gDAGA,iCACA,iCAGA,gCACA,8BAGA,iBACA,EAkBA,aACA,0CACA,wCAAkE,WAClE,iBACA,cAGA,0BACA,sBAGA,YACA,6BAGA,iBACA,EAQA,WACA,iEACA,IAQA,oBACA,+CACA,IASA,iBACA,gEACA,IA8BA,iBACA,MAEA,iCAGA,4BAGA,kCAGA,gCAGA,8BAIA,gCAGA,OACA,CAuBA,mBACA,2BAGA,YACA,aAEA,mCAGA,aAGA,+BAGA,WAGA,aACA,EAGA,OACA,KAWA,WAAwB,KACxB,qBAEA,aACA,EAgBA,WAAwB,KACxB,cACA,OAEA,oCAEA,eACA,WAEA,IAeA,eAA4B,KAC5B,cAEA,qBAEA,WAEA,qBACA,WAEA,YAQA,kBACA,uDACA,MAWA,4CACA,WACA,gBACA,aAEA,GAQA,0BACA,2BACA,IAUA,uCACA,SACA,mBAEA,uCACA,EASA,mBACA,iDACA,WAQA,mBACA,4DACA,EACA,MAEA,iBC1ZA,iBACA,eACA,QACA,MAEA,OACA,iBAEA,WACA,EACA,SAEA,iBACA,OAEA,kBACA,OACA,YAEA,SACA,EAEA,iBC9BA,aACA,MAYA,uBACA,aACA,kBAXA,iBAYA,IACA,+BACA,qBACA,CAEA,+ECrBA,QAsBA,GACA,mBAQA,mBACA,OAQA,wCAQA,+BACA,GAKA,WACA,OACA,QAMA,QACA,4CAEA,8CACA,YAMA,cACA,oEACA,EAKA,WAKA,cACA,2CAEA,6CAEA,SAAU,CACV,QAKA,uBACA,OACA,wCASA,qBACA,IAEA,qBACA,QAEA,yBAGA,wBAIA,gDACA,YACA,6DCzHA,OAgBA,KACA,mBAUA,mBACA,yBACA,mCAEA,gBAmBA,QACA,sBAKA,WACA,OACA,QAQA,2BACA,iCACA,EAQA,4BACA,6BACA,CAMA,cACA,sFACA,EAMA,QACA,mDACA,iEAEA,gBACA,CAKA,WAEA,6BACA,6BACA,eAEA,+DAKA,kEACA,+CAEA,IAGA,cACA,UAKA,uBACA,OACA,wCASA,qBACA,qCAEA,+BAEA,mEACA,2BAEA,oBACA,CACA,yBClJA,aA+EA,YAEA,8BACA,aArCA,IACA,mBAMA,mBACA,WAQA,wBACA,CAKA,aACA,OACA,mDAIA,mCAFA,EAGA,MAIyB,wDCvDzB,aACA,4BAEA,iBAAgC,CAEhC,gBACA,oBACA,oBAEA,gBAAsB,IAAa,KAAQ,GAC3C,CACA,GAOA,EAzCA,IA0CA,WACA,0CACA,EAQA,EA1CA,IA2CA,WACA,0BACA,iBA3CA,eAUA,0BCtBA,aAcA,IACA,WACA,sBACA,8FCTA,QAWA,eACA,QACA,IACA,QACA,OACA,KACA,OAEA,KACA,EACA,OAEA,eAbA,IAcA,uBACA,MACA,kBAEA,GACA,OACA,SACA,IAEA,aAEA,EACA,kBACA,SACA,YAEA,kBACA,WACA,aACA,OACA,eACA,UAGA,OACA,UAEA,UACA,EACA,YACA,SACA,UAEA,UAEA,GACA,OACA,EAEA,4ECvEkB,kBCuBlB,iBACA,WACA,YACA,kBAEA,wCCzBA,aAUA,cAmBA,aACA,WACA,OACA,wCACA,IA9BA,iBAgCA,iBCIA,aACA,QAWA,WACA,iBACA,EAYA,WACA,gBACA,EAGA,2FCzEA,GAmFA,IA8TA,UACA,WACA,EAUA,EAzUA,OAIA,cAOA,MAQA,2BACA,IASA,UACA,0BAEA,EACA,IASA,eACA,mBACA,MACA,eACA,WAGA,MACA,IASA,iBACA,mBACA,MACA,gBACA,WAGA,MACA,IASA,cACA,mBACA,MACA,cACA,WAGA,MACA,IAmBA,gBACA,4BAEA,EACA,IAoCA,aACA,wDAEA,2BACA,aAEA,4DAEA,6CAA2E,CACvE,cAEJ,8DAEA,kDAA2E,CAC3E,gEAA8E,CAC9E,gEAAgF,CAEhF,mEAAkG,CAElG,+CAEA,gDAA0E,CAC1E,8DAA+E,CAE/E,iEAA6F,CAG7F,aA2CA,WACA,gCACA,IAMA,mCACA,KAIA,+JAEA,yCAEA,gDAA+E,CAC/E,8DAAkF,CAClF,YACA,CAiCA,iBACA,IAMA,sCAIA,8HAEA,GAIG,EAGH,mBAEA,YACA,OAAa,aACb,EAGA,aACA,OAAa,aACb,EAIA,EAGA,wCACA,SAAoB,+BAEpB,0DACA,sDACA,sDACA,EACA,CAOA,iCCwEA,mBACA,gBACA,aACA,WAGA,GACA,MAEA,sBACA,6BAEA,aACA,cACA,mBACA,WAGA,wBACA,2BAEA,MAMA,+CAnfA,IAoFA,IAgaA,UACA,WACA,IAjaA,OAIA,cAOA,MAQA,qBACA,QASA,UACA,0BAEA,EACA,IAWA,eACA,kBAAqB,MACrB,GAYA,wBACA,IACA,kBAEA,YACA,EAgBA,QACA,oBACA,iBAGA,oBACA,SACA,EACA,oBAGA,OACA,IA+BA,aACA,oCACA,oBAEA,EACA,IAuBA,gBACA,oCACA,qBAEA,EACA,IAgBA,aACA,8BACA,kBAGA,4BAGA,UAKA,iBAEA,kDAGA,kBAEA,uCAAwC,mCACxC,UAIA,4CACA,OAKA,wBAGA,uCACA,oBACA,oBAGA,aAGA,eAGA,EACA,KACA,CACA,CAEA,EACA,SAiBA,iBACA,8BACA,kBAGA,4BAGA,UAKA,iBAEA,oCACA,OAKA,WACA,8CAIA,2CAAsF,aAGtF,kBAGA,GACA,KACA,CACA,CAEA,EACA,MAmCA,YACA,8BACA,gBAGA,8BAGA,WACA,EAGA,UAGA,oBACA,cAGA,yBAAkD,kCAIlD,kCACA,sDACA,KAKA,kGAEA,qCAIA,iBAGA,EAEA,MACA,CAEA,EACA,SASA,kBAEA,yBAGA,mBACA,kCACA,cAEA,2BAGA,2BACA,sBAA8C,CAE9C,YACA,CAIA,iCC3LA,aAEA,OACA,4BAGA,cACA,QAIA,yDACA,2BAxSA,QAqBA,IACA,OAOA,eAQA,iBAQA,uBAEA,KACA,yBAEA,EAOA,oBACA,aACA,aAQA,iBACA,uBACA,MAQA,gBACA,uBACA,SAQA,cACA,OACA,oBAQA,WACA,OACA,KAQA,aACA,OACA,KAUA,MACA,OACA,qBAQA,YACA,+BACA,EAOA,cACA,8BACA,WAQA,iBACA,oCACA,EAUA,uBACA,0CACA,EAOA,UACA,CACA,QAqBA,iBACA,qCACA,EAOA,kBACA,qCACA,EASA,oBACA,KAEA,eACA,YAGA,kCACA,EAUA,sBACA,sCAEA,eACA,YAGA,WACA,EAQA,SACA,IAEA,wBACA,mBAGA,gBACA,EASA,mBACA,IAEA,kBACA,KAEA,yBAGA,wBAIA,iBACA,EACA,MAKY,wCC3RZ,QAkBA,GACA,OAMA,eAOA,eAQA,OACA,YAYA,SACA,MACA,YAQA,UACA,MACA,YAKA,UACA,MACA,eACA,eASA,QAEA,+ECpFA,QAiBA,GACA,OAmBA,aAA0B,KAC1B,sBAMA,4BAGA,2IACA,iCACA,KACA,uFAAK,aAeL,0CASA,qBACA,uCAEA,iFASA,sCASA,oCASA,kCAUA,kCAQA,wFAQA,wEACA,IAKA,oBACA,OACA,KAcA,QACA,SAEA,EACA,UAEA,UAAM,QAAc,cACjB,oBAEH,IACA,kBAEA,EAQA,OACA,OACA,+BAEA,aAEA,WAUA,QACA,mCACA,uBACA,aAGA,wCACA,iBAAW,CAIX,uEACA,aAAW,CAIX,YAGA,uBACA,MAEA,6CAEA,QAGA,mBACA,OACA,qBAGA,uBACA,iBACA,UAKA,qBAHA,iBAKA,+CACG,uBACH,SACA,oCACA,iBAEA,OAEA,qBACA,SAGA,iBACA,0CACA,qBACA,qBAGA,MAGA,uBAEA,uCAEA,EAAG,uBACH,IAEA,WACA,mBACI,MAEJ,uEAEA,aACA,MAEA,4BAEA,oBACA,gBAEA,uCACA,EAEA,0BACA,iBAEA,OACA,sBAEA,iDAGA,EAUA,YACA,mCACA,uBACA,aAGA,2BACA,mBAAW,CAIX,0EACA,aAAW,CAIX,YAGA,uBACA,MAEA,gDAEA,QAGA,8BACA,EACA,4BAGA,kBACA,iBACA,WAUA,uBAEA,+CAEG,mBAbH,0BAEA,OACA,sBAEA,qDAGA,wBAMA,SACA,2CACA,sBAEA,OAEA,yBACA,SAGA,kCACA,+BAEA,mCACA,YACA,0BACA,EAEA,QAGA,8BAEA,uCAEA,EAAG,uBACH,IAEA,6BAEA,oEAEA,aACA,CACA,QAGA,YAEA,6BAEA,wBAEA,uCACA,EAEA,2BACA,iBAEA,+CAEA,EAaA,8BAKA,oBAEA,qDACA,sFACA,8BASA,+BAPA,wBAEA,IAMA,qGACA,+BASA,gCAPA,wBAEA,KAMA,CACA,cACA,MACA,OACA,mBACA,eACA,SAGA,GACA,MAwCA,wCC7dA,SACA,aACA,SACA,sBACA,QAEA,gDCXA,MACA,qDASA,YACA,aACA,aACA,GAEA,qBACA,mCACA,gCAGA,uBACA,yBACA,EAEA,wCCzBA,QASA,WACA,iCACA,SAEA,WACA,0BANA,QAOA,CAEA,iBCWA,iBACA,aACA,0BACA,CAEA,wCCpCA,SAuCA,GACA,OASA,eASA,aAQA,0BACA,EAWA,YACA,IAEA,YACA,aAGA,SAMA,yDAGA,wFACA,EAYA,kBACA,IAEA,YACA,aAGA,SAMA,+DAGA,wFACA,EAWA,iBACA,OACA,EAUA,gBACA,aACA,6BAIA,WADA,IASA,kBACA,cAEA,kDACA,IAQA,sBACA,cAEA,kDACA,IASA,WACA,OAEA,YACA,YAGA,aACA,EASA,eAEA,mBACA,KAIA,yBACA,IAOA,QACA,mBACA,OAkBA,UACA,MACA,gBAEA,OACA,oBACA,iBAGA,aACA,EAWA,gBAA0B,gBAAyC,gBACnE,MACA,wCAEA,OACA,qCACA,OAGA,aACA,EAKA,SACA,iCACA,MAQA,gBACA,wBACA,EAQA,gBACA,wBACA,EAUA,gBACA,oBACA,SAOA,mBACA,oBACA,MAQA,kBACA,mBACA,EAOA,mBACA,sBACA,EAQA,mBACA,2BACA,EAKA,kBACA,aACA,OAOA,SACA,IAEA,yBACA,6BAGA,SACA,CAqBA,sCCkUA,eACA,cAIA,WAIA,qDACA,OAGA,CACA,eACA,+BAAkD,gBAClD,mCAIA,gCAEA,IACA,oDA9tBA,SAsBA,KACA,OAIA,cAOA,MAQA,2BAQA,0BACA,IAcA,aACA,0BACA,0CAEA,0CACA,KAEA,OACA,KAWA,YACA,0BACA,0CAEA,4CACA,GAEA,OACA,KASA,kBACA,sBAEA,eACA,wBAIA,WAOA,iBACA,qBACA,MAQA,iBACA,+BACA,kBASA,WACA,uBACA,WACG,YACH,oBAGA,kEACA,OAGA,mCACA,IAEA,qBACA,wBACA,CACA,KACA,KAGA,KACA,EAEA,QAEA,CACA,QAOA,aACA,mBACA,kCAEA,EAYA,gBACA,OAEA,uBACA,gCACA,YAIA,mCACA,IAYA,eACA,OAEA,uBACA,6BACA,UAIA,mCACA,IAWA,mBACA,cAEA,yDACA,IAWA,kBACA,cAEA,sDACA,IAkBA,iBACA,iBACA,6BAEA,2BAA8B,CAC9B,iBAOA,kBACA,CACA,6BACA,4CAA+B,CAE/B,kBAaA,kBACA,cAGA,uBACA,kBACA,oBAGA,6HACA,kBACA,EACA,EAGA,sCAIA,QAEA,+BACA,mBAGA,6BAEA,2BAA8B,CAC9B,kBAOA,SACA,gCACA,WAYA,cACA,wBACA,eAEA,mBACA,GASA,kBACA,cAEA,mBACA,oCAEA,IASA,gBACA,cAEA,kBACA,oCAEA,IAYA,cACA,IAMA,iCAGA,8HAEA,MAIA,gDAEA,oBACA,aAGA,YACA,mDAEA,+BAEA,IAQA,gBACA,wBACA,EAUA,gBACA,oBACA,SAOA,mBACA,oBACA,MAQA,gBACA,wBACA,EAUA,kBACA,uBACA,gCACA,oBAEA,qCAAmC,iBACnC,iBACA,CAWA,mBACA,mBACA,wBAEA,gCAAmC,mBAEnC,kBAYA,kBACA,wBACA,sBAEA,gCAAmC,mBAEnC,kBAWA,mBACA,eAEA,4BAEA,oEAEA,wBAEA,wBACA,YAIA,eAEA,+BAAmC,6BACnC,iBACA,CASA,qBACA,IACA,0BAGA,mBACA,0BACA,kBAEA,2CACA,IAuBA,qBACA,YAEA,yCACA,mBAEA,GACA,SAGA,qBACA,2CACA,aAIA,sBAEA,GACA,SAEA,GACA,CASA,8BACA,YACA,qBAEA,GACA,CASA,cACA,kBACA,oBAGA,+GACA,yCACA,GAQA,eACA,WAAkB,iBAAyB,OAC3C,qCAQA,aACA,KACA,6GAAM,6CAIN,IAOA,YACA,cACA,KAQA,mBACA,MACA,4BAEA,WAwBA,QAEA,WAGA,sBCtsBA,qBAuCA,GACA,OAWA,mBAOA,kBAEA,WAMA,yBAGA,4FAMA,yBAQA,iGAQA,qBACA,CASA,kBACA,yCACA,gDASA,iBACA,kBACA,MASA,gBACA,gCACA,qCAaA,gBACA,wCACA,UAQA,aACA,sBACA,MAQA,WACA,sBACA,IASA,eACA,sBACA,QAUA,MACA,OACA,cAQA,UACA,uBAEA,gBACA,kCAGA,cACA,CAWA,gBAA0B,gBAAyC,gBACnE,MACA,wCAEA,OACA,qCACA,OAGA,aACA,EAQA,gBACA,mCACA,EAQA,gBACA,mCACA,EAUA,gBACA,sBACA,eAOA,mBACA,sBACA,kBACA,sCCjLA,aACA,gDACA,CAUA,CA0DA,eACA,6BACA,+CAEA,6DACA,yBACA,iCAEA,0BACA,YACA,oBACA,KACA,eACA,6BACA,EACA,CACA,CACA,wDA1EA,WACA,4BACA,EAWA,MACA,WACA,UACA,gBAEA,KAEA,IAEA,EAxHA,IAqIA,aACA,aAEA,SACA,gBACA,kBAGA,kBACA,EAOA,EAzGA,IA0GA,WACA,gBACA,EAEA,EAhGA,SAbA,yBACA,uBAEA,aACA,GAaA,0BAJA,QAKA,cAIA,EACA,SAEA,UAAgB,IAA0B,EAC1C,OAaA,SAqCA,WAWA,+CCpIA,QAmCA,KACA,mBAqBA,eACA,OAQA,QACA,aAKA,WACA,qEAEA,4BACA,0BACA,MACA,2BAEA,EAAI,EAAG,iBACP,YACA,EAWA,YACA,MACA,wDAEA,GACA,4EClGA,OA+BA,IACA,OAIA,cAOA,MAQA,gBAQA,2BAQA,oCACA,EAeA,cAAoC,KACpC,cACA,yCAEA,aACA,SAQA,aACA,aACA,OAQA,yBACA,aACA,mBAWA,aACA,kBACA,aAEA,+CACA,qCAEA,oCACA,EAQA,YACA,kBACA,aAEA,+CACA,uCAEA,kCACA,EAQA,kBACA,6CACA,WAOA,iBACA,qBACA,MAOA,iBACA,+BACA,kBAQA,sBACA,aACA,mBAGA,gBACA,IAiBA,cACA,kBACA,oBAGA,gEACA,6BACA,YACA,SAOA,aACA,mBACA,kCAEA,EAUA,gBACA,OAEA,uBACA,gCACA,YAIA,mCACA,IASA,eACA,OAEA,uBACA,6BACA,UAIA,mCACA,IASA,mBACA,cAEA,yDACA,IASA,kBACA,cAEA,sDACA,IASA,WACA,mBACA,OAGA,oDACA,mBAGA,+BACA,WACG,YACH,oBAGA,kEACA,OAGA,mCACA,IAEA,qBACA,wBACA,CACA,KACA,KAGA,KACA,EAEA,QAEA,CACA,QAOA,kBACA,cACA,cACA,qBAEA,UAYA,eACA,MAEA,0BACA,kBACA,oBAGA,gEACA,EAEA,2BACA,YACA,SAOA,SACA,gBACA,mCAEA,mDACA,WAYA,cACA,wBACA,eAEA,mBACA,GASA,kBACA,cAEA,mBACA,oCAEA,IASA,gBACA,cAEA,kBACA,oCAEA,IAYA,cACA,IAMA,iCAGA,6HAEA,MAIA,gDAEA,oBAEA,MACA,mDAEA,+BAEA,IASA,qBACA,IACA,0BAGA,mBACA,0BACA,kBAEA,2CACA,IASA,8BACA,YACA,kBAEA,GACA,CAWA,cACA,mBACA,4BAQA,YACA,KACA,4GAAM,gCAKN,0CACA,GACA,QAEA,WAUA,oBC1hBA,aAwBA,IACA,aACA,6BAEA,kBAAiB,IAAY,EAC7B,eAEA,SAKA,sBAEA,OACE,kBAEF,OAGA,SAEA,WAIA,iBCzBA,iBAAgB,wECzBhB,OA4BA,GACA,OACA,cAQA,UAQA,oCAQA,uBAQA,gCACA,IAOA,OACA,uBACA,iBAGA,qFAAkE,CAClE,wDAAuD,CACvD,mCACA,EAOA,UACA,UACA,2BAGA,sBACA,wBACA,yBAEA,GAQA,UACA,mBAEA,2CACA,OACA,YASA,QACA,2CACA,qBACA,UACA,YAAG,EACH,EASA,QAEA,gBACA,sDCrIA,QAyBA,IAqFA,IApFA,KAIA,cAOA,8BAQA,yBACA,IAOA,YACA,4CACA,YACA,EACA,EAWA,SACA,kBACA,0BAEA,GACA,SAEA,2BAEA,GAQA,SACA,kBACA,0BAEA,OACA,EAGA,qBACA,WACA,GACA,mBACA,iBAGA,GACA,QAKA,UACA,qBACA,oBACA,eACA,yCC3GA,aAGA,cAWA,mBACA,eACA,SACA,2BACA,qBACA,WAEA,EAEA,mFClBA,SAaA,iBACA,QACA,IACA,IACA,SACA,OACA,SAEA,WACA,QAEA,GACA,0BAEA,K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A,sBAGA,oEACA,IASA,YACA,IAEA,YACA,qCAEA,GAGA,sBACA,EASA,UACA,IAEA,UADA,eAGA,eACA,sBACA,sBACA,MAEA,EACA,0BAEG,KACH,sBACA,gBACA,MAEA,EACA,QAGA,QACA,MACA,yBACA,+BAGA,IAMA,gBAGA,+DACA,wBAEA,iDACA,mDACA,4CAEA,sBAEA,GACA,CAWA,SACA,0BACA,EAWA,UACA,2BACA,EAWA,YACA,6BACA,EAMA,QACA,UACA,4CACA,0CAGA,WACA,oBAEA,EAiFA,UACA,SAMA,gCAGA,2GAEA,EAOA,SACA,qCACA,GAUA,aACA,CACA,qDAEA,oCAEA,GAEA,EAQA,uBACA,cAKA,6BACA,8BACA,0CAMA,SACA,0CACA,2CACI,OACJ,WAEA,2CACA,2CAEA,cACA,EACA,CAGA,cACA,UAIA,yBAGA,mCACA,+CAEA,GACA,eAEA,EACA,EAKA,oBACA,2BACA,WAeA,QAEA,8CC7OA,aACA,wDACA,OAMoB,CACpB,aACA,sBACA,iBAMA,wBA/RA,QAoCA,KACA,YAAkC,YAkBlC,eACA,WAIA,KACA,0CAIA,4BACA,EAmBA,qBACA,WAGA,WACA,6BAGA,OACA,EAGA,YACA,CAGA,8BACA,EASA,qBACA,wBACA,GAGA,QA+BA,EACA,OAKA,eAEA,iBAGA,kBACA,CACA,EAEA,yBA0BA,QAAkC,KAElC,sBAIA,oDAIA,qCAGA,0CAEA,iBACA,qBAKA,wCACA,EAYA,QAEA,oBAEA,cAMA,4DACA,8BAEA,gBAaA,uBACA,cACA,aACA,EAKA,8BACA,qCACA,6BACA,EAEA,EACA,CAOmB,mBC7QnB,aAcA,IACA,WACA,WAEA,gBACA,KAGA,OACA,qCCVA,aACA,QACA,eAEA,WACA,eACA,SACA,mBACA,GACA,CAEA,6CAZA,KAaA,sBACA,0BACA,oBACA,oBACA,gBAEA,wCCnBA,aACA,QACA,eAEA,uBACA,SACA,cAEA,GAEA,2BAXA,KAYA,qCACA,gBAEA,yBClBA,iBACA,aACA,YACA,MACA,SACA,EAEA,WACA,OACA,SACA,YAGA,SACA,EAEA,iBCjBA,iBACA,aACA,YACA,MACA,WAEA,WACA,YAEA,SACA,EAEA,wCCVA,QACA,aACA,aACA,OACA,yBACA,SAGA,UACA,CAEA,0DCfA,QAeA,eACA,OACA,eAEA,mCAlBA,aAaA,EAMA,WACA,aACA,MAEA,uBACA,cACA,OAEA,IAEA,CACA,OACA,EACA,yBACA,EAEA,wCC7BA,QACA,iBACA,aACA,cAEA,aACA,aAEA,WACA,0BACA,0BACA,EAEA,gDChBA,SACA,WACA,+BACA,EAEA,wCCLA,SACA,aACA,SACA,yBACA,iCACA,UACA,GAEA,iBCXA,iBACA,WAGA,IACA,kBACA,iCACA,QACA,GAAK,UAEL,OACA,EAEA,gECLA,QACA,eACA,cACA,GAEA,qBACA,WACA,wCACA,4BAEA,oBAGA,EAEA,iBC7BA,aACA,aAQA,cACA,WACA,YACA,iDAEA,aACA,CAEA,wCCdA,sBAEA,+BCCA,iBACA,WACA,QACA,YAEA,kCACA,QACA,CACA,GACA,CAEA,wCCUA,SACA,WACA,iBACA,QAEA,0DCJA,QACA,WACA,kDACA,EAEA,iBChCA,iBA6BA,WACA,OACA,kCACA,GAJA,gBAMA,yDC9BA,aAMA,+BAGA,aAGA,wBAOA,YA8BA,aACA,WACA,cACA,eAjDA,4BAkDA,GAEA,wBACA,MACA,SAEA,0CACA,kBACA,iDACA,CAEA,0EC1CA,QACA,WACA,WACA,QAEA,eACA,iCACA,aACA,GAGA,2BAFA,KAGA,yBACA,4BACA,GACA,EAEA,uDC5CA,GAqBA,IACA,eACA,MAEA,qBACA,iBAAkC,cAClC,6BAEA,WACA,UACA,UAEA,kBACA,4BACA,mCAEA,cAAwB,4BACxB,iBACA,qBAGA,QAGA,cACA,aACA,MAEA,eACA,qBAEA,GAEA,OACA,kCC4aA,eAEA,iBAAqC,iBAErC,4BAEA,cACA,MACA,iBAEA,OACA,YAIA,QASA,CA0CA,aACA,iBAEA,uBACA,mDA3fA,WACA,kBACA,qBACA,OACA,gBAEA,MAIA,oBAIA,mDAEA,oCACA,gBACA,GACA,CAWA,MACA,UACA,kBACA,qBAIA,mDACA,wBAEA,mBACA,GACA,CAcA,MACA,WACA,kBACA,OAEA,kBACA,UACA,cAEA,cACA,qBAEA,KACA,qBAGA,OAIA,sBAIA,wBAEA,kDAEA,WACA,sDAEA,GACA,CAiCA,MACA,WACA,sBAA+D,SAE/D,oBACA,yBAIA,aAAS,OAAa,kDAEtB,iDACA,GACA,CAkCA,MACA,WACA,sBAA+D,CAE/D,oBACA,yBAIA,aAAS,CAAM,gDAEf,kDACA,GACA,CA4BA,MACA,WACA,kBACA,qBACA,OACA,oCAEA,OACA,EAGA,gCACA,OAGA,oCAKA,0DACA,mCACA,kBACA,EAEA,YACA,EACA,CAuBA,MACA,WACA,kBACA,qBACA,OACA,oCAEA,MAIA,wBAIA,uCAEA,oBACA,GACA,CAiCA,MACA,WACA,kBACA,qBACA,OACA,gBAEA,MAIA,qBAIA,6CACA,wCAEA,eACA,cAEA,GACA,CAsBA,MACA,WACA,kBACA,qBACA,OACA,gBAEA,MAIA,qBAIA,gDACA,wCAEA,eACA,gBAEA,GACA,CAQA,MACA,UACA,kBACA,sBACA,UAQA,yCACA,mBAEA,gBAIA,4BACG,eAGH,oBACA,wBACA,EAGA,cAeA,cACA,kEAEA,KACA,CAIA,EArbA,IA+cA,WACA,kBACA,OAEA,kBACA,UACA,cAEA,cACA,qBAEA,KACA,qBAGA,OAIA,sBAIA,gDAGA,iCAGA,eACA,8BAEA,GACA,CAOA,iGCpiBA,OAwBA,GACA,mBAIA,WACA,OACA,QAQA,eACA,6DACA,IAQA,YACA,0DACA,IASA,uBACA,4BACA,IAKA,yBACA,OACA,IAKA,uBACA,OACA,gCAKA,uBACA,OACA,GACA,MAYA,EACA,+BACA,kBAGA,MACA,mBAGA,iBACA,+BAEA,0BACA,kBACA,gCAGA,eACA,gCAEA,wBACA,WACA,4BACA,wBAGA,qBACA,EAGA,OACA,KAAC,GAED,6GCjIA,QAuBA,GACA,mBAIA,WACA,OACA,OAQA,eACA,mEACA,IAKA,cACA,aAEA,oBACA,yCAGA,aACA,CAYA,uBACA,4BACA,IAKA,yBACA,OACA,IAKA,uBACA,OACA,+BACA,MAWA,EACA,4BACA,YACA,iBAEA,aACA,eAEA,2BAMA,oBAGA,kGAMA,oBAGA,uHACA,uCAEA,mDACA,WACA,2BACA,gCAEA,qCACA,+BACA,gCAEA,GACA,IAAC,GAED,8CCxCA,qBACA,kCACA,wBACA,6BACA,EASA,gDA3GA,OAqBA,GACA,mBAIA,WACA,OACA,MAOA,cACA,wDACA,IASA,qBACA,+DACA,IASA,qBACA,+DACA,IASA,qBACA,4BACA,IAKA,yBACA,OACA,EAKA,uBACA,OACA,8BAKA,uBACA,OACA,GACA,QAgBA,6BACA,YACA,oBAEA,oBACA,OAMA,qBAGA,sGACA,EACA,qCAGA,SACA,KAAC,GAED,8CCpGA,mBACA,gCACA,wBACA,6BACA,EAQA,0CA1CA,OAoBA,GACA,mBAIA,uBACA,OACA,gCACA,QAeA,6BACA,YACA,oBAEA,oBAEA,gCAEA,sBACA,yCAEA,OACA,mCAGA,SACA,KAAC,GAED,4GC7DA,OAuBA,KACA,mBAIA,WACA,OACA,OAOA,eACA,+DACA,IAKA,cACA,aAEA,oBACA,yCAGA,aACA,CAiBA,sBACA,4BACA,IASA,qBACA,4BACA,IAKA,yBACA,OACA,IAKA,uBACA,OACA,+BAKA,uBACA,OACA,EACA,MAWA,EACA,4BACA,YACA,iBAEA,aAEA,aAMA,qBAGA,6EAEA,8DAEA,wBACA,gCAEA,cACA,KACA,gBACA,uCACA,iBAEA,kBAEA,2BACA,gCAEA,GACA,IAAC,GAED,8CC/GA,iBACA,iBAEA,UACA,4BAEA,uBACA,EAEA,CACA,eACA,aACA,kBACA,yBAIA,UACA,EAeA,CACA,iBAEA,iCAMA,iBAGA,oBAGA,WAGA,+BAGA,UAGA,eAEA,aAAmB,MAAgB,WAEnC,WAkBA,8CAGA,yBAMA,+CAEA,gBACA,CAYA,GACA,EAIA,iBACA,kBAKA,EAEA,QACA,EAUA,CAkBA,eACA,eAIA,0CACA,WAEA,mBACA,kDACA,SAEA,GACA,KAEA,CAEA,OACA,WAIA,mBAGA,CACA,iBACA,wBAEE,4BAGF,YAEA,CAYA,CA6CA,aACA,wBACA,uBACA,MAAE,EACF,EAGA,CACA,eACA,oBACA,+BAEA,iBAEA,eAAiB,IAAa,EAC9B,2BAGA,aACA,+CAxSA,IAyKA,eACA,aAEA,GACA,SACA,aAGA,YACA,EAOA,EA7KA,IA6NA,eACA,kBACA,gBAEA,aAAiB,QAA+B,WAChD,MAEA,cAAkB,QAA+B,WACjD,MAEA,cAAmB,MAAmB,OACtC,cAAoB,MAAmB,WACvC,mBACA,mBAEA,mBACA,eAEA,kBACA,iBACA,CAGA,iBACA,eACA,CAEA,iBACA,eACA,CAEA,gBACA,YAEA,YACA,QACE,KACF,SAGA,GAAS,mBACT,EAEA,EAtQA,WA0BA,2FCxCA,QAsBA,GACA,mBAIA,WACA,OACA,QAOA,eACA,+DACA,IAQA,qBACA,4BACA,IAKA,yBACA,OACA,IAKA,uBACA,OACA,gCAKA,uBACA,OACA,GACA,MASA,EACA,6BACA,IAMA,8BAGA,+FACA,iBAEA,yCAEA,mEACA,WACA,2BACA,gCAIA,uDACA,+BACA,gCAEA,GACA,IAAC,GAED,oHC7GA,QAwBA,GACA,mBAIA,WACA,OACA,MAOA,YACA,YAEA,mFACA,IAOA,cACA,YAEA,2CACA,CAQA,uBACA,4BACA,IAQA,qBACA,4BACA,IAKA,yBACA,OACA,IAKA,uBACA,OACA,8BAKA,uBACA,OACA,GACA,MAUA,EACA,6BACA,OAMA,qBAGA,0FAEA,MAMA,6BAGA,uEAMA,8BAGA,mGACA,iBAEA,uCACA,wBACA,gCAEA,yCACA,iEACA,+BACA,gCAEA,GACA,IAAC,GAED,8CCxDA,YAGA,YAEA,iDACA,mBACA,SACA,sBACA,OACA,8BAEA,eACA,EAAG,UAEH,QAYA,CACA,mBAEA,8BACA,eAEA,MAIA,6CAGA,yDAMA,cAGA,mBAGA,gCAGA,uBACA,6BAEA,mBACA,iBAEA,uBACA,EACA,iBA9JA,OAoBA,GACA,mBAMA,iBACA,SAEA,UACA,KAOA,SACA,MACA,eA6CA,MASA,EAkEA,sDChKA,QAcA,GACA,mBAQA,uBACA,OAQA,aAQA,yCAQA,4CAQA,mBACA,CAKA,WACA,OACA,QAMA,QACA,uEACA,YAMA,cACA,mFACA,EAKA,WACA,6BAEA,gDAEA,UAAU,qBACV,EAKA,SACA,eAEA,yBAEA,SACA,CAKA,uBACA,OACA,wCASA,qBACA,WACA,KACA,2CACA,2CACA,OACA,UAEA,YACA,8CC/HA,QAiBA,IACA,mBAMA,eACA,aACA,cAKA,gBACA,qBACA,CAKA,WACA,OACA,UAMA,cACA,mEAGA,gCACA,iBAEA,uBACA,CAKA,uBACA,OACA,0CACA,6DC9DA,OAoBA,GACA,mBASA,qBACA,OAOA,iBAOA,eAOA,eACA,CAKA,WACA,OACA,QAMA,QACA,mFACA,YAMA,cACA,+FACA,EAKA,WAEA,uBAEA,2BAMA,eACA,KAEG,oIAMH,iBACA,KAQA,2HAIA,4BAEA,QAAU,wBACV,SAKA,uBACA,OACA,wCASA,qBACA,+DACA,YACA,8CCvIA,QAuBA,GACA,mBAWA,uBACA,OAQA,aAQA,WAQA,gBAQA,gBACA,CAEA,WACA,OACA,sBACG,mBACH,qBAEA,sBAEA,qBAKA,QACA,kEACA,YAKA,cACA,8EACA,EAEA,WACA,kEASA,kBACA,KACA,6HAAK,yBAIL,iFAQA,cACA,KACA,yFAAK,yBAIL,YACA,qDAKA,0CAHA,UAGU,kEACV,SAKA,uBACA,OACA,+CASA,qBACA,iBAOA,eACA,KACA,2HAAK,UAIL,iEACA,YACA,yBCpKA,aAqGA,YAIA,SACA,iBAGA,iBAGA,yCACA,IACA,qBAGA,UACA,MAEA,WACA,eAGA,KACA,UAlHA,IACA,QAWA,GACA,mBAMA,mBACA,WASA,iBAQA,uBACA,CAKA,aACA,OACA,mDAIA,mCAFA,EAWA,SACA,qBAGA,0BAEA,SACA,CAUA,aACA,6CACA,QACA,MAMA,EACA,mBAIyB,gCCkGzB,aAEA,OACA,4BAGA,cACA,QAIA,yDACA,2BAlNA,QAgBA,GACA,OAOA,eAOA,MAEA,aACA,yBAEA,EAKA,oBACA,8BACA,WAQA,iBACA,uBACA,MAQA,cACA,OACA,oBAQA,WACA,OACA,KAQA,aACA,OACA,KAUA,MACA,OACA,qBASA,kBACA,4CACA,EAQA,YACA,uBACA,EAQA,iBACA,+BACA,EAOA,cACA,8BACA,WAUA,oBACA,6BACA,YAEA,MAEA,eACA,YAEA,+BACA,GACA,IAGA,UACA,EASA,sBACA,6BAEA,gBAAsB,MAAqB,EAC3C,6BAGA,oCACA,EAUA,iBACA,uBACA,EACA,QAEA,WAKY,sBCrMZ,qBAeA,IACA,OAMA,mBAOA,eAQA,gBAQA,mBAEA,qBACA,EAQA,aACA,oEACA,UAKA,iBACA,eACA,gBAKA,kBACA,eACA,iBACA,uBC3BA,aAkOA,aACA,UACA,MAnOA,OAUA,eACA,uBA0CA,gBACA,wCACA,iBAEA,GACA,wBAGA,gBACA,mCACA,MACA,KACA,GAEA,EAEA,CASA,YACA,iCACA,IASA,WACA,gDACA,IASA,WACA,+BACA,EASA,eACA,gCACA,EASA,cACA,OAGA,WACA,yCAGA,kCACA,uCAEA,qBACA,OAGA,GACA,CAEA,GACA,EAKA,aACA,kBACA,MAKA,YACA,kBACA,KAKA,YACA,kBACA,KAKA,gBACA,kBACA,SAQA,UACA,CACA,KAEA,OAWA,qBAEA,cACA,0BAEA,cACA,eAIA,oBAEA,IACA,2BAGA,QACA,SAIA,aACA,CAAG,WAEH,SACA,KACA,MAMa,gCChDb,aACA,qBACA,2CAjOA,QAmBA,GACA,mBAMA,eACA,OAGA,YAIA,mCACA,iBACA,wFAEA,GAGA,2BACA,iBACA,0BAEA,QAOA,eAUA,WAQA,gCACA,IAQA,OACA,SAMA,oBAGA,uHACA,kBACA,MACA,QACA,EAOA,UACA,IAEA,kBACA,eAGA,8BACA,EAUA,SACA,aAGA,iBAEA,gCACA,qBACA,UACA,MAGA,IACA,CAOA,aACA,qBACA,CAgCA,eACA,kBAMA,iBAGA,mFAQA,SAEA,aACA,kBACA,oBAKA,wBACA,aACA,oBAEA,EAGA,2BACA,aACA,sBAEA,EACA,EAEA,EACA,QAEA,aAMa,mCC3Gb,eAIA,aAKA,8CAGA,aAAkB,MAAwB,WAC1C,WACA,OAEA,sBACA,iBACA,eACA,GAEA,IAEA,OACA,EAEA,CACA,eACA,aACA,kBAGA,qBAAmB,MAAmB,WAEtC,IAEA,YACA,UACA,gBACA,6BACA,iBAGA,cAEA,UACA,WACA,aACA,kBACA,wBACA,iBACA,iBAQA,aACA,oBAGA,gBAEA,EAIA,OACA,WAzLA,QAgBA,EACA,mBACA,eACA,OAWA,QAQA,kCAGA,cACA,cAQA,YACA,SACA,kDACA,uDAGA,6BAAqB,SACrB,mBACA,cAKA,aACA,MACA,eACA,cAKA,gBACA,OACA,qBASA,yBACA,qBAGA,SAGA,oBACA,aAMA,OACA,0BAIA,WACA,UAEA,EAGA,GACA,gCAEA,EACA,MAGA,gCCrGA,aACA,QACA,eAEA,WACA,eACA,SACA,mBACA,GACA,CAEA,6CAZA,KAaA,sBACA,0BACA,oBACA,oBACA,gBAEA,wCCjBA,aACA,uBACA,EAEA,qDALA,KAMA,sBACA,0BACA,oBACA,oBACA,gBAEA,gDCtBA,UAEA,mDCKA,SACA,aACA,oBACA,iBAEA,iBCPA,iBACA,eACA,YACA,MAEA,WACA,YACA,IAGA,SACA,QAEA,wDCVA,QACA,aACA,8BAEA,aACA,MAEA,kBACA,kBAEA,sBACA,QAEA,wCCdA,SACA,eACA,QACA,oBAEA,eACA,MAEA,WACA,aACA,QAGA,UACA,CAEA,mFCPA,SACA,eACA,iBACA,WACA,WACA,SACA,UACA,KACA,SAEA,OACA,SACA,MACA,0BAEA,yBACA,wBACA,0BAGA,cAEA,UACA,MAEA,GACA,8BACA,SACA,YAEA,kBACA,EACA,cACA,UACA,GACA,OACA,OACA,SACA,MACA,cACA,aAEA,WAEA,MACA,CACA,UAEA,UACA,EACA,CACA,OACA,EAEA,gCCtDA,qBACA,aAGA,8CACA,uBAGA,cADA,EAGA,0BAXA,yBCZA,iBACA,WACA,mBACA,yBACA,EACA,CAEA,kECPA,aAGA,cAYA,WACA,iBACA,aACA,OACA,MACA,SAEA,MACA,0BAEA,SACA,aACA,MACA,YAEA,GACA,sBACA,cAEA,cAGA,SACA,EAEA,wCC3CA,QAoBA,iBACA,KAEA,aACA,eACA,QACA,IACA,oBACA,KAEA,gBACA,wBACA,SACA,MACA,aACA,eACA,aAEA,MACA,WACK,SACL,SACK,GACL,aACK,GACL,iBACK,MAGL,cAEA,EACA,MAEA,IAEA,CACA,iBACA,EAzDA,WAkBA,EAyCA,iBCzDA,iBACA,WACA,mBACA,UACA,EACA,CAEA,wDCAA,QACA,eACA,YACA,MAEA,aACA,KACA,MACA,uBACA,qBAEA,MAEA,mCACA,KAEA,iBCtBA,iBACA,aACA,cACA,EAEA,wCCJA,QACA,WACA,oBACA,IAEA,wCCLA,SACA,WACA,2BACA,0CACA,IACA,CAEA,wCCJA,QACA,iBACA,KAEA,iBACA,MAEA,cACA,SAEA,KACA,kBACA,KAEA,gBACA,EACA,OACA,EAEA,iBC9BA,aACA,aAQA,mBACA,WACA,iBACA,GAEA,gCC0BA,aACA,eACA,EAIA,sDAtCA,OACA,iBAEA,qBACA,iBAEA,qBAGA,6BAOA,cAGA,oBACA,gBACA,gBACA,gBACA,gBAQA,2CAQA,oBACA,0BACA,oBACA,oBACA,kBACA,cACA,QA3CA,oBA4CA,gCAEA,aACA,SACA,gBACA,gBACA,gBACA,gBACA,gBAGA,UACA,EAGA,wBC/DA,iBACA,WACA,QACA,YAEA,oCACA,WACA,EACA,GACA,CAEA,yDCZA,SAwDA,eACA,eAuBA,QACA,KAEA,WACA,WACA,gBACA,IACA,CAEA,eAEA,UAEA,kBAEA,WACA,CAEA,eACA,WACA,QACA,OAEA,8BACA,EAEA,eACA,WACA,QAKA,gBACA,gBACA,CAEA,aACA,YACA,gBACA,MAGA,0BACA,KAEA,eACA,qBACA,GAIA,aACA,KAEA,OACA,SACA,EAEA,aAaA,YACA,YAEA,SACA,YACA,OAEA,MACA,IACA,oBAEA,MAEA,sBACA,kBACA,KAEA,EACA,OACA,6BAEA,IACA,CACA,OAhHA,IACA,EACA,KACA,KAEA,MAVA,EACA,EACA,EACA,EACA,KAOA,8BAEA,WAhBA,6CAiBA,WACA,WACA,qBACA,0CACA,iCAGA,MAiGA,iBApCA,CACA,yBAEA,OACA,MACA,QAEA,IA8BA,gBA7BA,2BACA,OAEA,EA2BA,CAEA,gDC9JA,QACA,eACA,kBACA,QAGA,+BACA,sBACA,MAEA,gDCVA,QACA,eACA,kBACA,QAGA,+BACA,OACA,qBACA,MAEA,iBCrBA,iBACA,WACA,sBACA,SAEA,wCCnBA,aAMA,cAOA,mBAGA,aAmBA,yBACA,WAEA,8BACA,wCACA,IArCA,qBAuCA,wCC1CA,aAWA,cAmBA,aACA,WAIA,6BACA,aAnCA,qBAoCA,GAjCA,4BAmCA,gDCtCA,aAUA,cAmBA,aACA,WACA,OACA,sDACA,IA9BA,iBAgCA,wCClBA,SACA,aACA,0BACA,kBACA,GACA,CAEA,yDCJA,SACA,aACA,WACA,QAEA,wBACA,SACA,SAEA,wBACA,0BACA,EACA,EAEA,gDCtCA,KAqBA,IACA,WACA,iBACA,YAEA,WAEA,gCC2CA,eACA,uBACA,EAOA,CAsCA,YACA,OACA,UAxFA,WACA,6BACA,EAcA,MACA,aACA,UACA,qBACA,wCACA,aACA,uBAEA,QACA,aAGA,OACA,CASA,EAtEA,IAiFA,WACA,6BAEA,SACA,4BAIA,EADA,EAWA,EA5FA,IA6FA,WACA,yCACA,mBAEA,gDACA,CACA,aAEA,qCAEA,sBAEA,GACA,CAIa,EA5Gb,eACA,qBAOA,WAOA,YAOA,IAPA,kFCxBA,QAuBA,KACA,mBAIA,wBACA,OACA,oBAKA,eACA,OAEA,gBAQA,gCACA,YAKA,YACA,cACA,qDAGA,6BAIA,oCACA,GACA,UAGA,kCACA,YACA,CAOA,wDAGA,mCAGA,6CAGA,wDACA,MACA,gBAEA,MAAG,EAAG,UAGN,sEACA,aACA,gBAEA,MAEA,eACA,GAKA,OACA,4CAEA,iCACA,gBAEA,QAKA,OACA,aACA,QACA,6DCrHA,QAYA,KAEA,QASA,OACA,mBAIA,OACA,cACA,WACA,SAGA,gCAAiC,4BAGjC,oCACA,2BACA,aAGA,2BACA,yBACA,sBACA,mBACA,4CAGA,iCACA,GACA,6DCnDA,QAYA,KAEA,QASA,SACA,mBAIA,OACA,cACA,WACA,SAGA,gCAAiC,4BAGjC,oCACA,2BACA,aAGA,uBACA,yBACA,kBACA,mBACA,6CAGA,iCACA,GACA,qBCnDA,GAGA,aACA,OACA,KAAC,IAED,GAEA,0CACA,OAAC,SAED,CACA,4BACA,OAI4C,CAE5C,yBCpBA,qBACA,uBACA,qBAEA,kBACA,8CACA,CACA,4BACA,UACA,CAEA,iCACA,CACA,4BACA,UACA,CAEA,sCACA,CAEA,kCACA,CACA,OACA,0CCvBA,IAqBA,IACA,eACA,MAEA,2BAAwB,qDAExB,cAGA,2BACA,iBAAmC,cACnC,iCACA,aAGA,gBAEA,4BAEA,mBAAwB,4BAExB,IAGA,aACA,aACA,MACA,CAIA,CACA,wDCrDA,SAmBA,KACA,mBAMA,iBACA,OAOA,qBASA,WAEA,gFACA,6DACA,aACA,EASA,gBACA,qBAEA,yDACA,OAuBA,YAAyB,KACzB,qBACA,aACA,gDAGA,gCACA,MACA,YACA,sBAEA,wCAEI,kBACJ,oDAGA,qBAEA,oBACA,GACA,qCAEA,4BAGA,aACA,CACA,EACA,oFCjHA,OAiCA,GACA,OAIA,cAOA,6BAQA,qCASA,6CAGA,0CACA,OAIA,iEAEA,8DACA,QAAG,EAAG,UAGN,6CACA,MACA,cAGA,4BACA,sCAEA,SACA,OACA,sCAGA,yEAEA,mDACA,EAAG,EAAG,UACN,OAWA,kBACA,gCACA,kCACA,EAOA,qBACA,6BAEA,0BACA,EAOA,sBACA,4BAEA,0BACA,EAKA,gBACA,6BACA,qCACA,QAUA,kBACA,qCACA,EAQA,iBACA,qCACA,EAQA,gBACA,qEACA,KAQA,eACA,mEACA,KASA,mBACA,SACA,cACA,SAGA,6CAEA,KACA,aASA,kBACA,SACA,eACA,SAGA,6CAEA,KACA,YA+BA,+BACA,wCACA,EAoBA,sBACA,SAEA,8CACA,6BAEA,YACA,CAKA,SACA,cAIA,SAEA,YAAkB,IAAgB,EAClC,sCAGA,UACA,EASA,qBACA,iCACA,mCACA,EAwBA,kBACA,iDACA,gDAEA,eACA,EAAG,iCACH,SACG,WACH,sBACG,eACH,mBAEA,SAEA,iBACA,qCAGA,SAEA,EA2BA,qBAEA,IAEA,KAEA,IACA,IAGA,UACA,yBAMA,UACA,gBACA,yBACA,MACA,EAIA,cACA,6CAMA,gCAEA,GAcA,+BAGA,WACA,eAEA,yBACA,6BACG,2BACH,eAIA,GACA,CAoFA,QAEA,8CC3UA,qBACA,OACA,YAGA,uBACA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CA,MACA,kCACA,0BACA,QAEA,GAIA,mCAEA,qBAEA,wBAMA,4CACA,kDAGA,gBACA,SACA,gBACA,cAEA,GAEA,kCAIA,iBACA,QAWA,sBACA,OAGA,6DACA,uEACA,CAIA,qCACA,KACA,MAiDA,mBClTA,qBASA,IAEA,eASA,YACA,mBAOA,eACA,OAQA,iBACA,MAKA,aACA,OACA,8CAIA,8BAFA,EAIA,eACA,+BACA,EAEA,gBACA,0BACA,EACA,sCCYA,YACA,OACA,sBAxEA,OAgBA,IACA,mBAUA,mBACA,WAQA,wBACA,CAKA,aACA,OACA,4CAIA,4BAFA,EASA,oBACA,0BAMA,sCAEA,2EACA,MAIa,+DCrEb,QAaA,KAEA,QAOA,YACA,mBAIA,eACA,OAKA,6BACA,SACA,CAAK,kDACL,wBAAK,kEACL,uBAAK,kEACL,uBAAK,kEAGL,yBAKA,sBACA,QACA,IAKA,OACA,cACA,WACA,SACA,uBAEA,+BAEA,oBAEA,kDAGA,yCACA,2BACA,0BAGA,8BACA,2BACA,yBAGA,sDAGA,IAKA,YAGA,cACA,wBACA,wBAEA,mBACA,yCACA,iDACA,WACA,2BAEA,4BACA,6BAEA,EAEA,EACA,sCCpCA,YACA,yBAA6C,OAAiB,iBAC9D,wDA/CA,KACA,mBAIA,OACA,cACA,WACA,aACA,WACA,SACA,YAGA,iBACA,6BACA,yBAAiB,8CACjB,wBAGA,0BACA,yBACA,uBAGA,sBACA,yBACA,sCAEA,yDACA,8CAGA,6CACA,OACA,MASY,yDClEZ,SAYwB,IAExB,YACA,sBAMA,WACA,OACA,cACA,gCACA,OAEA,IAOA,YACA,OACA,oBACA,gCACA,OAEA,IASA,GACA,mBAIA,eACA,SAEA,oBACA,oBAGA,mEACA,KACA,QAEA,QAGA,6BACA,qBAEA,iCACA,SAEA,QAAG,EAAG,UASN,2CACA,MACA,SAAG,EACH,IAKA,OAEA,6CAEA,eACA,MAKA,SACA,MACA,gEACA,wEACA,iBAKA,SACA,MACA,kEACA,6EACA,iBAOA,UACA,6BAEA,mBACA,kDACA,sCAEA,QACA,sCClGA,iBAGA,qCAEA,aAEA,yCACA,KACA,0BAGA,wDACA,iBA5CA,GAmBA,IACA,aACA,8BACA,MAQmD,mBC9BnD,qBAiBA,KACA,mBACA,sCCsGA,aACA,OAEA,iBACA,+BACA,4BACA,mBAKA,SACA,oCArIA,QAmCA,KACA,mBAIA,sBACA,QACA,IAKA,OACA,cAMA,oBACA,iCACA,kBACA,MACA,kBACA,QAEA,mDAGA,wCACA,SAEA,wEAAoF,UAIpF,mDACA,IACA,+BACA,gBACA,yCAIA,EAAG,EAAG,UAEN,iDACA,2CAEA,qCACA,uCACA,uCAEA,mCAA6D,UAC7D,4CACA,mCAA0D,UAC1D,4CAIA,sDACA,sDAEA,wCACA,mCAA0D,UAC1D,2CACA,mCAAuD,UAEvD,2DACA,wDAEA,uCAAiD,UACjD,2CAAiD,UACjD,2CAAqD,UACrD,uCAGA,6CACA,qDAGA,mDACA,mDACA,YACA,yBCvHA,qBA4BA,KACA,OAOA,oBAOA,eASA,YAQA,aAQA,OAEA,4CACA,eACA,EAEA,oCACA,MACA,QAEA,qBAEA,oDAEA,iEAsBA,yBAQA,YACA,aACA,mCAGA,cACA,MAQA,SACA,YAEA,kBACA,YAEA,UAKA,OACA,MACA,WAKA,SACA,MACA,WAKA,UACA,iCACA,iEACA,8EACA,yBAaA,YAEA,yCACA,qCAEA,UAQA,UACA,kBACA,iBACA,eAEA,EACA,uBC3LA,aAsBA,IACA,SAA8C,kCAA+C,kBAC7F,kCAAgD,CAAS,YACzD,kBACA,IAEA,GACA,mBC7BA,aAgBA,IACA,SAAwC,CAAO,QAC/C,sCACA,GACA,wBACA,SAAE,EAAG,CACL,uDCtBA,OAgBA,GACA,mBAIA,eACA,OAQA,YAQA,kBAEA,mBAEA,mCACA,KACA,mBACA,MACA,OAIA,2CAKA,+DACA,GAKA,SACA,cACA,QAKA,QACA,cACA,OACA,4DCvEA,QAmBA,KACA,mBAOA,iBACA,OAEA,WAAyB,sBAQzB,YAQA,kBAOA,8CAOA,0CAEA,yBACA,KAEA,eACA,MACA,eAGA,YASA,oBACA,sBAEA,qBACA,yBAEA,SACA,CAUA,sBACA,oBAEA,oBACA,qBAEA,MACA,CAKA,SACA,gBACA,QAKA,QACA,gBACA,OACA,4DCtHA,SAcA,KAEA,iBAMA,MACA,mBAIA,eACA,OAEA,gBASA,4BASA,mBAeA,uBASA,eAeA,kCAEA,yCACA,KACA,iBACA,OACA,CACA,wCAAiE,2BACjE,qBAGA,mCACA,gBACA,oBACA,4BAIA,cAGA,iBAEA,SAOA,OACA,MACA,YAOA,OACA,MACA,YAaA,YACA,MAEA,iBACA,0BAA2C,UAC3C,cACA,kBACA,GACA,KACA,KACA,KAEA,qBACA,KACG,kBAEH,GAAS,cAA4B,iBAErC,sBAAwB,cACxB,YACA,MAiBA,EACA,wBAkBA,GACA,sBAmDA,GACA,mBACA,UACA,gBACA,4CACA,2BAGA,kBACA,gBACA,oDACA,2BAGA,kBACA,sBACA,4CACA,2BAGA,kBACA,sBACA,oDACA,2BAEA,6EClRA,QAoBA,KACA,mBAIA,eACA,OAQA,mBAQA,wCAQA,wBASA,+BACA,iBACA,wBACA,mCACA,mBAEA,CAGA,sCAIA,8DACA,KACA,iBACA,CAKA,oCAGA,mCACA,yBACA,QAEA,iCACA,4BACA,QACA,EAKA,OAEA,sCAEA,eACA,MAKA,QACA,mBACA,YAUA,oBACA,OACA,0BAIA,iCAEA,yBACA,EACA,YALA,SAMA,uBChIA,aAgBA,IACA,WACA,OAEA,cACA,GAGA,UACA,mBCzBA,aAsBA,IACA,eAEA,cAkCA,qCAEA,qBAEA,kBAGA,MACA,uBAIA,MACA,OAIA,uBAGA,oBACA,OAGA,0BACA,KACA,IAEA,cAGA,eACA,EAEA,mBAnEA,YACA,CAGA,QAGA,uBACA,OAEA,IACA,IAGA,IACA,WACA,QACA,QACA,WAGA,mBACA,WACA,WAGA,EAEA,KAEA,WAsCA,EAGA,IAEA,QAAe,IAAW,EAC1B,WAIA,WAAsB,IAAW,EACjC,WAKA,UAEA,GACA,GAAE,cAIF,qBACA,mBCtHA,aAmBA,IACA,WACA,MAGA,+BACA,yBACA,OAGA,iBACA,mBC9BA,aAeA,IACA,WASA,cACA,iDCtBA,mBAEA,2DCFA,mBAEA,mDCHA,UAEA,gCCIA,iBACA,eACA,SACA,kBACA,SACA,oBACA,0BACA,+BAEA,cACA,EAEA,iBCVA,iBACA,iBACA,QACA,MAEA,cACA,QAEA,UACA,gBAEA,SACA,EAEA,gCCoDA,gCACA,IACA,OACA,8BAEA,KACA,kBAEA,iBACA,UAEA,oBACA,QACA,GAKA,iBACA,kBAEA,cACA,uBAEA,6BACA,aACA,cAEA,qBAA0C,MAC1C,KACA,kCAEA,IAAK,KACL,QACA,cAEA,0BACA,GACA,CAEA,qBA1BA,KACA,sBAEG,eAwBH,oBACA,OACA,SAEA,iBAEA,KACA,mCAGA,0CACA,CACA,QACA,SAEA,wCACA,IACA,GACA,EAEA,qJAvHA,MACA,uBAKA,sBACA,+BAGA,wBAoBA,SA5BA,kBA6BA,GAdA,2BACA,qBAcA,GA7BA,uBACA,iBA6BA,GAdA,4BACA,yBAcA,GAbA,yBACA,uBAaA,GAZA,0BAfA,gBA4BA,GA3BA,yBA4BA,GA1BA,sBACA,gBA0BA,GAzBA,sBACA,mBAyBA,GAfA,0BACA,8BAeA,GAdA,2BAGA,2BAYA,GApCA,wBAoDA,GAzCA,4CC1BA,iBACA,eACA,aACA,cAEA,YACA,eACA,SAGA,UACA,CAEA,wCCnBA,cAGA,cASA,mBACA,aAIA,iBACA,gCACA,kBAEA,iFChBA,YAGA,cAUA,WACA,aACA,sBACA,MAEA,IACA,YACA,eACA,OACA,cACA,cAEA,0BACA,gBACA,gBAEA,GACA,oCAEA,IAEA,wBAEA,GAEA,OACA,EAEA,wCCvCA,QACA,aACA,YACA,MACA,SACA,EAEA,YACA,SACA,YAEA,wBACA,OACA,iBACA,CACA,CACA,OACA,EAEA,iBCrBA,iBACA,aACA,YACA,UAEA,OACA,UAEA,SACA,EAEA,iBCXA,iBACA,eACA,YACA,MACA,WACA,OAEA,WACA,WACA,mBAEA,SACA,EAEA,iBCfA,iBACA,aACA,QACA,MAEA,uBACA,QACA,UAEA,SACA,EAEA,gDCfA,SAiBA,qBACA,OACA,EAHA,MAIA,WAEA,uBACA,GAGA,qBACA,MACA,YAEA,SACA,EACA,SA/BA,KAiCA,wBAGA,UACA,SACA,OAEA,MACA,QACA,cACA,eAEA,iBACA,IACA,EAEA,SACA,KACA,KAEA,IACA,+BACA,WACA,sBACA,iBAEA,EAAW,GACX,CACA,KACA,KACK,UACL,MACA,aACA,IACA,CACA,KACA,KACA,CACA,oBACA,GACA,CAEA,iBChFA,aAUA,aAGA,iBACA,GAGA,CAhBA,aAQA,sBASA,gBACA,CACA,QAGA,iFCVA,SACA,WACA,WACA,8BACA,wCACA,eAEA,QACA,IAEA,iBCfA,iBACA,eACA,aACA,iBAEA,eACA,UACA,OACA,QAGA,UACA,CAEA,wCCbA,QACA,WACA,yBACA,EAEA,iBCNA,iBACA,aACA,mBACA,OAGA,iBACA,4BACA,GACA,CAEA,iBCnBA,aACA,yBAQA,aACA,WACA,YACA,IACA,eACA,EAAK,UACL,IACA,UACA,EAAK,UACL,CACA,OACA,EAEA,wDCjBA,WAuBA,SACA,eACA,sBACA,YAEA,uBAEA,oBACA,SACA,IAEA,mBACA,IACA,cAEA,MACA,0BAEA,SACA,EAEA,iBCnCA,iBACA,WACA,YACA,eACA,IACA,EAEA,WACA,OACA,GACA,WAGA,SACA,EAEA,iECJA,QACA,UACA,qBACA,qBACA,eACA,KAEA,EACA,sBAEA,SACA,mDAEA,MAEA,gECjBA,2BACA,iBACA,2BAEA,WAEA,uFCCA,2BACA,gBACA,mBACA,KAEA,mBACA,4CAEA,MAEA,+ECdA,2BACA,gBACA,mBACA,KAEA,mBACA,0CAEA,KAEA,uDCCA,QACA,aACA,aACA,6BAEA,YAEA,gDCPA,QACA,aACA,aACA,6BAEA,SAEA,iDCdA,QACA,iBACA,kBACA,QAGA,wCACA,OACA,IAEA,kBACA,MAEA,iDCPA,QACA,aACA,aACA,6BACA,KACA,CAEA,iDCPA,QACA,aACA,aACA,6BACA,QACA,CAEA,4EC5CkB,yCCelB,QACA,WACA,kBACA,sBACA,KAEA,wCClBA,QAgBA,WACA,kBACA,oBACA,IAJA,KAMA,gDCFA,QACA,aACA,kBACA,QAGA,4BACA,cACA,MAEA,iBClBA,iBACA,WACA,YACA,eACA,EAEA,WACA,OACA,aAEA,SACA,EAEA,wCCDA,SACA,eACA,iCACA,uBACA,CAEA,iBCjBA,iBACA,WACA,OACA,EAEA,iDCQA,QACA,eACA,kBACA,QACA,eAGA,GACA,qBAEA,iBACA,KALA,CAOA,wCC1BA,SACA,WACA,mBACA,EAEA,kECEA,yBACA,kBACA,+BACA,YAEA,KAEA,yFCCA,yBACA,gBACA,gBAEA,yBACA,GAEA,WAEA,yBACA,uBAEA,MAEA,iFCjBA,yBACA,gBACA,gBAEA,yBACA,GAEA,WAEA,yBACA,qBAEA,KAEA,wEChCA,OAGA,wBAGA,uCAGA,+BAGA,aAGA,wBACA,wBACA,kFAoBA,SACA,WACA,cACA,GAEA,0CACA,yBACA,GAEA,iBCvDA,aACA,YAGA,cAgBA,SACA,aACA,sBACA,EAEA,iDCEA,QACA,eACA,kBACA,MACA,SAEA,QACA,KACA,wBACA,KACA,CACA,iBACA,gBACA,IAEA,OACA,oBAEA,WACA,eACA,QAGA,UACA,CAEA,iDC9BA,QACA,aACA,wCACA,UAEA,iDCFA,cAEA,yDCFA,SACA,eACA,0BACA,6BACA,IACA,CAEA,wCCTA,SACA,eACA,0BACA,2BACA,GACA,CAEA,2FCCA,2BACA,cAEA,oBACA,eAEA,2CACA,yBACA,CAAG,QAEH,MACA,CAEA,uDCdA,SACA,aACA,IACA,gBACA,cAEA,UACA,EACA,SAEA,wBACA,UACA,SACA,SACA,YACA,UAEA,GACA,mBACA,GACA,CAEA,iBCrDA,aACA,YAGA,cAwBA,YACA,WACA,oBACA,CAEA,wDCdA,QACA,eACA,kBACA,QAGA,wCACA,MACA,IAGA,yBACA,2BAEA,iBACA,MAEA,wCCfA,QACA,aACA,mBACA,EAEA,gDCEA,SACA,eACA,8BACA,GAEA,gDCfA,QACA,aACA,kBACA,OACA,kBACA,yBACA,SAEA,EACA,QACA,CAEA,wCCXA,QACA,aACA,mBACA,KAEA,gDCDA,SACA,eACA,8BACA,MAEA,gDCVA,QACA,aACA,kBACA,OACA,wBACA,mBACA,SAEA,EACA,QACA,CAEA,wCCdA,SACA,WACA,aACA,gBAEA,KAEA,gDCLA,SACA,aACA,aACA,2BAEA,MAEA,wCCVA,SACA,WACA,mBACA,EAEA,gDCOA,QACA,eACA,aAGA,mCACA,sBACA,MAEA,gDCTA,QACA,eACA,kBACA,QAGA,+BACA,OACA,qBACA,MAEA,gDCAA,QACA,aACA,aACA,6BAEA,YAEA,gDCPA,QACA,aACA,aACA,6BAEA,MAEA,yDCxCA,QAGA,IAGA,eAGA,uBAGA,eAGA,gBAwBA,aACA,WACA,IACA,yBAEA,eACA,SAEA,kBACA,uCACA,qBACA,CACA,IACA,mCAEA,gBACA,iBACA,oBACA,oBACA,gBACA,CAEA,gEC7CA,yBACA,8BACA,QAEA,uFCKA,yBACA,gBACA,mBACA,KAEA,iDACA,GAEA,+ECZA,yBACA,gBACA,mBACA,KAEA,+CACA,EAEA,+CChBA,QACA,WACA,aACA,gBAEA,KAEA,gDCDA,QACA,aACA,aACA,2BAEA,MAEA,wCCXA,QACA,aACA,aACA,yBAEA,KAEA,wDCLA,2BACA,iBACA,cAEA,KAEA,wECLA,yBACA,4BACA,KAEA,wFCGA,yBACA,gBACA,mBACA,KAEA,4CACA,GAEA,gFCZA,yBACA,gBACA,mBACA,KAEA,0CACA,EAEA,sDCfA,gBAEA,yDCHA,SACA,aACA,6BACA,IAEA,iDCNA,SACA,aACA,6BACA,IAEA,+CCAA,2BACA,SACA,iBAEA,iDACA,qBACA,EAEA,wBC9BA,aAiBA,IACA,WACA,YAEA,iBACA,aAGA,UACA,gCCTA,aACA,oGACA,EAUA,CACA,aACA,gDACA,EAUA,CACA,aACA,gDACA,EAQA,CArDA,IAsDA,aACA,qCACA,GAQA,EAhDA,IAiDA,aACA,mBACA,sFCnEA,SAkDA,KACA,mBAIA,sBACA,oBACA,IAKA,wBACA,OACA,uBAKA,OACA,MACA,2BACA,8BACA,uBAWA,sBACA,kCACA,qDACA,eAQA,yBACA,qBAAmD,oBACnD,MAAU,SAAe,SACzB,SAEA,2BAAkC,WAAe,GAAI,CACrD,SACA,EAaA,wBACA,8CACA,gDAIA,6DACA,0DACA,SACA,8DC5HA,mBAoBA,GACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,mBAKA,OACA,cACA,WACA,mBACA,UAGA,+CACA,iBAEA,gBACA,SACA,eACA,EACA,YAGA,qDAGA,qDAEA,SACA,CAGA,sBACA,OACA,8DCnEA,mBAoBA,GACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,qBAKA,OACA,cACA,WACA,mBACA,YAGA,iDACA,iBAEA,gBACA,SACA,iBACA,EACA,YAGA,qDAGA,qDAEA,WACA,CAGA,sBACA,SACA,qBC9DA,aAEA,UACA,CAWA,iKCnBA,SA2FA,KACA,mBAIA,wBACA,OACA,qBAKA,OACA,cACA,WACA,qBAQA,gCAEA,mBAIA,oCACA,WACA,mBAEA,aACA,kCACI,wBACJ,qCAGA,iDAEA,KAEA,yCAAwC,gBACxC,WAAG,EAAG,UAEN,gDACA,uBACA,qBAKA,2BAEA,yCACA,qBACA,UACA,EACA,CAAG,EAAG,UAIN,uBACA,WACA,yDAEA,cAEA,0CAAyC,mCACzC,MAEA,2BAAkD,UAClD,gCAAiD,UAEjD,iDACA,WACA,6EAGA,UACA,sCACA,4CAA6D,CAC7D,UAEA,EAAG,EAAG,UACN,OACA,MAoEA,4ECtPA,oBAsBA,GACA,mBAQA,iBACA,SAEA,iBACA,oCACA,uCAQA,kCACA,IASA,UACA,aACA,4CAEA,kBACA,yBACA,UAqBA,mBACA,yBACA,oBAEA,GACA,IACA,8DACA,wBACA,wBACA,4DACA,6BACA,sCACA,QACA,oBACA,QACA,YAEA,GACA,EACA,qDCpGA,SAiBA,KACA,mBAIA,wBACA,OACA,aAEA,OACA,cACA,mBAEA,mBAEA,oCAGA,mCACA,WACA,WACA,gBAAG,EAAG,UACN,OACA,sCCsHA,eACA,gDACA,+DAhKA,kBAwBA,GACA,mBAIA,sBACA,YACA,IAKA,wBACA,OACA,iBAKA,OACA,cACA,YACA,YACA,uBACA,SACA,MACA,sBAEA,0BACA,0BACA,wBACA,eACA,qBACA,cAGA,gCAGA,eAEA,UACA,EAGA,iBACA,CACA,kBACA,UAGA,wBAEA,UAEA,iCAGA,oBAEA,UAEA,iBACA,0BAGA,0BACA,CAIA,6CACA,oBAEA,gCACA,YACA,CAOA,gEACA,oBACA,4BACA,OAEA,GACA,CACA,EAaA,uBACA,cACA,WACA,IACA,aACA,2BACA,2BACA,2BAGA,8DACA,aAEA,sBAEA,iBAA8B,YAAW,CAGzC,WACA,CACA,EACA,MASa,iEC7Jb,oBAsBA,GACA,mBAIA,sBACA,gBACA,IAKA,wBACA,OACA,aACA,qDCrCA,oBAiBA,GACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,oBACA,qDChCA,SAmBA,IACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,kBAKA,OACA,gCAEA,4BACA,sBAIA,kCAEA,wBACA,MACA,eAGA,6BAEA,OAQA,iBACA,cACA,0BAEA,4CACA,iBAEA,gBACA,SACA,aACA,KAGA,sCACA,iCAEA,mDAEA,OACA,CACA,EACA,sCCuNA,aACA,sDACA,gHA7SA,kBAgCA,GACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,WAKA,OACA,sCAOA,gCAOA,yCAGA,mBACA,gCACA,4BAQA,2BACA,cACA,wBACA,YAGA,qCAEA,oDACA,iBAEA,YACA,uBACA,iBACA,cACA,WAGA,oCAGA,gDAEA,cACA,CACA,EAQA,6BACA,cACA,WACA,mBAEA,kDACA,iBAEA,YACA,uBACA,mBACA,IAGA,oCAGA,qDAEA,WACA,CACA,EAQA,sBACA,cACA,mBAGA,iBACA,0BAIA,4BAIA,qCACA,WACA,gBAEA,mCACA,SAEA,qDACA,aAEA,uCACA,6BAIA,QAFA,YAIA,+DAEA,WAGA,iCACA,0CACA,0BACA,QAEA,IAGA,iCACA,GACA,iBACA,eAEA,IAGA,YACA,SACA,kBACA,2BACA,0BAGA,kCAEA,GACA,CAQA,cACA,cACA,mBAEA,sEAGA,sCACA,mDACA,YACA,cAGA,gCACA,WACA,eACA,cAGA,iCACA,MACA,eACA,GAGA,qCAEA,kDAEA,GACA,CAUA,yBACA,6BACA,wBAEA,sBAEA,4CAGA,6CAEA,gDACA,CACA,uEAEA,kBAQA,cACA,uBAEA,OACA,4BAEA,OAOA,aACA,MACA,mDACA,QACA,MAOa,4FC1Sb,QAyBA,IACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,WAKA,OAEA,qBACA,sDACA,uDAIA,yDACA,qBACA,yCAEA,sDACA,8BAEA,iBACA,mBAEA,OAKA,2DACA,IAEA,4BACA,SACI,mCACJ,iBAGA,iBACA,kCAEA,KACA,gCAEA,KACA,mBAEA,OACA,CACA,EAUA,kBACA,cACA,wBAEA,oCACA,iBAEA,gBACA,OACA,OACA,EAIA,qDAGA,qDAEA,IACA,CACA,EACA,qDCvHA,SAiBA,KACA,mBACA,sBACA,YACA,IAKA,wBACA,OACA,eACA,iFC7BA,kBAgIA,GACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,WAKA,OACA,cACA,WAEA,8CACA,+CAEA,6BACA,kCACA,wCACA,OAWA,oBACA,cACA,wBAEA,oCACA,iBAEA,gBACA,OACA,OACA,EACA,YAGA,sCAEA,qDAEA,IACA,CACA,EACA,qBC7LA,U,u+GCAA,U,4zECAA,UAA07H,06HCA17H,UAA+Y,iYCA/Y,UAA+gB,+fCA/gB,U,4rECAA,U,gqFCAA,U,29CCAA,U,o+ECAA,U,0yBCAA,U,6yBCAA,OAsBA,IA0FA,IAzFA,KA+BA,mBACA,IAEA,MACA,uBACG,MAEH,QAGA,MAAW,CAAQ,SAGnB,YAJA,EAI8B,CAC9B,SACA,CAEA,iCACA,IACA,YAKA,yCAEA,uBACA,MAGA,iBACA,aAGA,sCACA,EAGA,sBAEA,GAIA,iCAEA,oBAGA,mEAGA,iBAEA,KAAe,SACf,SACA,EACA,EACA,iCCiGA,aACA,2DACA,YAnNA,SAsBA,KA0La,IAzLb,KA8CA,mBACA,aAEA,KACA,GACA,EACA,EAEA,cACA,UAEA,IAGA,EACA,qBAEA,IAIA,aACA,IACA,GACA,KAEA,UAEA,2BAIA,iBACA,CACA,QACA,IACA,IACK,KAGL,sBACA,GAGA,eACA,CACA,MAEA,UACA,cACA,6BAGA,eACA,UAEA,mCAGA,eACA,CACA,SAEA,SAGA,gBACA,aACA,oBAEA,KAEA,iCACA,IACA,aAGA,oCAEA,gDACA,OAGA,uBACA,8BACA,YACA,GAGA,2BACA,2BAIA,eACA,gCACA,OAEA,IAEA,QAGA,iDACA,2BAIA,eACA,gCACA,OAEA,IAEA,iBACA,QAGA,0BAEA,sCACA,iCAGA,YAGA,eACA,YAEA,EACA,EACA,EACA,uNC1MA,SAoBA,KAEA,uCAEA,QACA,SACA,CACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEA,cACA,qBC3CA,aAmBA,aACA,SACA,UACA,sBAQA,sFACA,EAsCA,aACA,6CACA,MAEA,iBACA,QAEA,QAAqB,EADrB,IAC8B,KAC9B,+BACA,YAEA,kBACA,IA/EA,aA+BA,WAEA,uBACA,IAjCA,cAmCA,WACA,SAEA,iBADA,MAGA,iBAGA,aAEA,QAEA,YAAoB,IAAO,UAC3B,6FACA,WACA,iBACA,gBAGA,YACA,sDACA,SACG,OACH,+EACA,SACA,gBAGA,OACA,GA/DA,EAEA,cA6EA,WACA,aAEA,WACA,IACA,GACA,OAGA,cAA0C,EAP1C,IAOoD,KACpD,yBAIA,UACA,aACA,WACA,QACA,YACG,MACH,yBACA,WACA,SACA,cACA,YAGA,YAEA,UACA,KAtGA,OAJA,MACA,sCAEA,8FACkC,SAAS,EAC3C,WACA,sBACA,EAEA,wBACA,yCCjBA,yBAQA,CAuDA,YACA,UACA,oBACA,WACA,WAEA,iBACA,QACA,wBAEA,uCAEA,uCACA,mBAGA,YACA,qBAEA,eAGA,IACA,EAUA,CAEA,oBACA,6CACA,uBAIA,2BACA,IACA,6BACA,OAGA,mFACA,GACA,qBACA,IAUA,uBACA,IACA,wCAGA,6FACA,wBAGA,IACA,4BAGA,SACA,GASA,CAkBA,cACA,IACA,wCACG,4CACH,0BAEA,wCAEA,uBACA,UACA,IACA,WAEA,IAIA,iBAKA,IAJA,qCACA,kBAEA,GAMA,CAKA,iBACA,MACA,mBACA,YACA,+BAAmB,KAAU,GAC7B,YAGA,QACA,GAIA,CAWA,oBACA,0BACA,cAGA,sBACA,wBAGA,qDACA,mBAEA,uBAEA,gBAIA,mBAGA,KACA,GAEA,iBACA,sBACA,uBACA,eAAiB,KAAY,OAC7B,SAEA,iBACA,IAEA,uBACA,OAEA,+BACA,wBAGA,wDACA,wBAGA,sDACA,2BACG,IACH,8BAEA,yBAGA,MAEA,wBACA,kBAGA,mBAEA,IACA,GAEA,iBACA,mBACA,QACA,8BAEA,IACA,eAGA,mBACA,IACA,GAEA,OACA,IACA,6EACA,4CACA,aAEA,QAGA,iCACA,qBAEA,KAEA,qBACA,sFAEA,cAGA,QACA,yBACA,2EAEA,gBACA,MAqFA,iBACA,eACA,cAEA,2CACA,6EACA,wBAEA,WACA,4BAGA,cACA,uBAGA,GAEA,OADA,gBAEA,QACA,YACA,aACA,eACA,QACA,WACA,QACA,0BACA,WACA,WACA,YACA,cACA,iBACA,UACA,kBACA,MACA,uBACA,OACA,4BACA,kBACA,cAGA,QAGA,oBACA,IASA,wBACA,WAIA,WACA,aAGA,4BACA,kBAGA,QACA,YAIA,YACA,QAEA,MACA,SAGA,eAGA,iBACA,QACA,wBAEA,QACA,WACA,yBAEA,QACA,0BAEA,QACA,aACA,2BAEA,QACA,0BAEA,QACA,WACA,YACA,cACA,6BAEA,IACA,uDACA,eACA,cAGA,OAGA,CAGA,oBACA,WACA,cACA,WACA,GAkIA,0BAEA,yBAGA,KACA,wBACA,MACG,GACH,iBACG,YACH,oBAEA,gBACA,SAEA,wBAIA,uBACA,kBACA,cACA,eACA,CAAG,SACH,cACA,cAIA,KACA,mCAIA,gBAEA,UACA,gBAEA,gBACG,OACH,+BACA,MACA,qBACA,gDACA,2CAEA,gDAGA,oBAGA,wBACA,wCAEA,0BACA,mBAmBA,OACA,UAEA,uBAEA,GAEA,QAzBA,QACA,aAEA,UACA,yBACA,2BACA,+CACA,iBACA,mBAEA,KACA,MACA,MACA,MACA,CAGA,IASA,UACA,SACA,SAAwB,MAAe,GACvC,sCACA,oBAIA,QAGA,sBANA,2BAEA,EAKA,2BACA,OAAwB,GAAQ,WAChC,QACA,UAAqB,KAAe,GACpC,iCACA,CACA,MACA,KAEA,aACA,GAGA,QACA,EAcA,uBACA,SACA,mBACA,GACA,QAGA,MACA,QAKA,QAPA,aAQA,sCAEA,4BACA,UAEA,cAAiB,QAAY,QAC7B,kCACA,oBACA,cACA,EACA,OACA,IAEA,uBACA,qCACA,IAEA,uBACA,wBACA,IAEA,uBACA,mBACA,IAEA,uBACA,wBACA,IAEA,uBACA,qCACA,IAiFA,oBACA,wBACA,wBAEA,iCAEA,KAEA,oBACA,uBACA,WAEA,UACA,UACA,WACA,OACA,eACA,SACA,SACA,EAEA,eACA,cAEA,GAEA,GADA,GAEA,YAGA,IACA,gBACA,GACA,8BACA,MACA,YAIA,MACA,gBACA,YACA,kBACA,0CACA,0BACA,eAIA,MACA,gBACA,YACA,YACA,iCACA,sDACA,gBACA,gBAIA,YAEA,CAGA,cACA,SACK,GAEL,eACA,cACA,6BAGA,iBACA,QACA,EAEA,WACA,GAIA,CAGA,eACA,WACA,cACA,2CAIA,eACA,MACA,KACA,4BACA,MACA,uBAGA,WACA,IAEA,qBACA,QACA,yBAEA,eAAqB,MAAS,GAC9B,6BAEA,kBACA,IAEA,qBACA,QACA,yBAEA,eAAqB,MAAS,GAC9B,gCAEA,WACA,IAEA,qBACA,WAEA,wBACA,2BAEA,eACA,MAAqB,MAAS,GAC9B,eAEA,WACA,IAEA,qBACA,wBACA,OACA,MAAiB,QAAkB,WACnC,iCAEA,oBACA,IAyCA,qBACA,uCACA,uDACA,yCA8JA,8BACA,wCACA,oFACA,6EACA,sBAiDA,wBACA,oBACA,yCAAuD,MAAO,GAC9D,mCACA,OAEA,eA4BA,wBACA,yBACA,yCAAuD,MAAO,GAC9D,eAEA,wBAiJA,wBACA,yCACA,mDACA,sBAEA,2BACA,OACA,yCAEA,gDACA,MACA,EAUA,2BACA,OACA,0CAEA,iDACA,MACA,EA+HA,eAEA,yBAEA,sBAEA,QACA,oBAEA,UACA,IAEA,eACA,mBACA,+BACA,IAEA,eACA,8BACA,gBACA,IAEA,kBACA,QACA,uBAEA,UACA,KAEA,SAAiB,EAJjB,MAI6B,QAC7B,qBAGA,uBAEA,QAEA,aAEA,6BACA,KACA,QAAS,mBAET,6BACA,KACA,QAGA,IAEA,GACA,QAGA,aACA,6BACA,QACA,GACA,QAGA,4BACA,KAAK,KAEL,iCAGA,WAGA,YACA,cACA,cACA,GAAK,iBACL,cACA,SACA,KACA,UAEA,UAAK,kBACL,cACA,SACA,KACA,WACA,aAEA,UAAK,oBACL,cACA,SACA,KACA,WACA,cACA,aAEA,UACA,sBAEA,qBAEA,OACA,IAEA,eACA,QACA,UAAiB,QAAgB,OAEjC,aAEA,6BACA,IAEA,kBACA,QAEA,UAAiB,QADjB,SACiC,UAGjC,WAFA,sBAGA,WACA,QACA,YACA,YAGA,UACA,IAEA,eACA,0BACA,KAEA,wBACA,YAAiB,KAAY,+BAE7B,QADA,kBAGA,UACA,IAEA,eACA,aACA,GAlvDA,SACA,UACA,eAEA,WACA,aAoTA,YACA,YACA,QAEA,YACA,KAxTA,oBAyBA,GACA,wBACA,6BAQA,UACA,IACA,uBACA,wBAAqB,6CAAmD,UACxE,GACA,eACA,gCACA,+BAAG,UACH,CACA,QACA,EAbA,KAJA,oBAKA,iBAkEA,WAEA,KACA,uBACA,uBACA,UACA,IA0BA,yBACA,qBACA,GAEA,IACA,uDACA,sBACA,8CACA,6BAEA,0CACA,OACA,KAGA,mBA8BA,0BACA,qBACA,KAgBA,0BACA,eACA,GAGA,EACA,8BACA,eACA,KAgHA,uBACA,uBACA,YAEA,yBACA,iCACA,wBAGA,8CAEA,iBACA,aAEA,2BAAuC,OAAS,GAChD,wBACA,OACA,UACA,IACA,KAGA,eACA,QACA,EACA,GAEA,yBACA,gBACA,mBACA,UACA,WACA,YACA,YACA,aACA,aACA,aACA,WACA,YACA,cACA,WACA,SACA,QAEA,YAEA,wBACA,QACA,wBAGA,kDACA,6BAGA,MACA,OACA,mBACA,KAAe,QAAiB,OAChC,gBAIA,4BACA,OACA,SAAa,QAAiB,YAC9B,WACA,mBACA,wBAEA,0DACA,WACA,MACA,OACA,KA6CA,eA0EA,yBAQA,6BACA,aACA,UACA,6BAEA,wDAAiB,KAAS,OAC1B,eAEA,SACA,OAEA,6BACA,aACA,UACA,6BAEA,wDAAiB,KAAS,OAC1B,eACA,kBAEA,SACA,OAEA,6BACA,aACA,UACA,6BAEA,wDAAiB,KAAS,OAC1B,eACA,kBACA,kBACA,kBAEA,SACA,OAEA,+BACA,QACA,2BACA,iCACA,iBACA,YAEA,+BACA,wCACA,2CACA,IACA,wBAEA,8BACA,QACA,QACA,wBACA,oDAAkD,cAClD,0BAEA,wBACA,KAEA,4CACA,gBACA,wBAGA,gCACA,iBAEA,GACA,8BAEA,GACA,iBAEA,GACA,sBAGA,0CACA,4BAGA,qCACA,SAEA,UACA,UAEA,SACA,SAGA,YACA,QACA,QACA,QAEA,kBAEA,iBACA,SACA,kBAEA,qBACA,mBAEA,OAAiB,KAAS,GAC1B,wBACA,OACA,UACA,IACA,KAGA,eACA,QACA,EACA,CAUA,EAkHA,uCACA,QACA,4BAEA,sCACA,qBACA,QAEA,0CACA,qBACA,QAiDA,uCAEA,IACA,eACA,eACA,UAEG,uBACH,uBACA,WACA,UAEG,mBACH,QACA,WACA,SACA,mBAEA,aACA,GAIA,yBACA,OAIA,8FACA,gCAEA,uCACA,4BAGA,kDAEA,QAEA,OADA,gBAEA,QACA,0BAEA,QACA,WACA,4BAEA,QACA,4BAEA,QACA,aACA,6BAEA,QAEA,6BAEA,QACA,WACA,YACA,cACA,+BAEA,IACA,uDACA,eACA,cAGA,SAEA,6BACA,OACA,MACA,yDAEA,KAsFA,YA8DA,iCACA,aACA,YACA,uBAEA,GACA,UACA,aACG,OACH,QAGA,IACA,UACA,aACG,OACH,QAGA,eAEA,OACA,SACA,wCACA,mBACG,cACH,WACA,YACA,sBAAmB,KAAc,GACjC,oBAEA,GAEA,OACA,GAIA,EAMA,yCACA,KACA,MACA,oBAEA,wBACA,OACA,KACA,gBACA,sBAGA,SACA,KAEA,yCACA,KACA,MACA,EACA,kBAGA,2BACA,SACA,aACA,wBAGA,SACA,KAEA,qCACA,yBACA,aACA,KAEA,wCACA,yBACA,6BACA,GAEA,wCACA,yBACA,4BACA,IAEA,wCACA,yBAEA,cACA,gBACA,cACA,IACA,qBAEA,wCACA,yBAEA,QACA,+BACA,eACA,UACA,KAEA,wCACA,KACA,MACA,oBAEA,wBACA,OACA,KACA,gBACA,sBAEA,cAEA,8BAEA,KACA,IAEA,wCACA,KACA,MACA,oBAEA,mBACA,MACA,aACA,iBACA,wBAEA,cAEA,8BAEA,KACA,IAEA,oCACA,yBACA,sBAEA,wBADA,KAGA,uCACA,kBACA,oCACA,gCACA,IAEA,uCACA,kBACA,oCACA,gCACA,IAEA,uCACA,yBAEA,aACA,gBACA,cACA,eACA,IAEA,uCACA,yBAEA,kBACA,eACA,eACA,UACA,IAEA,uCACA,yBACA,8BACA,IAEA,uCACA,yBACA,8BACA,IAEA,wCACA,yBACA,8BACA,IAEA,wCACA,yBACA,8BACA,IAQA,6CACA,QACA,OACA,MACA,MACA,yBACA,sBACA,EAEA,QACA,KACA,eACA,qBACA,kBAGA,oBACA,IAEA,6CACA,QACA,OACA,MACA,MACA,yBACA,sBACA,EAEA,WACA,KACA,kBACA,qBACA,kBAGA,oBACA,IAEA,yCACA,YACA,OACA,0BACA,yCACA,cACA,UACA,GAUA,4CACA,YACA,OACA,4BACA,KACA,8BACA,uBAEA,cAEA,UACA,GAEA,4CACA,YACA,OACA,4BACA,KACA,mCACA,aAEA,mBAEA,UACA,GASA,4CACA,YACA,OACA,iCACA,KACA,qCACA,mBACA,mBACA,WAEA,mBAEA,UACA,GAEA,4CACA,YACA,OACA,iCACA,KACA,mCACA,mBACA,mBACA,aAEA,mBAEA,UACA,GAEA,4CACA,QACA,OACA,MACA,wBAEA,0BACA,GAEA,QACA,KACA,KACA,eACA,qBACA,mBACA,uBAEA,eAGA,4BACA,IAEA,4CACA,QACA,OACA,MACA,wBAEA,0BACA,GAEA,WACA,KACA,KACA,kBACA,qBACA,mBACA,uBAEA,eAGA,4BACA,IAEA,wCACA,YACA,OACA,2BACA,2CACA,sBACA,YACA,UACA,GAEA,2CACA,YACA,OACA,6BACA,SACA,8BACA,uBAEA,cAEA,UACA,GAEA,2CACA,YACA,OACA,6BACA,SACA,mCACA,aAEA,mBAEA,UACA,GAEA,2CACA,YACA,OACA,kCACA,cACA,8BACA,uBACA,kBACA,mBAEA,eAEA,UACA,GAEA,2CACA,YACA,OACA,kCACA,oCACA,KACA,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GACA,IACA,uBACA,QACA,oBACA,QACA,YAEA,GACA,EACA,QAEA,WAiCA,sECrOA,SAmBA,KACA,mBAQA,iBACA,OAQA,gBAGA,4BAQA,kCAaA,4CACA,KAKA,UACA,gBACA,mCACA,iCACA,sBACA,UAOA,WACA,eACA,EAKA,UACA,kBACA,KAKA,sBACA,4BACA,UAKA,4BACA,4BACA,SAUA,mBACA,yBACA,oBAEA,GACA,IACA,uBACA,QACA,oBACA,QACA,YAEA,GACA,EACA,qDC9HA,OAeA,IACA,OAWA,oBAKA,cAQA,4BAMA,sBAEA,mBACA,gCAEA,KACA,oDAGA,EAKA,qBACA,qBACA,SACA,+BAGA,GAQA,OACA,0BACA,EAcA,aACA,cAkCA,mBAKA,oBAIA,YACA,cAOA,kFAAmF,QAEnF,IACA,CACA,EAEA,cACA,yBACA,OAEA,KAEA,KACA,kCACA,WAEA,iBAQA,YAGA,+HAAS,qBAIT,MACA,EAGA,iBACA,YACA,UAEA,GACA,GACA,EAEA,cACA,OACA,qBAGA,0BACA,EAEA,cACA,4BAOA,eACA,KACA,oFAAM,QAGN,GAEA,cAaA,OACA,cACA,kBACA,EACA,SArIA,YACA,aACA,KAEA,SACA,OACA,gBA+GA,MAEA,oBACA,KACA,WAIA,qBACA,IAEA,EAxHA,QAaA,SAGA,gHAAyB,SAEzB,6BAAwD,SACxD,IAEA,0BACA,aAEA,EA8GA,UACA,qBAEA,KACA,2CAEA,EACA,uDCjPA,QAiBA,KA2EA,IA1EA,KAOA,iBAIA,aAKA,YAKA,gCAKA,wBAGA,gCACA,yCAGA,8DACA,wCAGA,qCACA,wCACA,6CACA,wBACA,iCACA,gBAOA,OACA,cAEA,wBACA,gBACA,sEACA,iBACA,YACA,UACA,kBACA,6BACA,sCACA,6BAEA,SACA,EAOA,UACA,kBACA,SACA,kDC5FA,SAkBA,KACA,mBAMA,eACA,OAQA,wBAQA,yBAEA,qBACA,4BACA,SAKA,sBACA,sBACA,OACA,kJCtDA,SAyCA,KACA,OAOA,iBAOA,YAQA,iBASA,iBAeA,yCACA,aAEA,uDAAsD,UAetD,oCACA,UAQA,+CAA+C,UAC/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sEACA,aAEA,uBACA,6BACA,iBAEA,+DAEA,wBACA,gBACA,OACA,qBACA,MACA,SAGA,WAEA,IACA,KAGA,OACA,EAEA,GACA,0BAIA,6BACA,UACA,GACA,gBAIA,sBACA,EAAC,GAYD,oBACA,oBACA,oBACA,oBACA,oBACA,iBAEA,GACA,0BAKA,MACA,qCACA,MAEA,0KAEA,iBACA,EACA,GACA,gBAIA,sBACA,EAEA,GACA,0BAGA,6BACA,WAGA,kBACA,EAEA,GACA,0BAIA,MACA,qCACA,MAEA,0KAEA,iBACA,GAGA,kBACA,EAEA,GACA,0BACA,oBACA,6BAGA,yCACA,kCAEA,cACG,4CAKH,YACA,sEAIA,mCACA,kCACA,+EAEA,0CAGA,UACA,GAKA,YAEA,2CACA,4FACA,wFACA,0EAIA,mCACA,kCACA,+EAEA,0CAGA,UAEA,GAEA,qBACA,EAEA,GACA,0BAGA,OACA,+DAGA,kBACA,EAEA,GACA,0BAIA,SACA,qJAEA,aACA,SACE,wFAIF,YAOA,0CAGA,8BAGA,4BACA,+BAKA,mCAEA,4BACA,yCAKA,mCACA,wBACA,oCAEA,IACA,GAEA,qBACA,EAEA,GACA,wBACA,KAEA,iEAEA,mCAGA,oBACA,oEACA,CACA,uEAKA,6DAHA,UAIA,KAIA,QACA,EAEA,GACA,0BAGA,kEACA,SACA,GACA,gBAIA,uDAMA,KACA,CAEA,qBACA,EAEA,GACA,wBAEA,YAEA,2CACA,sBAGA,IACA,CAEA,GACA,0BAIA,SACA,qJAEA,aACA,QACA,GACA,gBAEE,4FACF,YAGA,4CAGA,2BAGA,6FAEA,MACA,GAEA,qBACA,EAEA,GACA,0BACA,0DAEA,mBAEA,0CAGA,YACA,wEAEA,UACA,GAEA,OACA,EAEA,GACA,wBACA,KAEA,iEAEA,uCAGA,uCACA,6DAIA,UACA,EAEA,GACA,0BACA,sBACA,uBAGA,sBACA,+BACA,4CAEA,oBACA,iBAEA,EAGA,OACA,EAEA,GACA,0BACA,KAEA,kCAEA,mCACA,0CAEA,oBACA,gBAEA,EAEA,qBACA,EAGA,iCC1UA,mBACA,WACA,cAEA,+BAEA,oBACA,kBA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,iEAIA,wBAGA,iCAGA,MAYA,yBACA,YAEA,yBAEA,2BAKA,2BACA,UAIA,oBAEA,gCAEA,GACA,SAEA,EAEA,OACA,EAQA,wBACA,iCAEA,4BACA,gCACA,uCACA,oBAEA,+BACA,GAGA,CAQA,0BACA,iCAEA,6DACA,EASA,qBACA,iCAEA,4DACA,EAQA,0BACA,qBACA,wBAEA,iDACA,iCAEA,uBACA,EAEA,kBACA,iCAEA,sBACA,EACA,CAUA,4BACA,cAEA,yBAEA,0BAEA,cAGA,4BAGA,mBACA,mBAGA,gBAAG,KAGH,iCACA,qCAGA,iBAGA,GACA,QAIA,KACA,YAEA,MACA,OACA,oBAKA,OACA,YAEA,MACA,OACA,gBAKA,GACA,WAEA,uBAEA,OACA,EASA,4BACA,iBAEA,qCACA,0BACA,oBAEA,0BACA,iDAGA,GACA,wBAGA,uCACA,0BACA,KAEA,iCACA,EACA,MAUa,sEC9oBb,OAyBA,GACA,OAIA,cAOA,kBACA,IAOA,oBACA,sBACA,QAQA,OACA,0BACA,EASA,OACA,8BACA,IAgBA,SACA,+BACA,sBAEA,QACA,WAEA,wBACA,SAGA,eACA,EAEA,6BACA,aAEA,8BACA,mBAEA,GACA,CAQA,UACA,+BACA,sBAEA,WACA,yBACA,sBAEA,uBAMA,MAQA,yBACA,aACA,oCACA,UAGA,GAKA,UACA,4BACA,6BAGA,iBAEA,UACA,eAeA,oBACA,4BACA,6BACA,YAGA,GAQA,kBACA,GACA,6BACA,sBACA,IAeA,QAEA,WA6BA,KACA,OAOA,iBAOA,WAQA,kBAEA,wCACA,KAOA,WACA,UAMA,yBAGA,2GACA,MAOA,SACA,UAMA,yBAGA,2GACA,IAcA,WACA,UAMA,yBAGA,6FACA,WAeA,EAEA,wHCjVA,SAkBA,KAEA,WACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,iBAMA,IAYA,IAXA,KAQA,qBACA,oCACA,EACA,iCCwgBA,aACA,UACA,QAGA,CACA,eACA,WAAiB,MAAuB,OACxC,yBAGA,QACA,EAEA,CACA,eACA,OACA,8EAIA,CACA,aACA,OACA,cACE,KACF,cAEA,2BAEA,MAEA,+EAxlBA,OA+DA,QA4cA,eACA,IACA,GAEA,cACA,SACE,4BACF,SACE,+BACF,SACE,mCACF,SACE,4BACF,SACE,4BACF,SAEA,gBAGA,EACA,gBACA,SACG,4BACH,SACG,+BACH,SACG,mCACH,SACG,4BACH,SACG,4BACH,SAEA,gBAIA,eAEA,0BACA,EAGA,EAtfA,QACA,iBAGA,uBAEA,WAGA,8FAEA,IACA,EAEA,qBAEA,yBAEA,kBAEA,kBAIA,sBACA,WAGA,4GAEA,WACA,EAGA,sBAEA,qBAEA,+DAGA,6CACA,gDACA,YACA,EAIA,2BACA,kBAIA,+CACA,gDACA,YAGA,qCAEA,aAIA,KACA,iDACM,cACN,6BAIA,KACA,CAEA,UAEA,QAEA,yBAEA,kBAEA,kBAGA,oBAEA,2DAGA,YAKA,0BACA,mFAGA,2BACA,2BACA,sBAMA,sCAGA,8BAEA,SAKA,yEACA,kEAOA,gFAGA,WAIA,2DACA,kEAEA,6BAIA,eACA,gDACA,YACA,EAGA,0BACA,iBAEA,qBAIA,+BACA,mCACA,kDACA,YAKA,oBADA,aAGA,kBAEA,kBAEA,gBAGA,mBAEA,qBAEA,WAGA,mFAEA,eACA,EAEA,qBAEA,yBAIA,wBAEA,WAEA,gCACA,aACA,cAEA,8BAIA,qBACA,EAEA,kBAGA,oBACA,WACA,+BAEA,kHAEA,IACA,EAGA,mBAEA,qBAEA,WAEA,iBACA,gGAGA,MACA,gGAGA,KACA,EAEA,qBAEA,yBAEA,kBAIA,wBAEA,WAEA,qBACA,QACA,eAEA,+BAIA,qBACA,EAGA,oBAEA,WAEA,sBACA,8EACA,yCACA,EAEA,eACA,8EACA,yCACA,EAEA,QACA,EAGA,iBAGA,uBAEA,yDACA,oFAEA,eACA,cACA,2BACA,mBACA,OACA,sFACA,6BAGA,iCAEA,qBACA,+BACA,6CAGA,uBACA,EAEA,qBAEA,yBAEA,kBAEA,kBAIA,sBAIA,gBAGA,YAOA,qDACA,gCACA,4BAEA,mBAEA,SACA,8BAEA,KAIA,iCACA,MACI,sCACJ,OAIA,gEACA,6DAGA,YAGA,0BAEA,IACA,yFACA,6FAEA,oBAIA,8BASA,oEAIA,wCACA,sDACA,6CAQA,2BACA,8FAEA,oEAIA,oDACA,kEAGA,4CACA,cAEA,aAIA,IAIA,gCAOA,UACA,kBACA,qBAEA,gBAEA,eAKA,qCACA,wBACA,iBACA,iBACA,SACA,cAIA,mCAEA,cACA,eACA,6BACA,sCACA,4BAGA,kCAEA,qBAGA,qDACA,iCAGA,sBACA,EACA,EAEA,qBCzgBA,qBAcA,GACA,mBAQA,0BACA,OAQA,aAQA,gBACA,CAUA,eACA,aACA,IAKA,QACA,OACA,8CAIA,8BAFA,EASA,SACA,aACA,QACA,sCC0fA,iBAEA,oBACA,aAGA,cACA,WAGA,iBACA,GAGA,wCAEA,mBACA,IACA,IAEA,QAEA,SAEA,CACA,+CA7lBA,SAmCA,GACA,OAIA,cAQA,iBASA,oBAQA,oBAQA,8BAGA,uBACA,2BACA,4BACA,qCAEA,sBAAe,sBACf,qBAAe,uBAMf,gDACA,oBAAe,uBACf,oBAgBA,SACA,+DACA,WAQA,YACA,kEACA,WAgBA,uBACA,oCACA,EAoCA,SACA,oBACA,MAIA,oBACA,YAKA,sCAIA,6BARG,4CAWH,qDACA,sBACA,EAGA,wDACA,YAIA,wBACA,uBACA,sCACA,GAWA,mCACA,IAEA,kBACA,sCACA,CACA,KACA,KAKA,KACA,EAEA,QAEA,CACA,QAQA,WACA,wBACA,EAWA,kBACA,iBAMA,iBAGA,sGAMA,iBAIA,oGAOA,uEACA,+BACA,EASA,iBACA,oCAMA,iBAGA,8GAEA,yBACA,EAUA,YACA,kBAMA,iBAGA,mGACA,EASA,8BACA,IAEA,kBACA,eACA,eACA,cACK,eACL,WAGG,4BACH,aAEA,OACA,mBACA,UAGA,SACA,SAAG,eACH,eAGA,YACA,EACA,MAQA,EACA,OAMA,eAOA,cAQA,OAQA,iBAQA,oBACA,sBAQA,WACA,4BACA,EAQA,cACA,+BACA,EASA,qBACA,+BACA,EAUA,gBACA,KAEA,iBACA,QAGA,gBACA,gBAAyB,QAEzB,aAUA,eACA,wCACA,YAEA,iBACA,iBACA,YAIA,YACA,EAUA,4BACA,IAEA,4CACA,CAEA,iBACA,uBACA,CACA,KACA,KAGA,IACA,EAEA,KAEA,OACA,EAWA,wBACA,0BAEA,iBACA,uBACA,GAIA,SACA,QAOA,SACA,kBAGA,uBAEA,iBACA,CAmC0B,yICnkB1B,OAyCA,IACA,OAIA,cAOA,kBAQA,uBASA,0BAQA,mBAYA,cAQA,6DACA,mDAQA,gCAGA,sBACA,sBACA,sBACA,sBACA,sBAEA,cAIA,2BACA,MACA,iCACA,cACA,iBACA,EAeA,eACA,2BAEA,MACA,QAGA,WAEA,4BAEA,uBACA,qBAGA,YAEA,SACA,CAQA,eACA,4BACA,EAwBA,uBACA,gCAEA,kCACA,qBAEA,sBAGA,qEACA,0EACA,8DAEA,gCACA,yBAGA,GACA,CAaA,0BACA,sBAEA,uBAEA,oCAEA,uCACA,oCAEA,4CACA,qBAEA,EASA,kBACA,uBACA,EAQA,qBACA,0BACA,EAQA,SACA,WACA,SAMA,QACA,oBACA,wBAEA,gBACA,2BACA,QASA,mBAEA,2EACA,CAKA,mBACA,8BACA,WAEA,SAKA,kBACA,8BACA,WAEA,QAKA,UACA,8BACA,WAEA,SACA,QAEA,WAmBA,sBCpVA,qBAmBA,IACA,mBACA,eACA,OAEA,qBACA,OAEA,cACA,kBACA,EACA,MAcA,gCC2EA,aACA,eACA,mBACA,kBACA,gBACA,kCA5HA,QAsBA,KACA,mBAMA,eACA,OASA,oGACA,IAKA,UACA,cAEA,+BACA,WAEA,uCAEA,cAEA,6CAEA,SAAG,EAAG,UACN,UAKA,UACA,OAEA,iDACA,QAeA,wBACA,uBACA,oCACA,KAGA,sCACA,YAIA,6CACA,cAGA,wBACA,cACA,eACA,eAIA,2CAMA,0CACA,EACA,MAMa,mBCtHb,qBAsBA,IACA,mBACA,eACA,OAEA,QACA,mCAEA,+BACA,GAMA,6DACA,EAEA,sBACA,qBAEA,iCACA,YAGA,eAEA,SAQA,EAEA,cACA,kBACA,EAKA,UACA,MACA,oCAGA,wBACA,SACA,MA4BA,wCCrGA,QAkBA,IACA,mBACA,eACA,OAEA,qBACA,SAEA,cACA,uBACA,WAEA,iBACA,4BACA,mBAEA,wBACA,iBACA,KAEA,GACA,MA6BA,mBCpEA,qBAmBA,IACA,mBACA,eACA,OAEA,qBACA,WAEA,cACA,kBACA,EACA,MAaA,yDC3CA,QA2BA,KACA,mBACA,eACA,OAWA,uCAQA,mBAQA,mBAQA,8BASA,gCASA,0GAEA,0DAQA,gDACA,CAKA,WACA,WAGA,kCAIA,2CACA,6BACA,EAEA,uBACA,GAKA,UACA,OAEA,6BACA,mEACA,QAUA,0BACA,kCAKA,iCAIA,8BACA,sDAEA,8BAOA,OASA,2BAKA,qBAHA,yGAIA,mBACA,uBACA,eAIA,wCAMA,0CACA,IAOA,qBACA,uBACA,CACA,MAqCA,gCCjKA,aACA,WAEA,uBACA,oCAEA,0BACA,oBAEA,EAKgD,CAChD,aACA,eAEA,iBACA,OAEA,EAMoB,CACpB,eACA,WAGA,YAIA,aACA,cAGA,kBACA,uBAMA,iCACA,6CAOA,aAEA,gCAEA,mCALA,+DA5GA,IAiBA,eACA,WAEA,aAMA,gBAIA,uFAGA,SACA,gBACA,qCAAmF,UAKnF,4CAGA,kBAGA,OACA,EAMA,EAnDA,WACA,WAEA,KACA,WAUA,uCC6nBA,eACA,sCACA,GAOoD,CACpD,aACA,iCACA,OAEA,eAEA,kBACA,YAGA,qCAEA,YACA,oFAhrBA,QAoCA,GACA,OAOA,iBAMA,sBAQA,uBAQA,2BAQA,4BAQA,yBAQA,oBAQA,qBAQA,UAQA,0CACA,IAcA,gBACA,IACA,mDACA,8BAEG,OAGH,2CACA,GAGA,UACA,2CACI,WACJ,uCAOA,sBAEA,0EACA,CA0BA,SACA,IAKA,6BACA,mCAIA,2BACA,qBAGA,gCACA,mDAGA,6CAGA,2BACA,wFACA,4BAA6B,CAI7B,2CACA,mCAGA,qBACA,sCAAmC,CAGnC,8BACA,wBAEA,gCACA,8BACA,4BAGA,qDACA,EASA,wBACA,KACA,EAKA,+BAHA,kDAMA,sBAMA,sBAGA,uFACA,MAeA,2BACA,wBAEA,sCACA,2DAEA,QAEA,CAUA,6BACA,kDACA,YAYA,gCACA,yDAEA,4DAKA,OAOA,sBACA,cAGA,2BAOA,iBAGA,4EACA,4BAEA,wBAGA,wBACA,IAQA,gCACA,kDACA,YAGA,gCACA,uBACA,WAGA,0DACA,MAGA,kBACA,WAIA,kBACA,kBAGA,mBACA,eAEA,+CAKA,UAWA,iBACA,+CACA,qCAEA,mBACA,aAEA,eAEA,wDACA,cAGA,MACA,WAEA,EAQA,gBACA,+CACA,yCACA,UAGA,+BACA,mCAIA,gBACA,kBACA,sBAGA,EAWA,qBACA,gBA6CA,QACA,EAGA,sCACA,cAGA,kBACA,2BAMA,YACA,cA5DA,qCAEA,MAMA,aAEA,kBAEA,yBACA,gDAAqG,CAErG,6BACA,aAEA,iCACA,gBAEA,0CAEA,KAEA,sBAEA,SAEA,cACA,GACA,6BACA,IACI,KAEJ,mDACA,eAEA,KAIA,IAyBA,mBAEA,IACA,8BAMA,YALA,gCAEA,2FAMA,iCAKA,mBACA,iCAEA,SACA,gDAEA,IAQA,wBACA,WAGA,mBACA,uEACA,mDACA,+CACA,0CACA,oEAIA,uCACA,kCAIA,oEACA,oDAGA,YACA,iBACA,6BACA,iCACA,oCAGA,yEACA,UAQA,uBACA,qCACA,yDAEA,kCAIA,+BACA,SACA,cACA,wBAGA,WAGA,sIADA,EAQA,4DACA,6DAEA,6BACA,4BACA,QAOA,sBACA,gCACA,WAEA,+BACA,WACA,8DAEA,MACA,oBAEA,iBACA,CACA,CAOA,uBACA,cAEA,wBACA,KAEA,QAOA,eACA,mBACA,wBAEA,gBACA,2BAEA,EACA,CACA,QAEA,WAQa,sBCxpBb,qBA8BA,GACA,OAWA,mBAOA,kBAEA,gBAMA,qBAGA,gGAMA,qBAQA,gGAQA,qBACA,CAaA,gBACA,8CACA,MAQA,aACA,sBACA,MAQA,WACA,sBACA,IASA,eACA,sBACA,QAUA,MACA,OACA,cAWA,gBAA0B,gBAAyC,gBACnE,MACA,iDAEA,OACA,4CACA,OAGA,aACA,EACA,sCC5HA,mBACA,WACA,gBACA,0BACA,eAGA,iDAKA,mBACA,EAOA,YANA,qBAGA,OAIA,UACE,WACF,kCACA,4BAEmD,OAEnD,IAKA,OAPA,UAaA,kBAGA,GACA,GAEA,iBACA,cAIA,WACA,oCAEA,oDACA,EACA,cAGA,uBACA,qBAlGA,QAgBA,GACA,mBAIA,aACA,qBACA,aAEA,6BACA,oCAEA,iCAA+B,CAC/B,SACA,EACA,MAO6C,gDCtC7C,SAiBA,IACA,mBACA,eACA,OAEA,yBACA,gCACA,kCAEA,UACA,EAKA,WACA,MAUA,+DC3CA,OAmBA,IACA,mBAOA,iBACA,OAEA,sBAUA,YAGA,uDACA,MACA,oBACA,cAyBA,EAUA,YAAyB,KACzB,cACA,WAGA,gBAEA,2BACA,oBAEA,iCAEA,wBACA,YAYA,+BAGA,8CAZA,YACA,6BAGA,0BAAoC,aACpC,SAGA,CAKA,EAKA,eACA,iDAEA,+CACA,aAKA,gBACA,iDAEA,kEACA,WACA,qCAEA,IACA,MASA,gCCpDA,mBACA,sBACA,kBAEA,uBAIA,qCACA,mBAEA,GACA,4CAEA,8CAEA,8CAzGA,IAwBA,UACA,kBACA,WAIA,kBAA6C,eAK7C,0BAAqC,0CAKrC,4BAEA,iCAAwE,mBAKxE,qBAA0C,eAC1C,sBAAgC,mBAGhC,gCACA,oBAIA,qBAAqC,CACrC,yDAKA,uBACA,iCACA,oBACA,oBACA,aAEA,eACA,GACA,CAOA,EAtDA,IAuDA,aACA,aACA,QAAiC,iBAAgB,SACjD,QAAoC,oBAAgB,SACpD,QAAoC,oBAAgB,SAEpD,EAIA,gCCqEA,mBACA,IAIA,8BACA,cACA,MAGA,qCACA,WAEA,oDACA,kCAGA,UACA,2CAEA,WAEA,EACA,EAMY,CACZ,kBACA,kBACA,WAGA,uBAIA,uBACA,sBACA,UAGA,oDACA,sBACA,OACA,UAGA,MACA,uBAGA,4BACA,OACA,CACA,CAQkD,CAClD,mBACA,wBAEA,oBACA,oBACA,EAOA,CACA,aACA,wBAAuC,CACvC,+BAEA,uCACA,uBAGA,EACA,kFArPA,QAgCA,KACA,mBAIA,OACA,cACA,WACA,qBACA,SACA,WACA,SACA,YAgBA,mCAGA,uCACA,mBAAiB,uBACjB,oBAAiB,uBACjB,uBAGA,yBAGA,OACA,aACA,kBACA,eAGA,uDAGA,4DAGA,qFAA+F,UAG/F,8FAAgH,UAGhH,sEAAiF,UACjF,QAQA,2BACA,6BACA,kCACA,cACA,wBAGA,4DACA,+CAIA,4BACA,0BACA,cACA,qBACA,EAGA,YACA,uBAGA,iBACA,kBACA,uCAEA,EASA,yBACA,WACA,yBAEA,YACA,yBAEA,GACA,MACA,yBAEA,wBAGA,aACA,CACA,MAKA,yECrIA,aACA,WACA,iBACA,gCACA,sBACA,iBAEA,YACA,EACA,CAOA,MACA,WACA,6BACA,EAOA,EAjDA,IAkDA,WACA,gBACA,mCACA,wBAIA,SACA,KASA,EAvD2B,IAwD3B,WACA,WAGA,mEACA,SAAU,CAGV,SACA,MA/DA,eAQA,8CCwCA,mBACA,WACA,UAIA,mBAA4C,SAK5C,sBAKA,qCAEA,6BAAoC,+BAKpC,6BAAyC,SACzC,0CACA,QAMY,CACZ,eACA,aACA,gBACA,QAGA,EAQqB,CACrB,iBACA,kCACA,wCAMA,cAQqB,CACrB,iBACA,+BACA,qCAMA,2BAtIA,IAkBA,WACA,kBACA,2BACA,OAEA,+BAKA,kCACA,2BACA,8BAEA,uBACA,sBAEA,GACA,CAOA,EA1BA,IA2BA,WAEA,uBAEA,iCACA,aACA,WAEA,EACA,CAQkB,wCC7DlB,QAgBA,IACA,mBAOA,iBACA,OAUA,YAQA,uBAGA,6CACA,MACA,oBACA,cACA,EAOA,eACA,qBACA,uBAEA,2BACA,QAMA,mDAEA,kEAEA,iBALA,SAUA,gBACA,wCAEA,qCACA,EAUA,YAAyB,KAEzB,SACA,MAGA,oBACA,WACA,aACA,cAEA,0CACA,oBAEA,iDACA,MACA,EACA,2FC5GA,kBAqBA,GACA,mBAIA,sBACA,QACA,IAKA,OACA,cACA,WACA,MACA,aACA,WACA,SAGA,uCAEA,CAAI,iEAGJ,MAAI,6EAIJ,2CAIA,wBAAiB,6CAGjB,2BACA,oDACA,oDACA,uDACA,uDACA,uDACA,uDAGA,iDAA+E,UAG/E,oBACA,mCAEA,GACA,MAwBA,wHClGA,kBAyBA,GACA,mBAIA,sBACA,QACA,IAKA,wBACA,OACA,4BAKA,OACA,MAGA,+CAEA,8BACA,OACA,eAGA,YAGA,8DAMA,mBAOA,0BACA,EACA,EAQA,gBACA,cACA,wBACA,4BAEA,wDACA,iBAEA,gBACA,SACA,wCACA,EAGA,sCAEA,gDAEA,qBACA,CACA,EAQA,sBACA,cAEA,iBACA,eAEA,qCACA,kCAA4C,2CAC5C,aACA,mBAGA,yBAEA,WACA,2CACA,GACA,aACA,SAEA,iBACA,SAEA,aAGA,qCAGA,8BACA,SACA,kBACA,4BAIA,+BACA,SACA,kBACA,2BACA,0BAGA,kCACA,eACA,sBACA,cACA,EAOA,oBACA,cACA,wBACA,8DACA,qBACA,gCACA,QAOA,oBACA,cACA,yBACA,wBACA,OACA,8CCrLA,QAgBA,IACA,mBAIA,eACA,OASA,YAGA,uDACA,MACA,oBACA,cACA,EAOA,eACA,qBACA,uBAEA,4DACA,uBAIA,MAKA,gBACA,wCAEA,qCACA,EAWA,cACA,cACA,WACA,uBAEA,0CACA,oBAEA,iCACA,SACA,EACA,8CCrFA,SAiBA,GACA,mBAIA,OACA,8DACA,QACA,6ECzBA,SAoBA,KACA,mBAIA,eACA,OAEA,uBAOA,yBAOA,mEACA,kCAOA,8DAEA,kDACA,YACA,CAMA,oDACA,KAEA,kBACA,CAKA,8CACA,MACA,aACA,KAEA,iBACA,CAKA,uDACA,MACA,oBAMA,+BACA,MAEA,MAUA,mBACA,sBAEA,uBACA,IAEA,YACA,iCAGA,GACA,CAQA,0BACA,qBACA,wBACA,sBAEA,oBACA,CACA,8EC/HA,SAoBA,KACA,mBAKA,eACA,OAQA,YAEA,oFACA,wDACA,WACA,EASA,gBACA,qBAEA,kDACA,OAkBA,cACA,qBACA,aAEA,+BAEA,WAGA,yBACA,WACA,uBAGA,qCAEA,sDAEA,yCAGA,gBACA,GAEA,wBAAsC,6CAA6D,OACnG,mBAAmC,UAEnC,eAGA,6BACA,IACA,CAAI,KAGJ,6CAEA,oBACA,+BAEA,EACA,CACA,EACA,8EClHA,SAsBA,KACA,mBAIA,OACA,cACA,WACA,SAGA,gCAAiC,2BAGjC,4CACA,2BACA,uCAAsD,MAGtD,sBACA,yBACA,uBACA,KACA,gCAIA,yCACA,oCACA,GACA,gHCpDA,SA4BA,IACA,mBAIA,eACA,OAEA,aAQA,uBAQA,wBAOA,4BAOA,2DACA,kCAOA,8DAOA,+DASA,8BASA,+BACA,iBACA,8BACA,mCACA,mBAEA,eAGA,wBAIA,iDACA,YACA,CAMA,oDACA,KAEA,kBACA,CAKA,iCACA,MACA,aACA,KAEA,iBACA,CAKA,0CACA,MACA,oBACA,sBAMA,+BACA,MAGA,eACA,MACA,kBACA,oBACA,sBAGA,iCAEA,sBAGA,2BACA,QACA,EAKA,OAEA,sCAEA,eACA,MAKA,QACA,mBACA,YAQA,kBACA,qBAEA,wBAEA,sBAEA,YACA,CAUA,mBACA,sBAEA,uBACA,IAEA,YACA,iCAGA,GACA,CACA,MAmBA,wCCjPA,QAgBA,KACA,mBAKA,eACA,OAGA,kEACA,eAUA,aACA,qBACA,aAEA,+BAEA,WACA,0EAGA,gBAGA,oBACA,uBAEA,WACA,EAQA,gBACA,oDACA,WACA,sCC8iBA,oBACA,aACA,qBAEA,qCAEA,4DAGA,mCACA,QAEA,mEACA,oBACA,+BAGA,8CAEA,WAAgB,gBAEhB,WACA,WAEA,CACA,mCAEA,kBACA,8CAEA,OAEA,EACA,CAIA,CACA,uBACA,2BAEA,yCAIA,8BAGA,sBAEA,gBAGA,GAGA,gCACA,6BAEA,8BACA,wDACA,4DACA,8BAGA,+BAEA,cACA,EAIA,CACA,iBACA,mDACA,WAEA,mBACA,+BAEA,uBAEA,IACA,EAYA,CACA,iBACA,mCACA,4CACA,qBACA,yBACA,mBACA,qBACA,sBAEA,2DACA,8CAEA,gCACA,CAGA,sBADA,kBAEA,WACA,WACA,GACA,iCACA,UAEA,UAEA,IAEA,QAEA,KACA,SAGA,YACA,GAEA,OACA,KAGA,CACA,iBACA,4DACA,0CAGA,KACA,IAKA,CACA,uBACA,aAGA,UAKA,YAAgD,gCAEhD,kFAGA,yBACA,2CACA,IAEA,YAEA,uBAMA,8DAEA,4CAIA,yCACA,0BAEA,IAMA,sCAKA,oBAOA,aACA,EACA,GAAG,+CAGH,WACA,yBAGA,yCAGA,kCAEA,aACA,2BACA,2CACA,mBAEA,uBACA,oBACA,GAGA,SACA,kCACA,GAGA,CACA,0BAKA,eACA,CACA,cACA,iBACA,2BAIA,qCAEA,QAEA,QAiBA,MACE,kBAkBF,+BACA,0BACA,GAAE,KAmBF,0BACA,4BACA,GAIA,qBACA,mCACA,2CAEA,YACA,kCAGA,IAEA,CACA,iBACA,0BACA,kCAEA,qBAEA,sEACA,UAEA,+BACA,QAIA,UACA,oFAh6BA,qBACA,oBACA,2BACA,sCAKA,2CACA,6BACA,wCAEA,mCACA,gBAEA,mBACA,QAaA,MACA,qBACA,wBACA,wBAGA,2CAIA,2CACA,yCAIA,eACA,sDACA,uBAGA,YACA,kCACA,GAUA,MACA,qBACA,uBAIA,gDACA,4EAIA,wCACA,yCAGA,iBACA,aACA,gCACA,gBAEA,WACA,qBAIA,iFAIA,QACA,qEAEA,MAUA,MACA,qBACA,wBACA,0BAGA,2CAIA,2CACA,yCAGA,iBACA,aACA,gCACA,gBAGA,OAEA,WACA,yBAGA,cACA,WAIA,8DAGA,+BACA,GA0BA,MACA,qBACA,6BACA,0CAEA,YAgDA,mCACA,+CAEA,IAMA,iCACA,6BAGA,0BACA,iCACA,aACA,GAEA,uBAIA,uBACA,YAAmB,QAAkB,YACrC,aACA,gCACA,cAGA,SACA,gBAIA,4BACA,OAEA,QACA,CAGA,oBACA,UACA,CACA,CAyBA,MACA,qBACA,4BACA,sCACA,sBACA,iBAKA,eACA,GACA,CAcA,MACA,qBACA,wBAAuC,CAAa,UAEpD,kBAGA,0CAEA,iDACA,kCACA,gCAGA,wBAGA,OAGA,iBAKA,yCAEA,+BAIA,mBACA,yCAIA,kDAEA,GAEA,IACA,oBAEA,gBACA,EACA,CAWA,MACA,kBACA,qBAAoC,CAAa,UAEjD,8BAEA,4BACA,UACA,UAGA,QACA,CASA,MACA,kBACA,qBAAoC,CAAa,UACjD,IACA,wBAGA,6BAEA,kBACA,OAEA,mBACA,4BACA,UAGA,eAEA,SACA,oCAIA,kEACA,wCAEI,0BAEJ,SAGA,OAEA,KACA,CAUA,MACA,eACA,2BAEA,oCACA,kCACA,uDACA,kBACA,+BAGA,kBACA,iDACA,oBAEA,iBACA,KAAI,4CACJ,oBAEA,aACA,KAEA,CACA,CAUA,EApfA,IAqfA,eACA,aACA,mBACA,aAEA,uCAEA,gBAGA,+BAE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,IAEA,GACA,CAMgE,wCChFhE,OAgBA,GACA,mBAQA,iBACA,OAEA,gBAEA,aACA,sCAGA,yBACA,KACA,iBACA,OACA,sCACA,cAEA,+DAUA,eAQA,0BAQA,qCAQA,CAQA,OACA,aACA,yCAEA,2CAGA,cACA,MAKA,UACA,aACA,2CAGA,uBACA,SACA,8CCvGA,SAgBA,GACA,mBASA,iBACA,SAEA,gBACA,oBAQA,kBAEA,+BAKA,YACA,MACA,4BACA,YAPA,kCACA,GAEA,SAOA,+BACA,uDCpDA,QAkBA,GACA,mBAMA,eACA,OAEA,gBACA,QAQA,wBAQA,wBASA,oBASA,kCAEA,yCACA,KAEA,iBACA,CAKA,yDACA,kBACA,aACA,uBAAiD,2BAGjD,aACA,CACA,KACA,kBACA,IAAoC,2BACpC,SAEA,4BAEA,GAGA,sBACA,KACA,iBACA,OACA,mCAEA,8BAEA,KACA,KACA,iBACA,OACA,uBAEA,8BAIA,QACA,8CC/GA,OAkBA,GACA,mBAMA,eACA,OASA,kBAQA,kBAKA,OACA,gBACA,wBACA,wCACA,OAKA,UACA,sCAEA,eACA,SAOA,wBACA,+CACA,KACA,iBACA,CAMA,qEACG,OAEH,mCACA,EACA,8CCnFA,OAkBA,GACA,mBAIA,cACA,CAEA,qBAQA,sBAUA,8BAEA,mCACA,KACA,SACA,wCACA,OACA,uBAMA,gDACA,gBACA,sCACA,iBAEA,WACA,6DAEA,GACA,EACA,8CCnEA,OAgBA,GACA,mBAIA,eACA,OAQA,YAQA,iBAEA,oBAEA,mCACA,KACA,mBACA,CAGA,4BAEA,iBACA,CACA,WAIA,WACA,8CCzDA,OAgBA,GACA,mBAIA,cACA,CASA,6BAEA,gBAEA,mCACA,KAEA,gBACA,OACA,CACA,qBACA,yBAEA,oCACA,uBAGA,sBACA,CACA,WAIA,cACA,YAqCA,aAKA,QACA,cACA,OACA,oECpGA,SAmBA,IACA,mBAIA,cACA,CAQA,wBAQA,wCAQA,wBASA,+BACA,iBACA,wBACA,mCACA,mBAEA,eAGA,oBAIA,qCACA,KAEA,gBACA,CAMA,4CAGA,mCACA,yBACA,QAEA,iCACA,4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BAIA,YACA,EAEA,iBCZA,iBACA,aACA,YACA,MAEA,WACA,eACA,GAGA,SACA,QAEA,iDCXA,QACA,aACA,kCACA,EAEA,wCCPA,SACA,aACA,YACA,MAEA,eAEA,OACA,QAJA,4BAMA,UACA,EAEA,iBCdA,iBACA,eACA,YACA,IACA,sBAEA,GACA,sBAGA,IACA,CAEA,wCClBA,aASA,WACA,WACA,sBACA,KAEA,gDCLA,SACA,iBACA,SAEA,sBACA,GACA,iBAEA,gCACA,GACA,SAEA,oBACA,KACA,UAEA,QACA,EAEA,gDClBA,QACA,eACA,SACA,qCACA,GAEA,iBCZA,iBACA,aACA,oBACA,EAEA,iBCHA,iBACA,iBACA,aACA,MAEA,WACA,aACA,SAGA,UACA,CAEA,qGCZA,OAIA,uBACA,mBAGA,2BAGA,cAgBA,mBACA,qBACA,gBACA,cACA,KACA,IAEA,EACA,eACA,YAEA,GACA,eACA,YAEA,yBACA,qBACA,QAEA,SACA,kBACA,kBACA,sBACA,wBAEA,UAjDA,GAkDA,oBACA,8BAEA,yBACA,qBACA,kBAEA,kBACA,kBACA,EACA,CACA,SAGA,aACA,yBACA,GAEA,iDC7EA,SAaA,iBACA,SACA,SACA,KAEA,KACA,eAEA,eACA,QACA,SACA,WACA,cACA,YAEA,IAEA,QACA,aACA,KACA,WACA,OACA,OAEA,aACA,IAIA,UACA,QACA,oBAEA,MACA,2BA9CA,EAWA,EAoCA,IAEA,EAEA,QACA,2BAdA,IAEK,QAaL,CACA,QAEA,iBC7DA,aACA,aASA,SACA,WACA,iBACA,GAEA,gCCGA,aACA,oBAEA,MACA,kBACA,UAEA,SACA,EAGA,kBAzBA,cAGA,oBACA,qBASA,2BAY4D,iBAC5D,0BACA,mBACA,GAGA,iECzBA,SACA,WACA,gBACA,4BACA,yBAEA,eACA,4BACA,EACA,CAEA,6FCZA,QAWA,aACA,8BACA,wBAEA,cACA,kBACA,0BACA,aACA,uBAlBA,CAmBA,CAVA,EAWA,CAEA,wCCvBA,QACA,aACA,SACA,UAGA,kBACA,kBACA,SAEA,wCCXA,SACA,WACA,mBACA,mBACA,EACA,CAEA,gFCCA,QACA,iBACA,8BAEA,cACA,MACA,SAGA,oBACA,iBACA,gBACA,OACA,UANA,EAOA,SACA,aACA,UACA,eACA,qBACA,UAEA,EACA,cACA,EACA,KACA,EACA,OACA,EAEA,wCCnCA,QACA,aACA,8BACA,YACA,GACA,EAEA,iDCbA,cAIA,uBASA,oBACA,WAEA,IACA,yBAEA,eACA,sBAEA,WACA,0BApBA,QAqBA,CAEA,iBCxBA,iBACA,WACA,+BACA,IAEA,iBCJA,iBACA,aACA,IACA,WAEA,kCACA,sBACA,GACA,CAEA,wCCRA,SACA,aACA,8BACA,iDACA,WAEA,0DCHA,SACA,eACA,oCACA,+BACA,YAEA,iBClBA,aACA,MAQA,WACA,WACA,yCACA,yBACA,UACA,CAEA,0DCJA,QACA,eACA,oCACA,+BACA,YAEA,wCCfA,eACA,uBAQA,mBACA,WACA,wBACA,MAEA,wCCRA,SACA,aACA,8BACA,iDACA,OAEA,wCCNA,QACA,aACA,UACA,OACA,aACA,eACA,aAEA,KACA,aACA,eACA,aAEA,oBACA,iBACA,SACA,OACA,IACA,QAEA,oBACA,iBACA,SACA,OACA,IACA,SAEA,CACA,OACA,EAEA,iDC9BA,SACA,aACA,+BACA,EAEA,gDCNA,OACA,WACA,8BACA,QACA,MACA,iBACA,kBAEA,4BACA,0BAGA,gCACA,kBACA,IAEA,YACA,UACA,SACA,GACA,WAEA,EACA,OACA,EACA,EAEA,0DC/BA,4CASA,aACA,gBACA,EAEA,6ECZA,SAUA,WACA,mBACA,gBACA,SACA,IAbA,wBAeA,GACA,GARA,wBAUA,gBACA,GACA,CAEA,4ECtBA,cAmBA,uBAmBA,mBACA,uBACA,QACA,GACA,IAxBA,uCAyBA,4BACA,WAEA,aACA,WAEA,OACA,IAnCA,8CAoCA,iCAKA,IACA,IApDA,mBAwDA,IAvDA,2BAyDA,EACA,IAzDA,qDA2DA,QAEA,IA3DA,mCA6DA,QACA,IA7DA,kBAiEA,IA/DA,8BAiEA,GACA,IAtEA,sBAwEA,IACA,IAtEA,sBAuEA,EA9EA,aAgFA,sBACA,GAGA,sBACA,SACA,QAEA,GACA,GA5FA,UA+FA,8BAEA,IACA,IArFA,qBAsFA,2BAGA,IACA,QAEA,iDC7GA,QAgBA,qBACA,OACA,EAHA,aAIA,OACA,kBACA,OAEA,iBACA,EAEA,mBACA,IACA,YACA,2BACA,GAIA,qBACA,MACA,YAEA,KACA,cAEA,aACA,SACA,KACA,WACA,OAEA,MACA,QACA,cACA,eAGA,MACA,8BACA,KACA,EACA,CACA,KACA,KACA,OACA,iBACA,UACA,SACA,gBAGA,eACA,qCACA,wCACA,sCACA,MAEA,KACA,oBACA,GACA,CAEA,0DCxEA,QACA,WACA,uBACA,IAEA,wCCFA,gBAEA,+DCNA,SACA,WACA,oBACA,OAEA,OACA,2BAEA,UACA,EAEA,kGCHA,QACA,eACA,8BAEA,cAEA,MAEA,OAHA,QAIA,iBACA,sBAGA,UAEA,MACA,QAEA,oBACA,qCACA,wCACA,GAEA,wCChCA,QACA,UACA,4BACA,QAEA,iBCJA,iBACA,WACA,0CACA,EAEA,wCCXA,aAMA,cAUA,mBACA,WACA,YACA,gBACA,SACA,cAlBA,mCAmBA,CACA,sBACA,SAEA,wCC1BA,aAGA,cAUA,mBACA,WACA,YACA,2CACA,EAEA,wCCnBA,QAYA,aACA,YACA,qCAHA,4BAIA,EACA,IAEA,iBCrBA,aACA,aAGA,cAQA,mBACA,WACA,SACA,uBAGA,6CACA,qBACA,gBAEA,OACA,CAEA,8FChBA,SAkCA,oBACA,UACA,kBAEA,MA5BA,gCAgCA,QAzCA,yBACA,wBA2CA,QAlCA,+BAuCA,SAtCA,8BACA,8BACA,2BACA,4BACA,4BACA,4BACA,mCACA,6BAcA,kCAoBA,SAlDA,6BAsDA,SArDA,wBAGA,yBAqDA,QAvDA,2BA0DA,QAzDA,6BA4DA,SAzDA,2BA2DA,SAEA,0DCrEA,QACA,WACA,kDACA,wBAEA,GAEA,iDCRA,QACA,WACA,8BACA,EAEA,iBCRA,iBACA,WACA,aACA,gDACA,aACA,gBACA,QAEA,iBCRA,iBACA,WACA,QAGA,MAFA,gBAGA,eAEA,aACA,EAEA,iBCXA,iBACA,UACA,MACA,WAEA,wCCRA,YAGA,cAUA,WACA,WACA,YACA,sBAEA,MACA,IAEA,wBACA,EAMA,UALA,IAEA,iBAEA,KAGA,wCCvBA,QACA,WACA,YACA,sBAEA,0BACA,EAEA,wCCRA,QACA,WACA,QACA,2BAEA,wCCJA,QACA,aACA,YACA,sBAEA,SACA,eAEA,YAEA,EACA,IAEA,yDCdA,SACA,UACA,eACA,SACA,kBACA,eAEA,KAEA,wCCTA,QACA,WACA,mCACA,EAEA,wCCLA,QACA,WACA,6BACA,EAEA,wCCLA,QACA,WACA,6BACA,EAEA,wCCJA,QACA,aACA,+BACA,GACA,IAEA,iDCPA,QACA,aACA,+CACA,GAEA,iBCdA,iBAYA,WACA,0BACA,EAHA,6BAIA,IAEA,iBCVA,iBACA,WACA,0BACA,EAEA,iBCPA,iBACA,WACA,QACA,YAEA,kCACA,WACA,EACA,GACA,CAEA,wCCTA,QACA,UACA,kBACA,IAEA,iBCLA,iBACA,WACA,gCACA,EAEA,iBCLA,iBACA,WACA,0BACA,EAEA,iBCLA,iBACA,WACA,0BACA,EAEA,gDCTA,SAYA,aACA,YACA,6CACA,QAJA,gCAMA,mBACA,GACA,IAEA,iDCrBA,OAGA,wEASA,iCACA,IACA,oDACA,+BACA,EACA,GACA,CAEA,mpBCwCA,SAGA,8DACA,2EACA,+DACA,oEACA,8EACA,uDACA,qEACA,uFACA,0FACA,uEACA,gEACA,2DACA,qEACA,+rBCf6B,mFCzD7B,cAGA,cAGA,0BAAgE,iBAiChE,mCACA,6BACA,GAGA,mCAFA,eAGA,kBAEA,GAEA,+CC5BA,SACA,aACA,yBACA,EAEA,iBClBA,iBACA,WACA,kBACA,OACA,EACA,CAEA,iDCKA,SACA,aACA,8BACA,IAEA,8DC7BA,IAMA,mEACA,SAIA,oCACA,SAIA,0BACA,EAIA,iBAmBA,6BACA,oBACA,EAEA,uFC5BA,QACA,WACA,mDACA,EAEA,wCCKA,SACA,aACA,mBACA,EAEA,gDC/BA,SA4BA,EAXA,2BACA,yBAWA,EAVA,wBACA,uBAUA,EATA,yBACA,uBASA,EARA,gCACA,wBAQA,EALA,2BAMA,EAhCA,wBACA,kBAgCA,EAnBA,0BAZA,oBAgCA,EAnBA,uBAZA,iBAgCA,EA/BA,oBACA,qBA+BA,EA9BA,kBACA,mBA8BA,EA7BA,qBACA,mBA6BA,EA5BA,kBACA,mBA8BA,EA5BA,uBA6BA,cAOA,gBAmBA,aACA,YACA,iBACA,sCACA,IAEA,kECzEA,aAGA,cAwBA,mBACA,WACA,YACA,aACA,cACA,OACA,kBACA,KAEA,UAEA,aACA,OACA,KALA,4BAMA,qCACA,YAGA,SACA,EAEA,gCCLA,eACA,6BACA,yCAEA,mBACA,OACA,gCACA,OAEA,eACA,gBAEA,sBACA,0BACA,GACA,CACA,8BACA,KACA,CAEA,SAlEA,OA6CA,sBAsBA,QAEA,yBC1DA,iBACA,UAEA,CAEA,iBCHA,aACA,WAEA,0ECOA,QACA,WACA,mDACA,EAEA,iDC3BA,QA2CA,eACA,IACA,MAEA,QACA,8BAEA,WARA,uCASA,iCACA,gCAEA,gBACA,SACA,UACA,WAEA,GAEA,wCC9DA,SAyBA,MACA,WACA,KACA,iBAEA,gBACA,iBACA,cACA,QACA,yBACA,gBACA,CAEA,iDCrCA,QA6BA,WACA,iCAFA,YAGA,CAEA,iDCVA,eAEA,iDCPA,SACA,WACA,4BACA,EAEA,mBC3BA,qBAaA,KAsDA,IArDA,KAMA,eAOA,cAqBA,+BACA,EAOA,QACA,0BAEA,SACA,mCACA,wBACA,CAGA,IACA,CACA,kBCnEA,aAaA,IACA,aACA,cACA,KAGA,kCACA,wBACA,6BAEA,YACA,EAEA,QAEA,CACA,yBCVA,aACA,QAQA,OACA,OACA,mBAIA,gBAFA,MAIA,EACA,YACA,gBACA,MACA,YAGA,2BC1BA,iBACA,UACA,oBACA,GACA,SACA,CAEA,8BC8BA,eACA,CACA,WACA,WAEA,EASA,CA7DA,IAsCA,aACA,YACA,QAIA,qCADA,GAGA,EA5CA,GAmCA,oCCsNA,aACA,eACA,mBACA,kBACA,gBACA,SAKY,CACZ,aACA,8BACA,SAKa,CACb,aACA,SACA,oCACA,MAGA,aACA,MAEA,CACA,iFA/RA,mBA6BA,GACA,mBAIA,wBACA,OACA,eAKA,OACA,6BAEA,QAIA,6DAEA,eACA,oBAGA,eAGA,kBAEA,iCAIA,kBAAiC,gBACjC,gBACA,OACA,EAAG,EAAG,UAGN,sBACA,8DAGA,4DAAsF,UACtF,QASA,kBACA,cACA,mBACA,aAGA,YACA,GAIA,oBACA,sBAEA,MACA,GAIA,SAGA,mBACA,aAIA,gDAEA,iCACA,+BACA,EACA,EASA,gBACA,WACA,kDAIA,qCACA,gCACA,QACA,mBAEA,OASA,iBACA,qBACA,aAGA,gBACA,YAGA,qDAEA,MACA,EAcA,4BAZA,kBAEA,oBACA,WACA,iBACA,EAEA,+BACA,EAEA,KAUA,oBACA,qBACA,aACA,WACA,cAGA,iDACA,iCACA,8DAEA,YAOA,MANA,yBACA,cACA,GAGA,KAKA,OACA,YAGA,qDAEA,+CACA,MAMA,4BALA,+BACA,EAEA,KAUA,4BACA,wDACA,IAWA,oCACA,qBACA,aACA,WACA,wBAIA,+BACA,uBAA0C,uBAC1C,kDAEA,mDACA,MAGA,EACA,IACA,MAKa","file":"ckeditor.js","sourcesContent":["/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module module:engine/view/writer\n */\n\nimport Position from './position';\nimport ContainerElement from './containerelement';\nimport AttributeElement from './attributeelement';\nimport EmptyElement from './emptyelement';\nimport UIElement from './uielement';\nimport Text from './text';\nimport Range from './range';\nimport TreeWalker from './treewalker';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport DocumentFragment from './documentfragment';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\n\n/**\n * Contains functions used for composing view tree.\n *\n * @namespace writer\n */\n\nconst writer = {\n\tbreakAttributes,\n\tbreakContainer,\n\tmergeAttributes,\n\tmergeContainers,\n\tinsert,\n\tremove,\n\tclear,\n\tmove,\n\twrap,\n\twrapPosition,\n\tunwrap,\n\trename,\n\tbreakViewRangePerContainer\n};\n\nexport default writer;\n\n/**\n * Breaks attribute nodes at provided position or at boundaries of provided range. It breaks attribute elements inside\n * up to a container element.\n *\n * In following examples `

` is a container, `` and `` are attribute nodes:\n *\n *\t\t

foobar{}

->

foobar[]

\n *\t\t

foo{}bar

->

foo{}bar

\n *\t\t

foob{}ar

->

foob[]ar

\n *\t\t

fo{oba}r

->

foobar

\n *\n * **Note:** {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.breakAttributes breakAttributes} and\n * {@link module:engine/view/writer~writer.breakContainer breakContainer} is that `breakAttributes` breaks all\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} that are ancestors of given `position`, up to the first\n * encountered {@link module:engine/view/containerelement~ContainerElement container element}. `breakContainer` assumes that given\n * `position`\n * is directly in container element and breaks that container element.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container`\n * when {@link module:engine/view/range~Range#start start}\n * and {@link module:engine/view/range~Range#end end} positions of a passed range are not placed inside same parent container.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-empty-element`\n * when trying to break attributes\n * inside {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-ui-element`\n * when trying to break attributes\n * inside {@link module:engine/view/uielement~UIElement UIElement}.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.breakContainer\n * @function module:engine/view/writer~writer.breakAttributes\n * @param {module:engine/view/position~Position|module:engine/view/range~Range} positionOrRange Position where to break attribute elements.\n * @returns {module:engine/view/position~Position|module:engine/view/range~Range} New position or range, after breaking the attribute\n * elements.\n */\nexport function breakAttributes( positionOrRange ) {\n\tif ( positionOrRange instanceof Position ) {\n\t\treturn _breakAttributes( positionOrRange );\n\t} else {\n\t\treturn _breakAttributesRange( positionOrRange );\n\t}\n}\n\n/**\n * Breaks {@link module:engine/view/containerelement~ContainerElement container view element} into two, at the given position. Position\n * has to be directly inside container element and cannot be in root. Does not break if position is at the beginning\n * or at the end of it's parent element.\n *\n *\t\t

foo^bar

->

foo

bar

\n *\t\t

foo

^

bar

->

foo

bar

\n *\t\t

^foobar

-> ^

foobar

\n *\t\t

foobar^

->

foobar

^\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.breakAttributes breakAttributes} and\n * {@link module:engine/view/writer~writer.breakContainer breakContainer} is that `breakAttributes` breaks all\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} that are ancestors of given `position`, up to the first\n * encountered {@link module:engine/view/containerelement~ContainerElement container element}. `breakContainer` assumes that given\n * `position`\n * is directly in container element and breaks that container element.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.breakAttributes\n * @function module:engine/view/writer~writer.breakContainer\n * @param {module:engine/view/position~Position} position Position where to break element.\n * @returns {module:engine/view/position~Position} Position between broken elements. If element has not been broken, the returned position\n * is placed either before it or after it.\n */\nexport function breakContainer( position ) {\n\tconst element = position.parent;\n\n\tif ( !( element.is( 'containerElement' ) ) ) {\n\t\t/**\n\t\t * Trying to break an element which is not a container element.\n\t\t *\n\t\t * @error view-writer-break-non-container-element\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-break-non-container-element: Trying to break an element which is not a container element.' );\n\t}\n\n\tif ( !element.parent ) {\n\t\t/**\n\t\t * Trying to break root element.\n\t\t *\n\t\t * @error view-writer-break-root\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-break-root: Trying to break root element.' );\n\t}\n\n\tif ( position.isAtStart ) {\n\t\treturn Position.createBefore( element );\n\t} else if ( !position.isAtEnd ) {\n\t\tconst newElement = element.clone( false );\n\n\t\tinsert( Position.createAfter( element ), newElement );\n\n\t\tconst sourceRange = new Range( position, Position.createAt( element, 'end' ) );\n\t\tconst targetPosition = new Position( newElement, 0 );\n\n\t\tmove( sourceRange, targetPosition );\n\t}\n\n\treturn Position.createAfter( element );\n}\n\n/**\n * Merges {@link module:engine/view/attributeelement~AttributeElement attribute elements}. It also merges text nodes if needed.\n * Only {@link module:engine/view/attributeelement~AttributeElement#isSimilar similar} attribute elements can be merged.\n *\n * In following examples `

` is a container and `` is an attribute element:\n *\n *\t\t

foo[]bar

->

foo{}bar

\n *\t\t

foo[]bar

->

foo{}bar

\n *\t\t

a[]b

->

a[]b

\n *\n * It will also take care about empty attributes when merging:\n *\n *\t\t

[]

->

[]

\n *\t\t

foo[]bar

->

foo{}bar

\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.mergeAttributes mergeAttributes} and\n * {@link module:engine/view/writer~writer.mergeContainers mergeContainers} is that `mergeAttributes` merges two\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} or {@link module:engine/view/text~Text text nodes}\n * while `mergeContainer` merges two {@link module:engine/view/containerelement~ContainerElement container elements}.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.mergeContainers\n * @function module:engine/view/writer~writer.mergeAttributes\n * @param {module:engine/view/position~Position} position Merge position.\n * @returns {module:engine/view/position~Position} Position after merge.\n */\nexport function mergeAttributes( position ) {\n\tconst positionOffset = position.offset;\n\tconst positionParent = position.parent;\n\n\t// When inside text node - nothing to merge.\n\tif ( positionParent.is( 'text' ) ) {\n\t\treturn position;\n\t}\n\n\t// When inside empty attribute - remove it.\n\tif ( positionParent.is( 'attributeElement' ) && positionParent.childCount === 0 ) {\n\t\tconst parent = positionParent.parent;\n\t\tconst offset = positionParent.index;\n\t\tpositionParent.remove();\n\n\t\treturn mergeAttributes( new Position( parent, offset ) );\n\t}\n\n\tconst nodeBefore = positionParent.getChild( positionOffset - 1 );\n\tconst nodeAfter = positionParent.getChild( positionOffset );\n\n\t// Position should be placed between two nodes.\n\tif ( !nodeBefore || !nodeAfter ) {\n\t\treturn position;\n\t}\n\n\t// When position is between two text nodes.\n\tif ( nodeBefore.is( 'text' ) && nodeAfter.is( 'text' ) ) {\n\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\n\t}\n\t// When selection is between two same attribute elements.\n\telse if ( nodeBefore.is( 'attributeElement' ) && nodeAfter.is( 'attributeElement' ) && nodeBefore.isSimilar( nodeAfter ) ) {\n\t\t// Move all children nodes from node placed after selection and remove that node.\n\t\tconst count = nodeBefore.childCount;\n\t\tnodeBefore.appendChildren( nodeAfter.getChildren() );\n\t\tnodeAfter.remove();\n\n\t\t// New position is located inside the first node, before new nodes.\n\t\t// Call this method recursively to merge again if needed.\n\t\treturn mergeAttributes( new Position( nodeBefore, count ) );\n\t}\n\n\treturn position;\n}\n\n/**\n * Merges two {@link module:engine/view/containerelement~ContainerElement container elements} that are before and after given position.\n * Precisely, the element after the position is removed and it's contents are moved to element before the position.\n *\n *\t\t

foo

^

bar

->

foo^bar

\n *\t\t
foo
^

bar

->
foo^bar
\n *\n * **Note:** Difference between {@link module:engine/view/writer~writer.mergeAttributes mergeAttributes} and\n * {@link module:engine/view/writer~writer.mergeContainers mergeContainers} is that `mergeAttributes` merges two\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} or {@link module:engine/view/text~Text text nodes}\n * while `mergeContainer` merges two {@link module:engine/view/containerelement~ContainerElement container elements}.\n *\n * @see module:engine/view/attributeelement~AttributeElement\n * @see module:engine/view/containerelement~ContainerElement\n * @see module:engine/view/writer~writer.mergeAttributes\n * @function module:engine/view/writer~writer.mergeContainers\n * @param {module:engine/view/position~Position} position Merge position.\n * @returns {module:engine/view/position~Position} Position after merge.\n */\nexport function mergeContainers( position ) {\n\tconst prev = position.nodeBefore;\n\tconst next = position.nodeAfter;\n\n\tif ( !prev || !next || !prev.is( 'containerElement' ) || !next.is( 'containerElement' ) ) {\n\t\t/**\n\t\t * Element before and after given position cannot be merged.\n\t\t *\n\t\t * @error view-writer-merge-containers-invalid-position\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-merge-containers-invalid-position: ' +\n\t\t\t'Element before and after given position cannot be merged.' );\n\t}\n\n\tconst lastChild = prev.getChild( prev.childCount - 1 );\n\tconst newPosition = lastChild instanceof Text ? Position.createAt( lastChild, 'end' ) : Position.createAt( prev, 'end' );\n\n\tmove( Range.createIn( next ), Position.createAt( prev, 'end' ) );\n\tremove( Range.createOn( next ) );\n\n\treturn newPosition;\n}\n\n/**\n * Breaks given `range` on a set of {@link module:engine/view/range~Range ranges}, that each are contained within a\n * {@link module:engine/view/containerelement~ContainerElement container element}. After `range` is broken, it's \"pieces\" can\n * be used by other {@link module:engine/view/writer~writer} methods (which expect that passed ranges are contained within\n * one container element).\n *\n * @function module:engine/view/writer~writer.breakViewRangePerContainer\n * @param {module:engine/view/range~Range} range Range to break.\n * @returns {Array.} Ranges that combine into passed `viewRange`.\n */\nexport function breakViewRangePerContainer( range ) {\n\tconst ranges = [];\n\tconst walker = new TreeWalker( { boundaries: range } );\n\n\tlet start = range.start;\n\n\tfor ( let value of walker ) {\n\t\tif ( value.item.is( 'containerElement' ) ) {\n\t\t\tif ( !start.isEqual( value.previousPosition ) ) {\n\t\t\t\tranges.push( new Range( start, value.previousPosition ) );\n\t\t\t}\n\n\t\t\tstart = value.nextPosition;\n\t\t}\n\t}\n\n\tranges.push( new Range( start, range.end ) );\n\n\treturn ranges;\n}\n\n/**\n * Insert node or nodes at specified position. Takes care about breaking attributes before insertion\n * and merging them afterwards.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\n * contains instances that are not {@link module:engine/view/text~Text Texts},\n * {@link module:engine/view/attributeelement~AttributeElement AttributeElements},\n * {@link module:engine/view/containerelement~ContainerElement ContainerElements},\n * {@link module:engine/view/emptyelement~EmptyElement EmptyElements} or\n * {@link module:engine/view/uielement~UIElement UIElements}.\n *\n * @function insert\n * @param {module:engine/view/position~Position} position Insertion position.\n * @param {module:engine/view/text~Text|module:engine/view/attributeelement~AttributeElement|\n * module:engine/view/containerelement~ContainerElement|module:engine/view/emptyelement~EmptyElement|\n * module:engine/view/uielement~UIElement|Iterable.} nodes Node or nodes to insert.\n * @returns {module:engine/view/range~Range} Range around inserted nodes.\n */\nexport function insert( position, nodes ) {\n\tnodes = isIterable( nodes ) ? [ ...nodes ] : [ nodes ];\n\n\t// Check if nodes to insert are instances of AttributeElements, ContainerElements, EmptyElements, UIElements or Text.\n\tvalidateNodesToInsert( nodes );\n\n\tconst container = getParentContainer( position );\n\n\tif ( !container ) {\n\t\t/**\n\t\t * Position's parent container cannot be found.\n\t\t *\n\t\t * @error view-writer-invalid-position-container\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-invalid-position-container' );\n\t}\n\n\tconst insertionPosition = _breakAttributes( position, true );\n\n\tconst length = container.insertChildren( insertionPosition.offset, nodes );\n\tconst endPosition = insertionPosition.getShiftedBy( length );\n\tconst start = mergeAttributes( insertionPosition );\n\n\t// When no nodes were inserted - return collapsed range.\n\tif ( length === 0 ) {\n\t\treturn new Range( start, start );\n\t} else {\n\t\t// If start position was merged - move end position.\n\t\tif ( !start.isEqual( insertionPosition ) ) {\n\t\t\tendPosition.offset--;\n\t\t}\n\n\t\tconst end = mergeAttributes( endPosition );\n\n\t\treturn new Range( start, end );\n\t}\n}\n\n/**\n * Removes provided range from the container.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @function module:engine/view/writer~writer.remove\n * @param {module:engine/view/range~Range} range Range to remove from container. After removing, it will be updated\n * to a collapsed range showing the new position.\n * @returns {module:engine/view/documentfragment~DocumentFragment} Document fragment containing removed nodes.\n */\nexport function remove( range ) {\n\tvalidateRangeContainer( range );\n\n\t// If range is collapsed - nothing to remove.\n\tif ( range.isCollapsed ) {\n\t\treturn new DocumentFragment();\n\t}\n\n\t// Break attributes at range start and end.\n\tconst { start: breakStart, end: breakEnd } = _breakAttributesRange( range, true );\n\tconst parentContainer = breakStart.parent;\n\n\tconst count = breakEnd.offset - breakStart.offset;\n\n\t// Remove nodes in range.\n\tconst removed = parentContainer.removeChildren( breakStart.offset, count );\n\n\t// Merge after removing.\n\tconst mergePosition = mergeAttributes( breakStart );\n\trange.start = mergePosition;\n\trange.end = Position.createFromPosition( mergePosition );\n\n\t// Return removed nodes.\n\treturn new DocumentFragment( removed );\n}\n\n/**\n * Removes matching elements from given range.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @function module:engine/view/writer~writer.clear\n * @param {module:engine/view/range~Range} range Range to clear.\n * @param {module:engine/view/element~Element} element Element to remove.\n */\nexport function clear( range, element ) {\n\tvalidateRangeContainer( range );\n\n\t// Create walker on given range.\n\t// We walk backward because when we remove element during walk it modifies range end position.\n\tconst walker = range.getWalker( {\n\t\tdirection: 'backward',\n\t\tignoreElementEnd: true\n\t} );\n\n\t// Let's walk.\n\tfor ( const current of walker ) {\n\t\tconst item = current.item;\n\t\tlet rangeToRemove;\n\n\t\t// When current item matches to the given element.\n\t\tif ( item.is( 'element' ) && element.isSimilar( item ) ) {\n\t\t\t// Create range on this element.\n\t\t\trangeToRemove = Range.createOn( item );\n\t\t// When range starts inside Text or TextProxy element.\n\t\t} else if ( !current.nextPosition.isAfter( range.start ) && ( item.is( 'text' ) || item.is( 'textProxy' ) ) ) {\n\t\t\t// We need to check if parent of this text matches to given element.\n\t\t\tconst parentElement = item.getAncestors().find( ( ancestor ) => {\n\t\t\t\treturn ancestor.is( 'element' ) && element.isSimilar( ancestor );\n\t\t\t} );\n\n\t\t\t// If it is then create range inside this element.\n\t\t\tif ( parentElement ) {\n\t\t\t\trangeToRemove = Range.createIn( parentElement );\n\t\t\t}\n\t\t}\n\n\t\t// If we have found element to remove.\n\t\tif ( rangeToRemove ) {\n\t\t\t// We need to check if element range stick out of the given range and truncate if it is.\n\t\t\tif ( rangeToRemove.end.isAfter( range.end ) ) {\n\t\t\t\trangeToRemove.end = range.end;\n\t\t\t}\n\n\t\t\tif ( rangeToRemove.start.isBefore( range.start ) ) {\n\t\t\t\trangeToRemove.start = range.start;\n\t\t\t}\n\n\t\t\t// At the end we remove range with found element.\n\t\t\tremove( rangeToRemove );\n\t\t}\n\t}\n}\n\n/**\n * Moves nodes from provided range to target position.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @function module:engine/view/writer~writer.move\n * @param {module:engine/view/range~Range} sourceRange Range containing nodes to move.\n * @param {module:engine/view/position~Position} targetPosition Position to insert.\n * @returns {module:engine/view/range~Range} Range in target container. Inserted nodes are placed between\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions.\n */\nexport function move( sourceRange, targetPosition ) {\n\tlet nodes;\n\n\tif ( targetPosition.isAfter( sourceRange.end ) ) {\n\t\ttargetPosition = _breakAttributes( targetPosition, true );\n\n\t\tconst parent = targetPosition.parent;\n\t\tconst countBefore = parent.childCount;\n\n\t\tsourceRange = _breakAttributesRange( sourceRange, true );\n\n\t\tnodes = remove( sourceRange );\n\n\t\ttargetPosition.offset += ( parent.childCount - countBefore );\n\t} else {\n\t\tnodes = remove( sourceRange );\n\t}\n\n\treturn insert( targetPosition, nodes );\n}\n\n/**\n * Wraps elements within range with provided {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-invalid-range-container`\n * when {@link module:engine/view/range~Range#start}\n * and {@link module:engine/view/range~Range#end} positions are not placed inside same parent container.\n * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n * an instance of {module:engine/view/attributeelement~AttributeElement AttributeElement}.\n *\n * @function module:engine/view/writer~writer.wrap\n * @param {module:engine/view/range~Range} range Range to wrap.\n * @param {module:engine/view/attributeelement~AttributeElement} attribute Attribute element to use as wrapper.\n */\nexport function wrap( range, attribute ) {\n\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t/**\n\t\t * Attribute element need to be instance of attribute element.\n\t\t *\n\t\t * @error view-writer-wrap-invalid-attribute\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-wrap-invalid-attribute' );\n\t}\n\n\tvalidateRangeContainer( range );\n\n\t// If range is collapsed - nothing to wrap.\n\tif ( range.isCollapsed ) {\n\t\treturn range;\n\t}\n\n\t// Range around one element.\n\tif ( range.end.isEqual( range.start.getShiftedBy( 1 ) ) ) {\n\t\tconst node = range.start.nodeAfter;\n\n\t\tif ( node instanceof AttributeElement && wrapAttributeElement( attribute, node ) ) {\n\t\t\treturn range;\n\t\t}\n\t}\n\n\t// Range is inside single attribute and spans on all children.\n\tif ( rangeSpansOnAllChildren( range ) && wrapAttributeElement( attribute, range.start.parent ) ) {\n\t\tconst parent = range.start.parent.parent;\n\t\tconst index = range.start.parent.index;\n\n\t\treturn Range.createFromParentsAndOffsets( parent, index, parent, index + 1 ) ;\n\t}\n\n\t// Break attributes at range start and end.\n\tconst { start: breakStart, end: breakEnd } = _breakAttributesRange( range, true );\n\tconst parentContainer = breakStart.parent;\n\n\t// Unwrap children located between break points.\n\tconst unwrappedRange = unwrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\n\n\t// Wrap all children with attribute.\n\tconst newRange = wrapChildren( parentContainer, unwrappedRange.start.offset, unwrappedRange.end.offset, attribute );\n\n\t// Merge attributes at the both ends and return a new range.\n\tconst start = mergeAttributes( newRange.start );\n\n\t// If start position was merged - move end position back.\n\tif ( !start.isEqual( newRange.start ) ) {\n\t\tnewRange.end.offset--;\n\t}\n\tconst end = mergeAttributes( newRange.end );\n\n\treturn new Range( start, end );\n}\n\n/**\n * Wraps position with provided attribute. Returns new position after wrapping. This method will also merge newly\n * added attribute with its siblings whenever possible.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n * an instance of {module:engine/view/attributeelement~AttributeElement AttributeElement}.\n *\n * @param {module:engine/view/position~Position} position\n * @param {module:engine/view/attributeelement~AttributeElement} attribute\n * @returns {module:engine/view/position~Position} New position after wrapping.\n */\nexport function wrapPosition( position, attribute ) {\n\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t/**\n\t\t * Attribute element need to be instance of attribute element.\n\t\t *\n\t\t * @error view-writer-wrap-invalid-attribute\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-wrap-invalid-attribute' );\n\t}\n\n\t// Return same position when trying to wrap with attribute similar to position parent.\n\tif ( attribute.isSimilar( position.parent ) ) {\n\t\treturn movePositionToTextNode( Position.createFromPosition( position ) );\n\t}\n\n\t// When position is inside text node - break it and place new position between two text nodes.\n\tif ( position.parent.is( 'text' ) ) {\n\t\tposition = breakTextNode( position );\n\t}\n\n\t// Create fake element that will represent position, and will not be merged with other attributes.\n\tconst fakePosition = new AttributeElement();\n\tfakePosition.priority = Number.POSITIVE_INFINITY;\n\tfakePosition.isSimilar = () => false;\n\n\t// Insert fake element in position location.\n\tposition.parent.insertChildren( position.offset, fakePosition );\n\n\t// Range around inserted fake attribute element.\n\tconst wrapRange = new Range( position, position.getShiftedBy( 1 ) );\n\n\t// Wrap fake element with attribute (it will also merge if possible).\n\twrap( wrapRange, attribute );\n\n\t// Remove fake element and place new position there.\n\tconst newPosition = new Position( fakePosition.parent, fakePosition.index );\n\tfakePosition.remove();\n\n\t// If position is placed between text nodes - merge them and return position inside.\n\tconst nodeBefore = newPosition.nodeBefore;\n\tconst nodeAfter = newPosition.nodeAfter;\n\n\tif ( nodeBefore instanceof Text && nodeAfter instanceof Text ) {\n\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\n\t}\n\n\t// If position is next to text node - move position inside.\n\treturn movePositionToTextNode( newPosition );\n}\n\n/**\n * Unwraps nodes within provided range from attribute element.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n * same parent container.\n *\n * @param {module:engine/view/range~Range} range\n * @param {module:engine/view/attributeelement~AttributeElement} element\n */\nexport function unwrap( range, attribute ) {\n\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t/**\n\t\t * Attribute element need to be instance of attribute element.\n\t\t *\n\t\t * @error view-writer-unwrap-invalid-attribute\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-unwrap-invalid-attribute' );\n\t}\n\n\tvalidateRangeContainer( range );\n\n\t// If range is collapsed - nothing to unwrap.\n\tif ( range.isCollapsed ) {\n\t\treturn range;\n\t}\n\n\t// Range around one element - check if AttributeElement can be unwrapped partially when it's not similar.\n\t// For example:\n\t// unwrap with:\t

result: \n\tif ( range.end.isEqual( range.start.getShiftedBy( 1 ) ) ) {\n\t\tconst node = range.start.nodeAfter;\n\n\t\t// Unwrap single attribute element.\n\t\tif ( !attribute.isSimilar( node ) && node instanceof AttributeElement && unwrapAttributeElement( attribute, node ) ) {\n\t\t\treturn range;\n\t\t}\n\t}\n\n\t// Break attributes at range start and end.\n\tconst { start: breakStart, end: breakEnd } = _breakAttributesRange( range, true );\n\tconst parentContainer = breakStart.parent;\n\n\t// Unwrap children located between break points.\n\tconst newRange = unwrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\n\n\t// Merge attributes at the both ends and return a new range.\n\tconst start = mergeAttributes( newRange.start );\n\n\t// If start position was merged - move end position back.\n\tif ( !start.isEqual( newRange.start ) ) {\n\t\tnewRange.end.offset--;\n\t}\n\tconst end = mergeAttributes( newRange.end );\n\n\treturn new Range( start, end );\n}\n\n/**\n * Renames element by creating a copy of renamed element but with changed name and then moving contents of the\n * old element to the new one. Keep in mind that this will invalidate all {@link module:engine/view/position~Position positions} which\n * has renamed element as {@link module:engine/view/position~Position#parent a parent}.\n *\n * New element has to be created because `Element#tagName` property in DOM is readonly.\n *\n * Since this function creates a new element and removes the given one, the new element is returned to keep reference.\n *\n * @param {module:engine/view/containerelement~ContainerElement} viewElement Element to be renamed.\n * @param {String} newName New name for element.\n */\nexport function rename( viewElement, newName ) {\n\tconst newElement = new ContainerElement( newName, viewElement.getAttributes() );\n\n\tinsert( Position.createAfter( viewElement ), newElement );\n\tmove( Range.createIn( viewElement ), Position.createAt( newElement ) );\n\tremove( Range.createOn( viewElement ) );\n\n\treturn newElement;\n}\n\n// Returns first parent container of specified {@link module:engine/view/position~Position Position}.\n// Position's parent node is checked as first, then next parents are checked.\n// Note that {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\n//\n// @param {module:engine/view/position~Position} position Position used as a start point to locate parent container.\n// @returns {module:engine/view/containerelement~ContainerElement|module:engine/view/documentfragment~DocumentFragment|undefined}\n// Parent container element or `undefined` if container is not found.\nfunction getParentContainer( position ) {\n\tlet parent = position.parent;\n\n\twhile ( !isContainerOrFragment( parent ) ) {\n\t\tif ( !parent ) {\n\t\t\treturn undefined;\n\t\t}\n\t\tparent = parent.parent;\n\t}\n\n\treturn parent;\n}\n\n// Function used by both public breakAttributes (without splitting text nodes) and by other methods (with\n// splitting text nodes).\n//\n// @param {module:engine/view/range~Range} range Range which `start` and `end` positions will be used to break attributes.\n// @param {Boolean} [forceSplitText = false] If set to `true`, will break text nodes even if they are directly in\n// container element. This behavior will result in incorrect view state, but is needed by other view writing methods\n// which then fixes view state. Defaults to `false`.\n// @returns {module:engine/view/range~Range} New range with located at break positions.\nfunction _breakAttributesRange( range, forceSplitText = false ) {\n\tconst rangeStart = range.start;\n\tconst rangeEnd = range.end;\n\n\tvalidateRangeContainer( range );\n\n\t// Break at the collapsed position. Return new collapsed range.\n\tif ( range.isCollapsed ) {\n\t\tconst position = _breakAttributes( range.start, forceSplitText );\n\n\t\treturn new Range( position, position );\n\t}\n\n\tconst breakEnd = _breakAttributes( rangeEnd, forceSplitText );\n\tconst count = breakEnd.parent.childCount;\n\tconst breakStart = _breakAttributes( rangeStart, forceSplitText );\n\n\t// Calculate new break end offset.\n\tbreakEnd.offset += breakEnd.parent.childCount - count;\n\n\treturn new Range( breakStart, breakEnd );\n}\n\n// Function used by public breakAttributes (without splitting text nodes) and by other methods (with\n// splitting text nodes).\n//\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-empty-element` when break position\n// is placed inside {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\n//\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-ui-element` when break position\n// is placed inside {@link module:engine/view/uielement~UIElement UIElement}.\n//\n// @param {module:engine/view/position~Position} position Position where to break attributes.\n// @param {Boolean} [forceSplitText = false] If set to `true`, will break text nodes even if they are directly in\n// container element. This behavior will result in incorrect view state, but is needed by other view writing methods\n// which then fixes view state. Defaults to `false`.\n// @returns {module:engine/view/position~Position} New position after breaking the attributes.\nfunction _breakAttributes( position, forceSplitText = false ) {\n\tconst positionOffset = position.offset;\n\tconst positionParent = position.parent;\n\n\t// If position is placed inside EmptyElement - throw an exception as we cannot break inside.\n\tif ( position.parent.is( 'emptyElement' ) ) {\n\t\t/**\n\t\t * Cannot break inside EmptyElement instance.\n\t\t *\n\t\t * @error view-writer-cannot-break-empty-element\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-cannot-break-empty-element' );\n\t}\n\n\t// If position is placed inside UIElement - throw an exception as we cannot break inside.\n\tif ( position.parent.is( 'uiElement' ) ) {\n\t\t/**\n\t\t * Cannot break inside UIElement instance.\n\t\t *\n\t\t * @error view-writer-cannot-break-ui-element\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-cannot-break-ui-element' );\n\t}\n\n\t// There are no attributes to break and text nodes breaking is not forced.\n\tif ( !forceSplitText && positionParent.is( 'text' ) && isContainerOrFragment( positionParent.parent ) ) {\n\t\treturn Position.createFromPosition( position );\n\t}\n\n\t// Position's parent is container, so no attributes to break.\n\tif ( isContainerOrFragment( positionParent ) ) {\n\t\treturn Position.createFromPosition( position );\n\t}\n\n\t// Break text and start again in new position.\n\tif ( positionParent.is( 'text' ) ) {\n\t\treturn _breakAttributes( breakTextNode( position ), forceSplitText );\n\t}\n\n\tconst length = positionParent.childCount;\n\n\t//

foobar{}

\n\t//

foobar[]

\n\t//

foobar[]

\n\tif ( positionOffset == length ) {\n\t\tconst newPosition = new Position( positionParent.parent, positionParent.index + 1 );\n\n\t\treturn _breakAttributes( newPosition, forceSplitText );\n\t} else\n\t//

foo{}bar

\n\t//

foo[]bar

\n\t//

foo{}bar

\n\tif ( positionOffset === 0 ) {\n\t\tconst newPosition = new Position( positionParent.parent, positionParent.index );\n\n\t\treturn _breakAttributes( newPosition, forceSplitText );\n\t}\n\t//

foob{}ar

\n\t//

foob[]ar

\n\t//

foob[]ar

\n\t//

foob[]ar

\n\telse {\n\t\tconst offsetAfter = positionParent.index + 1;\n\n\t\t// Break element.\n\t\tconst clonedNode = positionParent.clone();\n\n\t\t// Insert cloned node to position's parent node.\n\t\tpositionParent.parent.insertChildren( offsetAfter, clonedNode );\n\n\t\t// Get nodes to move.\n\t\tconst count = positionParent.childCount - positionOffset;\n\t\tconst nodesToMove = positionParent.removeChildren( positionOffset, count );\n\n\t\t// Move nodes to cloned node.\n\t\tclonedNode.appendChildren( nodesToMove );\n\n\t\t// Create new position to work on.\n\t\tconst newPosition = new Position( positionParent.parent, offsetAfter );\n\n\t\treturn _breakAttributes( newPosition, forceSplitText );\n\t}\n}\n\n// Unwraps children from provided `attribute`. Only children contained in `parent` element between\n// `startOffset` and `endOffset` will be unwrapped.\n//\n// @param {module:engine/view/element~Element} parent\n// @param {Number} startOffset\n// @param {Number} endOffset\n// @param {module:engine/view/element~Element} attribute\nfunction unwrapChildren( parent, startOffset, endOffset, attribute ) {\n\tlet i = startOffset;\n\tconst unwrapPositions = [];\n\n\t// Iterate over each element between provided offsets inside parent.\n\twhile ( i < endOffset ) {\n\t\tconst child = parent.getChild( i );\n\n\t\t// If attributes are the similar, then unwrap.\n\t\tif ( child.isSimilar( attribute ) ) {\n\t\t\tconst unwrapped = child.getChildren();\n\t\t\tconst count = child.childCount;\n\n\t\t\t// Replace wrapper element with its children\n\t\t\tchild.remove();\n\t\t\tparent.insertChildren( i, unwrapped );\n\n\t\t\t// Save start and end position of moved items.\n\t\t\tunwrapPositions.push(\n\t\t\t\tnew Position( parent, i ),\n\t\t\t\tnew Position( parent, i + count )\n\t\t\t);\n\n\t\t\t// Skip elements that were unwrapped. Assuming that there won't be another element to unwrap in child\n\t\t\t// elements.\n\t\t\ti += count;\n\t\t\tendOffset += count - 1;\n\t\t} else {\n\t\t\t// If other nested attribute is found start unwrapping there.\n\t\t\tif ( child.is( 'attributeElement' ) ) {\n\t\t\t\tunwrapChildren( child, 0, child.childCount, attribute );\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\t}\n\n\t// Merge at each unwrap.\n\tlet offsetChange = 0;\n\n\tfor ( let position of unwrapPositions ) {\n\t\tposition.offset -= offsetChange;\n\n\t\t// Do not merge with elements outside selected children.\n\t\tif ( position.offset == startOffset || position.offset == endOffset ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst newPosition = mergeAttributes( position );\n\n\t\t// If nodes were merged - other merge offsets will change.\n\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\toffsetChange++;\n\t\t\tendOffset--;\n\t\t}\n\t}\n\n\treturn Range.createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n}\n\n// Wraps children with provided `attribute`. Only children contained in `parent` element between\n// `startOffset` and `endOffset` will be wrapped.\n//\n// @param {module:engine/view/element~Element} parent\n// @param {Number} startOffset\n// @param {Number} endOffset\n// @param {module:engine/view/element~Element} attribute\nfunction wrapChildren( parent, startOffset, endOffset, attribute ) {\n\tlet i = startOffset;\n\tconst wrapPositions = [];\n\n\twhile ( i < endOffset ) {\n\t\tconst child = parent.getChild( i );\n\t\tconst isText = child.is( 'text' );\n\t\tconst isAttribute = child.is( 'attributeElement' );\n\t\tconst isEmpty = child.is( 'emptyElement' );\n\t\tconst isUI = child.is( 'uiElement' );\n\n\t\t// Wrap text, empty elements, ui elements or attributes with higher or equal priority.\n\t\tif ( isText || isEmpty || isUI || ( isAttribute && attribute.priority <= child.priority ) ) {\n\t\t\t// Clone attribute.\n\t\t\tconst newAttribute = attribute.clone();\n\n\t\t\t// Wrap current node with new attribute;\n\t\t\tchild.remove();\n\t\t\tnewAttribute.appendChildren( child );\n\t\t\tparent.insertChildren( i, newAttribute );\n\n\t\t\twrapPositions.push(\tnew Position( parent, i ) );\n\t\t}\n\t\t// If other nested attribute is found start wrapping there.\n\t\telse if ( isAttribute ) {\n\t\t\twrapChildren( child, 0, child.childCount, attribute );\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// Merge at each wrap.\n\tlet offsetChange = 0;\n\n\tfor ( let position of wrapPositions ) {\n\t\tposition.offset -= offsetChange;\n\n\t\t// Do not merge with elements outside selected children.\n\t\tif ( position.offset == startOffset ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst newPosition = mergeAttributes( position );\n\n\t\t// If nodes were merged - other merge offsets will change.\n\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\toffsetChange++;\n\t\t\tendOffset--;\n\t\t}\n\t}\n\n\treturn Range.createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n}\n\n// Returns new position that is moved to near text node. Returns same position if there is no text node before of after\n// specified position.\n//\n//\t\t

foo[]

->

foo{}

\n//\t\t

[]foo

->

{}foo

\n//\n// @param {module:engine/view/position~Position} position\n// @returns {module:engine/view/position~Position} Position located inside text node or same position if there is no text nodes\n// before or after position location.\nfunction movePositionToTextNode( position ) {\n\tconst nodeBefore = position.nodeBefore;\n\n\tif ( nodeBefore && nodeBefore.is( 'text' ) ) {\n\t\treturn new Position( nodeBefore, nodeBefore.data.length );\n\t}\n\n\tconst nodeAfter = position.nodeAfter;\n\n\tif ( nodeAfter && nodeAfter.is( 'text' ) ) {\n\t\treturn new Position( nodeAfter, 0 );\n\t}\n\n\treturn position;\n}\n\n// Breaks text node into two text nodes when possible.\n//\n//\t\t

foo{}bar

->

foo[]bar

\n//\t\t

{}foobar

->

[]foobar

\n//\t\t

foobar{}

->

foobar[]

\n//\n// @param {module:engine/view/position~Position} position Position that need to be placed inside text node.\n// @returns {module:engine/view/position~Position} New position after breaking text node.\nfunction breakTextNode( position ) {\n\tif ( position.offset == position.parent.data.length ) {\n\t\treturn new Position( position.parent.parent, position.parent.index + 1 );\n\t}\n\n\tif ( position.offset === 0 ) {\n\t\treturn new Position( position.parent.parent, position.parent.index );\n\t}\n\n\t// Get part of the text that need to be moved.\n\tconst textToMove = position.parent.data.slice( position.offset );\n\n\t// Leave rest of the text in position's parent.\n\tposition.parent.data = position.parent.data.slice( 0, position.offset );\n\n\t// Insert new text node after position's parent text node.\n\tposition.parent.parent.insertChildren( position.parent.index + 1, new Text( textToMove ) );\n\n\t// Return new position between two newly created text nodes.\n\treturn new Position( position.parent.parent, position.parent.index + 1 );\n}\n\n// Merges two text nodes into first node. Removes second node and returns merge position.\n//\n// @param {module:engine/view/text~Text} t1 First text node to merge. Data from second text node will be moved at the end of\n// this text node.\n// @param {module:engine/view/text~Text} t2 Second text node to merge. This node will be removed after merging.\n// @returns {module:engine/view/position~Position} Position after merging text nodes.\nfunction mergeTextNodes( t1, t2 ) {\n\t// Merge text data into first text node and remove second one.\n\tconst nodeBeforeLength = t1.data.length;\n\tt1.data += t2.data;\n\tt2.remove();\n\n\treturn new Position( t1, nodeBeforeLength );\n}\n\n// Wraps one {@link module:engine/view/attributeelement~AttributeElement AttributeElement} into another by merging them if possible.\n// Two AttributeElements can be merged when there is no attribute or style conflicts between them.\n// When merging is possible - all attributes, styles and classes are moved from wrapper element to element being\n// wrapped.\n//\n// @param {module:engine/view/attributeelement~AttributeElement} wrapper Wrapper AttributeElement.\n// @param {module:engine/view/attributeelement~AttributeElement} toWrap AttributeElement to wrap using wrapper element.\n// @returns {Boolean} Returns `true` if elements are merged.\nfunction wrapAttributeElement( wrapper, toWrap ) {\n\t// Can't merge if name or priority differs.\n\tif ( wrapper.name !== toWrap.name || wrapper.priority !== toWrap.priority ) {\n\t\treturn false;\n\t}\n\n\t// Check if attributes can be merged.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If some attributes are different we cannot wrap.\n\t\tif ( toWrap.hasAttribute( key ) && toWrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Check if styles can be merged.\n\tfor ( let key of wrapper.getStyleNames() ) {\n\t\tif ( toWrap.hasStyle( key ) && toWrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Move all attributes/classes/styles from wrapper to wrapped AttributeElement.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Move only these attributes that are not present - other are similar.\n\t\tif ( !toWrap.hasAttribute( key ) ) {\n\t\t\ttoWrap.setAttribute( key, wrapper.getAttribute( key ) );\n\t\t}\n\t}\n\n\tfor ( let key of wrapper.getStyleNames() ) {\n\t\tif ( !toWrap.hasStyle( key ) ) {\n\t\t\ttoWrap.setStyle( key, wrapper.getStyle( key ) );\n\t\t}\n\t}\n\n\tfor ( let key of wrapper.getClassNames() ) {\n\t\tif ( !toWrap.hasClass( key ) ) {\n\t\t\ttoWrap.addClass( key );\n\t\t}\n\t}\n\n\treturn true;\n}\n\n// Unwraps {@link module:engine/view/attributeelement~AttributeElement AttributeElement} from another by removing corresponding attributes,\n// classes and styles. All attributes, classes and styles from wrapper should be present inside element being unwrapped.\n//\n// @param {module:engine/view/attributeelement~AttributeElement} wrapper Wrapper AttributeElement.\n// @param {module:engine/view/attributeelement~AttributeElement} toUnwrap AttributeElement to unwrap using wrapper element.\n// @returns {Boolean} Returns `true` if elements are unwrapped.\nfunction unwrapAttributeElement( wrapper, toUnwrap ) {\n\t// Can't unwrap if name or priority differs.\n\tif ( wrapper.name !== toUnwrap.name || wrapper.priority !== toUnwrap.priority ) {\n\t\treturn false;\n\t}\n\n\t// Check if AttributeElement has all wrapper attributes.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If some attributes are missing or different we cannot unwrap.\n\t\tif ( !toUnwrap.hasAttribute( key ) || toUnwrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Check if AttributeElement has all wrapper classes.\n\tif ( !toUnwrap.hasClass( ...wrapper.getClassNames() ) ) {\n\t\treturn false;\n\t}\n\n\t// Check if AttributeElement has all wrapper styles.\n\tfor ( let key of wrapper.getStyleNames() ) {\n\t\t// If some styles are missing or different we cannot unwrap.\n\t\tif ( !toUnwrap.hasStyle( key ) || toUnwrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Remove all wrapper's attributes from unwrapped element.\n\tfor ( let key of wrapper.getAttributeKeys() ) {\n\t\t// Classes and styles should be checked separately.\n\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttoUnwrap.removeAttribute( key );\n\t}\n\n\t// Remove all wrapper's classes from unwrapped element.\n\ttoUnwrap.removeClass( ...wrapper.getClassNames() );\n\n\t// Remove all wrapper's styles from unwrapped element.\n\ttoUnwrap.removeStyle( ...wrapper.getStyleNames() );\n\n\treturn true;\n}\n\n// Returns `true` if range is located in same {@link module:engine/view/attributeelement~AttributeElement AttributeElement}\n// (`start` and `end` positions are located inside same {@link module:engine/view/attributeelement~AttributeElement AttributeElement}),\n// starts on 0 offset and ends after last child node.\n//\n// @param {module:engine/view/range~Range} Range\n// @returns {Boolean}\nfunction rangeSpansOnAllChildren( range ) {\n\treturn range.start.parent == range.end.parent && range.start.parent.is( 'attributeElement' ) &&\n\t\trange.start.offset === 0 && range.end.offset === range.start.parent.childCount;\n}\n\n// Checks if provided nodes are valid to insert. Checks if each node is an instance of\n// {@link module:engine/view/text~Text Text} or {@link module:engine/view/attributeelement~AttributeElement AttributeElement},\n// {@link module:engine/view/containerelement~ContainerElement ContainerElement},\n// {@link module:engine/view/emptyelement~EmptyElement EmptyElement} or\n// {@link module:engine/view/uielement~UIElement UIElement}.\n//\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\n// contains instances that are not {@link module:engine/view/text~Text Texts},\n// {@link module:engine/view/emptyelement~EmptyElement EmptyElements},\n// {@link module:engine/view/uielement~UIElement UIElements},\n// {@link module:engine/view/attributeelement~AttributeElement AttributeElements} or\n// {@link module:engine/view/containerelement~ContainerElement ContainerElements}.\n//\n// @param Iterable. nodes\nfunction validateNodesToInsert( nodes ) {\n\tfor ( let node of nodes ) {\n\t\tif ( !validNodesToInsert.some( ( validNode => node instanceof validNode ) ) ) {\n\t\t\t/**\n\t\t\t * Inserted nodes should be valid to insert. of {@link module:engine/view/attributeelement~AttributeElement AttributeElement},\n\t\t\t * {@link module:engine/view/containerelement~ContainerElement ContainerElement},\n\t\t\t * {@link module:engine/view/emptyelement~EmptyElement EmptyElement},\n\t\t\t * {@link module:engine/view/uielement~UIElement UIElement}, {@link module:engine/view/text~Text Text}.\n\t\t\t *\n\t\t\t * @error view-writer-insert-invalid-node\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-insert-invalid-node' );\n\t\t}\n\n\t\tif ( !node.is( 'text' ) ) {\n\t\t\tvalidateNodesToInsert( node.getChildren() );\n\t\t}\n\t}\n}\n\nconst validNodesToInsert = [ Text, AttributeElement, ContainerElement, EmptyElement, UIElement ];\n\n// Checks if node is ContainerElement or DocumentFragment, because in most cases they should be treated the same way.\n//\n// @param {module:engine/view/node~Node} node\n// @returns {Boolean} Returns `true` if node is instance of ContainerElement or DocumentFragment.\nfunction isContainerOrFragment( node ) {\n\treturn node && ( node.is( 'containerElement' ) || node.is( 'documentFragment' ) );\n}\n\n// Checks if {@link module:engine/view/range~Range#start range start} and {@link module:engine/view/range~Range#end range end} are placed\n// inside same {@link module:engine/view/containerelement~ContainerElement container element}.\n// Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when validation fails.\n//\n// @param {module:engine/view/range~Range} range\nfunction validateRangeContainer( range ) {\n\tconst startContainer = getParentContainer( range.start );\n\tconst endContainer = getParentContainer( range.end );\n\n\tif ( !startContainer || !endContainer || startContainer !== endContainer ) {\n\t\t/**\n\t\t * Range container is invalid. This can happen if {@link module:engine/view/range~Range#start range start} and\n\t\t * {@link module:engine/view/range~Range#end range end} positions are not placed inside same container or\n\t\t * parent container for these positions cannot be found.\n\t\t *\n\t\t * @error view-writer-invalid-range-container\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-invalid-range-container' );\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/view/writer.js\n// module id = 78\n// module chunks = 0","import apply from './_apply';\nimport toInteger from './toInteger';\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\nexport default rest;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/rest.js\n// module id = 8\n// module chunks = 0","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 304);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap fc2add8038d1ab7dc55f","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/ckeditorerror\n */\n\n/**\n * The CKEditor error class.\n *\n * All errors will be shortened during the minification process in order to reduce the code size.\n * Therefore, all error messages should be documented in the same way as those in {@link module:utils/log}.\n *\n * Read more in the {@link module:utils/log} module.\n *\n * @extends Error\n */\nexport default class CKEditorError extends Error {\n\t/**\n\t * Creates an instance of the CKEditorError class.\n\t *\n\t * Read more about error logging in the {@link module:utils/log} module.\n\t *\n\t * @param {String} message The error message in an `error-name: Error message.` format.\n\t * During the minification process the \"Error message\" part will be removed to limit the code size\n\t * and a link to this error documentation will be added to the `message`.\n\t * @param {Object} [data] Additional data describing the error. A stringified version of this object\n\t * will be appended to the error message, so the data are quickly visible in the console. The original\n\t * data object will also be later available under the {@link #data} property.\n\t */\n\tconstructor( message, data ) {\n\t\tif ( data ) {\n\t\t\tmessage += ' ' + JSON.stringify( data );\n\t\t}\n\n\t\tsuper( message );\n\n\t\t/**\n\t\t * @member {String}\n\t\t */\n\t\tthis.name = 'CKEditorError';\n\n\t\t/**\n\t\t * The additional error data passed to the constructor.\n\t\t *\n\t\t * @member {Object}\n\t\t */\n\t\tthis.data = data;\n\t}\n\n\t/**\n\t * Checks if error is an instance of CKEditorError class.\n\t *\n\t * @param {Object} error Object to check.\n\t * @returns {Boolean}\n\t */\n\tstatic isCKEditorError( error ) {\n\t\treturn error instanceof CKEditorError;\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/ckeditorerror.js\n// module id = 0\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/position\n */\n\nimport TreeWalker from './treewalker';\nimport last from '@ckeditor/ckeditor5-utils/src/lib/lodash/last';\nimport compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport Text from './text';\n\n/**\n * Represents a position in the model tree.\n *\n * **Note:** Position is based on offsets, not indexes. This means that position in element containing two text nodes\n * with data `foo` and `bar`, position between them has offset `3`, not `1`.\n * See {@link module:engine/model/position~Position#path} for more.\n *\n * Since position in a model is represented by a {@link module:engine/model/position~Position#root position root} and\n * {@link module:engine/model/position~Position#path position path} it is possible to create positions placed in non-existing elements.\n * This requirement is important for {@link module:engine/model/operation/transform~transform operational transformation}.\n *\n * Also, {@link module:engine/model/operation/operation~Operation operations}\n * kept in {@link module:engine/model/document~Document#history document history}\n * are storing positions (and ranges) which were correct when those operations were applied, but may not be correct\n * after document got changed.\n *\n * When changes are applied to model, it may also happen that {@link module:engine/model/position~Position#parent position parent}\n * will change even if position path has not changed. Keep in mind, that if a position leads to non-existing element,\n * {@link module:engine/model/position~Position#parent} and some other properties and methods will throw errors.\n *\n * In most cases, position with wrong path is caused by an error in code, but it is sometimes needed, as described above.\n */\nexport default class Position {\n\t/**\n\t * Creates a position.\n\t *\n\t * @param {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment} root Root of the position.\n\t * @param {Array.} path Position path. See {@link module:engine/model/position~Position#path}.\n\t */\n\tconstructor( root, path ) {\n\t\tif ( !root.is( 'element' ) && !root.is( 'documentFragment' ) ) {\n\t\t\t/**\n\t\t\t * Position root invalid.\n\t\t\t *\n\t\t\t * @error position-root-invalid.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-root-invalid: Position root invalid.' );\n\t\t}\n\n\t\tif ( !( path instanceof Array ) || path.length === 0 ) {\n\t\t\t/**\n\t\t\t * Position path must be an Array with at least one item.\n\t\t\t *\n\t\t\t * @error position-path-incorrect\n\t\t\t * @param path\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-path-incorrect: Position path must be an Array with at least one item.', { path: path } );\n\t\t}\n\n\t\t// Normalize the root and path (if element was passed).\n\t\tpath = root.getPath().concat( path );\n\t\troot = root.root;\n\n\t\t/**\n\t\t * Root of the position path.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment}\n\t\t * module:engine/model/position~Position#root\n\t\t */\n\t\tthis.root = root;\n\n\t\t/**\n\t\t * Position of the node it the tree. Path is described through offsets, not indexes.\n\t\t *\n\t\t * Position can be placed before, after or in a {@link module:engine/model/node~Node node} if that node has\n\t\t * {@link module:engine/model/node~Node#offsetSize} greater than `1`. Items in position path are\n\t\t * {@link module:engine/model/node~Node#startOffset starting offsets} of position ancestors, starting from direct root children,\n\t\t * down to the position offset in it's parent.\n\t\t *\n\t\t *\t\t ROOT\n\t\t *\t\t |- P before: [ 0 ] after: [ 1 ]\n\t\t *\t\t |- UL before: [ 1 ] after: [ 2 ]\n\t\t *\t\t |- LI before: [ 1, 0 ] after: [ 1, 1 ]\n\t\t *\t\t | |- foo before: [ 1, 0, 0 ] after: [ 1, 0, 3 ]\n\t\t *\t\t |- LI before: [ 1, 1 ] after: [ 1, 2 ]\n\t\t *\t\t |- bar before: [ 1, 1, 0 ] after: [ 1, 1, 3 ]\n\t\t *\n\t\t * `foo` and `bar` are representing {@link module:engine/model/text~Text text nodes}. Since text nodes has offset size\n\t\t * greater than `1` you can place position offset between their start and end:\n\t\t *\n\t\t *\t\t ROOT\n\t\t *\t\t |- P\n\t\t *\t\t |- UL\n\t\t *\t\t |- LI\n\t\t *\t\t | |- f^o|o ^ has path: [ 1, 0, 1 ] | has path: [ 1, 0, 2 ]\n\t\t *\t\t |- LI\n\t\t *\t\t |- b^a|r ^ has path: [ 1, 1, 1 ] | has path: [ 1, 1, 2 ]\n\t\t *\n\t\t * @member {Array.} module:engine/model/position~Position#path\n\t\t */\n\t\tthis.path = path;\n\t}\n\n\t/**\n\t * Offset at which this position is located in its {@link module:engine/model/position~Position#parent parent}. It is equal\n\t * to the last item in position {@link module:engine/model/position~Position#path path}.\n\t *\n\t * @type {Number}\n\t */\n\tget offset() {\n\t\treturn last( this.path );\n\t}\n\n\t/**\n\t * @param {Number} newOffset\n\t */\n\tset offset( newOffset ) {\n\t\tthis.path[ this.path.length - 1 ] = newOffset;\n\t}\n\n\t/**\n\t * Parent element of this position.\n\t *\n\t * Keep in mind that `parent` value is calculated when the property is accessed.\n\t * If {@link module:engine/model/position~Position#path position path}\n\t * leads to a non-existing element, `parent` property will throw error.\n\t *\n\t * Also it is a good idea to cache `parent` property if it is used frequently in an algorithm (i.e. in a long loop).\n\t *\n\t * @readonly\n\t * @type {module:engine/model/element~Element}\n\t */\n\tget parent() {\n\t\tlet parent = this.root;\n\n\t\tfor ( let i = 0; i < this.path.length - 1; i++ ) {\n\t\t\tparent = parent.getChild( parent.offsetToIndex( this.path[ i ] ) );\n\t\t}\n\n\t\treturn parent;\n\t}\n\n\t/**\n\t * Position {@link module:engine/model/position~Position#offset offset} converted to an index in position's parent node. It is\n\t * equal to the {@link module:engine/model/node~Node#index index} of a node after this position. If position is placed\n\t * in text node, position index is equal to the index of that text node.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget index() {\n\t\treturn this.parent.offsetToIndex( this.offset );\n\t}\n\n\t/**\n\t * Returns {@link module:engine/model/text~Text text node} instance in which this position is placed or `null` if this\n\t * position is not in a text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/model/text~Text|null}\n\t */\n\tget textNode() {\n\t\tlet node = this.parent.getChild( this.index );\n\n\t\treturn ( node instanceof Text && node.startOffset < this.offset ) ? node : null;\n\t}\n\n\t/**\n\t * Node directly after this position or `null` if this position is in text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/model/node~Node|null}\n\t */\n\tget nodeAfter() {\n\t\treturn this.textNode === null ? this.parent.getChild( this.index ) : null;\n\t}\n\n\t/**\n\t * Node directly before this position or `null` if this position is in text node.\n\t *\n\t * @readonly\n\t * @type {Node}\n\t */\n\tget nodeBefore() {\n\t\treturn this.textNode === null ? this.parent.getChild( this.index - 1 ) : null;\n\t}\n\n\t/**\n\t * Is `true` if position is at the beginning of its {@link module:engine/model/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtStart() {\n\t\treturn this.offset === 0;\n\t}\n\n\t/**\n\t * Is `true` if position is at the end of its {@link module:engine/model/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtEnd() {\n\t\treturn this.offset == this.parent.maxOffset;\n\t}\n\n\t/**\n\t * Checks whether this position is before or after given position.\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {module:engine/model/position~PositionRelation}\n\t */\n\tcompareWith( otherPosition ) {\n\t\tif ( this.root != otherPosition.root ) {\n\t\t\treturn 'different';\n\t\t}\n\n\t\tconst result = compareArrays( this.path, otherPosition.path );\n\n\t\tswitch ( result ) {\n\t\t\tcase 'same':\n\t\t\t\treturn 'same';\n\n\t\t\tcase 'prefix':\n\t\t\t\treturn 'before';\n\n\t\t\tcase 'extension':\n\t\t\t\treturn 'after';\n\n\t\t\tdefault:\n\t\t\t\tif ( this.path[ result ] < otherPosition.path[ result ] ) {\n\t\t\t\t\treturn 'before';\n\t\t\t\t} else {\n\t\t\t\t\treturn 'after';\n\t\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Gets the farthest position which matches the callback using\n\t * {@link module:engine/model/treewalker~TreeWalker TreeWalker}.\n\t *\n\t * For example:\n\t *\n\t * \t\tgetLastMatchingPosition( value => value.type == 'text' );\n\t * \t\t// []foo -> foo[]\n\t *\n\t * \t\tgetLastMatchingPosition( value => value.type == 'text', { direction: 'backward' } );\n\t * \t\t// foo[] -> []foo\n\t *\n\t * \t\tgetLastMatchingPosition( value => false );\n\t * \t\t// Do not move the position.\n\t *\n\t * @param {Function} skip Callback function. Gets {@link module:engine/model/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t *\n\t * @returns {module:engine/model/position~Position} The position after the last item which matches the `skip` callback test.\n\t */\n\tgetLastMatchingPosition( skip, options = {} ) {\n\t\toptions.startPosition = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\t\ttreeWalker.skip( skip );\n\n\t\treturn treeWalker.position;\n\t}\n\n\t/**\n\t * Returns a path to this position's parent. Parent path is equal to position {@link module:engine/model/position~Position#path path}\n\t * but without the last item.\n\t *\n\t * This method returns the parent path even if the parent does not exists.\n\t *\n\t * @returns {Array.} Path to the parent.\n\t */\n\tgetParentPath() {\n\t\treturn this.path.slice( 0, -1 );\n\t}\n\n\t/**\n\t * Returns ancestors array of this position, that is this position's parent and its ancestors.\n\t *\n\t * @returns {Array.} Array with ancestors.\n\t */\n\tgetAncestors() {\n\t\tif ( this.parent.is( 'documentFragment' ) ) {\n\t\t\treturn [ this.parent ];\n\t\t} else {\n\t\t\treturn this.parent.getAncestors( { includeNode: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the slice of two position {@link #path paths} which is identical. The {@link #root roots}\n\t * of these two paths must be identical.\n\t *\n\t * @param {module:engine/model/position~Position} position The second position.\n\t * @returns {Array.} The common path.\n\t */\n\tgetCommonPath( position ) {\n\t\tif ( this.root != position.root ) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// We find on which tree-level start and end have the lowest common ancestor\n\t\tlet cmp = compareArrays( this.path, position.path );\n\t\t// If comparison returned string it means that arrays are same.\n\t\tlet diffAt = ( typeof cmp == 'string' ) ? Math.min( this.path.length, position.path.length ) : cmp;\n\n\t\treturn this.path.slice( 0, diffAt );\n\t}\n\n\t/**\n\t * Returns a new instance of `Position`, that has same {@link #parent parent} but it's offset\n\t * is shifted by `shift` value (can be a negative value).\n\t *\n\t * @param {Number} shift Offset shift. Can be a negative value.\n\t * @returns {module:engine/model/position~Position} Shifted position.\n\t */\n\tgetShiftedBy( shift ) {\n\t\tlet shifted = Position.createFromPosition( this );\n\n\t\tlet offset = shifted.offset + shift;\n\t\tshifted.offset = offset < 0 ? 0 : offset;\n\n\t\treturn shifted;\n\t}\n\n\t/**\n\t * Checks whether this position is after given position.\n\t *\n\t * @see module:engine/model/position~Position#isBefore\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if this position is after given position.\n\t */\n\tisAfter( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'after';\n\t}\n\n\t/**\n\t * Checks whether this position is before given position.\n\t *\n\t * **Note:** watch out when using negation of the value returned by this method, because the negation will also\n\t * be `true` if positions are in different roots and you might not expect this. You should probably use\n\t * `a.isAfter( b ) || a.isEqual( b )` or `!a.isBefore( p ) && a.root == b.root` in most scenarios. If your\n\t * condition uses multiple `isAfter` and `isBefore` checks, build them so they do not use negated values, i.e.:\n\t *\n\t *\t\tif ( a.isBefore( b ) && c.isAfter( d ) ) {\n\t *\t\t\t// do A.\n\t *\t\t} else {\n\t *\t\t\t// do B.\n\t *\t\t}\n\t *\n\t * or, if you have only one if-branch:\n\t *\n\t *\t\tif ( !( a.isBefore( b ) && c.isAfter( d ) ) {\n\t *\t\t\t// do B.\n\t *\t\t}\n\t *\n\t * rather than:\n\t *\n\t *\t\tif ( !a.isBefore( b ) || && !c.isAfter( d ) ) {\n\t *\t\t\t// do B.\n\t *\t\t} else {\n\t *\t\t\t// do A.\n\t *\t\t}\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if this position is before given position.\n\t */\n\tisBefore( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'before';\n\t}\n\n\t/**\n\t * Checks whether this position is equal to given position.\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if positions are same.\n\t */\n\tisEqual( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'same';\n\t}\n\n\t/**\n\t * Checks whether this position is touching given position. Positions touch when there are no text nodes\n\t * or empty nodes in a range between them. Technically, those positions are not equal but in many cases\n\t * they are very similar or even indistinguishable.\n\t *\n\t * **Note:** this method traverses model document so it can be only used when range is up-to-date with model document.\n\t *\n\t * @param {module:engine/model/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if positions touch.\n\t */\n\tisTouching( otherPosition ) {\n\t\tlet left = null;\n\t\tlet right = null;\n\t\tlet compare = this.compareWith( otherPosition );\n\n\t\tswitch ( compare ) {\n\t\t\tcase 'same':\n\t\t\t\treturn true;\n\n\t\t\tcase 'before':\n\t\t\t\tleft = Position.createFromPosition( this );\n\t\t\t\tright = Position.createFromPosition( otherPosition );\n\t\t\t\tbreak;\n\n\t\t\tcase 'after':\n\t\t\t\tleft = Position.createFromPosition( otherPosition );\n\t\t\t\tright = Position.createFromPosition( this );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\n\t\t// Cached for optimization purposes.\n\t\tlet leftParent = left.parent;\n\n\t\twhile ( left.path.length + right.path.length ) {\n\t\t\tif ( left.isEqual( right ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ( left.path.length > right.path.length ) {\n\t\t\t\tif ( left.offset !== leftParent.maxOffset ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tleft.path = left.path.slice( 0, -1 );\n\t\t\t\tleftParent = leftParent.parent;\n\t\t\t\tleft.offset++;\n\t\t\t} else {\n\t\t\t\tif ( right.offset !== 0 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tright.path = right.path.slice( 0, -1 );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by removing `howMany` nodes starting from `deletePosition`.\n\t * It may happen that this position is in a removed node. If that is the case, `null` is returned instead.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} deletePosition Position before the first removed node.\n\t * @param {Number} howMany How many nodes are removed.\n\t * @returns {module:engine/model/position~Position|null} Transformed position or `null`.\n\t */\n\t_getTransformedByDeletion( deletePosition, howMany ) {\n\t\tlet transformed = Position.createFromPosition( this );\n\n\t\t// This position can't be affected if deletion was in a different root.\n\t\tif ( this.root != deletePosition.root ) {\n\t\t\treturn transformed;\n\t\t}\n\n\t\tif ( compareArrays( deletePosition.getParentPath(), this.getParentPath() ) == 'same' ) {\n\t\t\t// If nodes are removed from the node that is pointed by this position...\n\t\t\tif ( deletePosition.offset < this.offset ) {\n\t\t\t\t// And are removed from before an offset of that position...\n\t\t\t\tif ( deletePosition.offset + howMany > this.offset ) {\n\t\t\t\t\t// Position is in removed range, it's no longer in the tree.\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\t// Decrement the offset accordingly.\n\t\t\t\t\ttransformed.offset -= howMany;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( compareArrays( deletePosition.getParentPath(), this.getParentPath() ) == 'prefix' ) {\n\t\t\t// If nodes are removed from a node that is on a path to this position...\n\t\t\tconst i = deletePosition.path.length - 1;\n\n\t\t\tif ( deletePosition.offset <= this.path[ i ] ) {\n\t\t\t\t// And are removed from before next node of that path...\n\t\t\t\tif ( deletePosition.offset + howMany > this.path[ i ] ) {\n\t\t\t\t\t// If the next node of that path is removed return null\n\t\t\t\t\t// because the node containing this position got removed.\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, decrement index on that path.\n\t\t\t\t\ttransformed.path[ i ] -= howMany;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by inserting `howMany` nodes at `insertPosition`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} insertPosition Position where nodes are inserted.\n\t * @param {Number} howMany How many nodes are inserted.\n\t * @param {Boolean} insertBefore Flag indicating whether nodes are inserted before or after `insertPosition`.\n\t * This is important only when `insertPosition` and this position are same. If that is the case and the flag is\n\t * set to `true`, this position will get transformed. If the flag is set to `false`, it won't.\n\t * @returns {module:engine/model/position~Position} Transformed position.\n\t */\n\t_getTransformedByInsertion( insertPosition, howMany, insertBefore ) {\n\t\tlet transformed = Position.createFromPosition( this );\n\n\t\t// This position can't be affected if insertion was in a different root.\n\t\tif ( this.root != insertPosition.root ) {\n\t\t\treturn transformed;\n\t\t}\n\n\t\tif ( compareArrays( insertPosition.getParentPath(), this.getParentPath() ) == 'same' ) {\n\t\t\t// If nodes are inserted in the node that is pointed by this position...\n\t\t\tif ( insertPosition.offset < this.offset || ( insertPosition.offset == this.offset && insertBefore ) ) {\n\t\t\t\t// And are inserted before an offset of that position...\n\t\t\t\t// \"Push\" this positions offset.\n\t\t\t\ttransformed.offset += howMany;\n\t\t\t}\n\t\t} else if ( compareArrays( insertPosition.getParentPath(), this.getParentPath() ) == 'prefix' ) {\n\t\t\t// If nodes are inserted in a node that is on a path to this position...\n\t\t\tconst i = insertPosition.path.length - 1;\n\n\t\t\tif ( insertPosition.offset <= this.path[ i ] ) {\n\t\t\t\t// And are inserted before next node of that path...\n\t\t\t\t// \"Push\" the index on that path.\n\t\t\t\ttransformed.path[ i ] += howMany;\n\t\t\t}\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by moving `howMany` nodes from `sourcePosition` to `targetPosition`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} sourcePosition Position before the first element to move.\n\t * @param {module:engine/model/position~Position} targetPosition Position where moved elements will be inserted.\n\t * @param {Number} howMany How many consecutive nodes to move, starting from `sourcePosition`.\n\t * @param {Boolean} insertBefore Flag indicating whether moved nodes are pasted before or after `insertPosition`.\n\t * This is important only when `targetPosition` and this position are same. If that is the case and the flag is\n\t * set to `true`, this position will get transformed by range insertion. If the flag is set to `false`, it won't.\n\t * @param {Boolean} [sticky] Flag indicating whether this position \"sticks\" to range, that is if it should be moved\n\t * with the moved range if it is equal to one of range's boundaries.\n\t * @returns {module:engine/model/position~Position} Transformed position.\n\t */\n\t_getTransformedByMove( sourcePosition, targetPosition, howMany, insertBefore, sticky ) {\n\t\t// Moving a range removes nodes from their original position. We acknowledge this by proper transformation.\n\t\tlet transformed = this._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\t// Then we update target position, as it could be affected by nodes removal too.\n\t\ttargetPosition = targetPosition._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\tif ( transformed === null || ( sticky && transformed.isEqual( sourcePosition ) ) ) {\n\t\t\t// This position is inside moved range (or sticks to it).\n\t\t\t// In this case, we calculate a combination of this position, move source position and target position.\n\t\t\ttransformed = this._getCombined( sourcePosition, targetPosition );\n\t\t} else {\n\t\t\t// This position is not inside a removed range.\n\t\t\t// In next step, we simply reflect inserting `howMany` nodes, which might further affect the position.\n\t\t\ttransformed = transformed._getTransformedByInsertion( targetPosition, howMany, insertBefore );\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a new position that is a combination of this position and given positions.\n\t *\n\t * The combined position is a copy of this position transformed by moving a range starting at `source` position\n\t * to the `target` position. It is expected that this position is inside the moved range.\n\t *\n\t * Example:\n\t *\n\t *\t\tlet original = new Position( root, [ 2, 3, 1 ] );\n\t *\t\tlet source = new Position( root, [ 2, 2 ] );\n\t *\t\tlet target = new Position( otherRoot, [ 1, 1, 3 ] );\n\t *\t\toriginal._getCombined( source, target ); // path is [ 1, 1, 4, 1 ], root is `otherRoot`\n\t *\n\t * Explanation:\n\t *\n\t * We have a position `[ 2, 3, 1 ]` and move some nodes from `[ 2, 2 ]` to `[ 1, 1, 3 ]`. The original position\n\t * was inside moved nodes and now should point to the new place. The moved nodes will be after\n\t * positions `[ 1, 1, 3 ]`, `[ 1, 1, 4 ]`, `[ 1, 1, 5 ]`. Since our position was in the second moved node,\n\t * the transformed position will be in a sub-tree of a node at `[ 1, 1, 4 ]`. Looking at original path, we\n\t * took care of `[ 2, 3 ]` part of it. Now we have to add the rest of the original path to the transformed path.\n\t * Finally, the transformed position will point to `[ 1, 1, 4, 1 ]`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} source Beginning of the moved range.\n\t * @param {module:engine/model/position~Position} target Position where the range is moved.\n\t * @returns {module:engine/model/position~Position} Combined position.\n\t */\n\t_getCombined( source, target ) {\n\t\tconst i = source.path.length - 1;\n\n\t\t// The first part of a path to combined position is a path to the place where nodes were moved.\n\t\tlet combined = Position.createFromPosition( target );\n\n\t\t// Then we have to update the rest of the path.\n\n\t\t// Fix the offset because this position might be after `from` position and we have to reflect that.\n\t\tcombined.offset = combined.offset + this.path[ i ] - source.offset;\n\n\t\t// Then, add the rest of the path.\n\t\t// If this position is at the same level as `from` position nothing will get added.\n\t\tcombined.path = combined.path.concat( this.path.slice( i + 1 ) );\n\n\t\treturn combined;\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/model/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/model/item~Item model item} and `'before'` or `'after'` (sets position before or after given model item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link module:engine/model/position~Position.createBefore},\n\t * * {@link module:engine/model/position~Position.createAfter},\n\t * * {@link module:engine/model/position~Position.createFromParentAndOffset},\n\t * * {@link module:engine/model/position~Position.createFromPosition}.\n\t *\n\t * @param {module:engine/model/item~Item|module:engine/model/position~Position} itemOrPosition\n\t * @param {Number|'end'|'before'|'after'} [offset=0] Offset or one of the flags. Used only when\n\t * first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tstatic createAt( itemOrPosition, offset ) {\n\t\tif ( itemOrPosition instanceof Position ) {\n\t\t\treturn this.createFromPosition( itemOrPosition );\n\t\t} else {\n\t\t\tconst node = itemOrPosition;\n\n\t\t\tif ( offset == 'end' ) {\n\t\t\t\toffset = node.maxOffset;\n\t\t\t} else if ( offset == 'before' ) {\n\t\t\t\treturn this.createBefore( node );\n\t\t\t} else if ( offset == 'after' ) {\n\t\t\t\treturn this.createAfter( node );\n\t\t\t} else if ( !offset ) {\n\t\t\t\toffset = 0;\n\t\t\t}\n\n\t\t\treturn this.createFromParentAndOffset( node, offset );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new position, after given {@link module:engine/model/item~Item model item}.\n\t *\n\t * @param {module:engine/model/item~Item} item Item after which the position should be placed.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createAfter( item ) {\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make position after root.\n\t\t\t *\n\t\t\t * @error position-after-root\n\t\t\t * @param {module:engine/model/item~Item} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-after-root: You can not make position after root.', { root: item } );\n\t\t}\n\n\t\treturn this.createFromParentAndOffset( item.parent, item.endOffset );\n\t}\n\n\t/**\n\t * Creates a new position, before the given {@link module:engine/model/item~Item model item}.\n\t *\n\t * @param {module:engine/model/item~Item} item Item before which the position should be placed.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createBefore( item ) {\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make position before root.\n\t\t\t *\n\t\t\t * @error position-before-root\n\t\t\t * @param {module:engine/model/item~Item} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-before-root: You can not make position before root.', { root: item } );\n\t\t}\n\n\t\treturn this.createFromParentAndOffset( item.parent, item.startOffset );\n\t}\n\n\t/**\n\t * Creates a new position from the parent element and an offset in that element.\n\t *\n\t * @param {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment} parent Position's parent.\n\t * @param {Number} offset Position's offset.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createFromParentAndOffset( parent, offset ) {\n\t\tif ( !parent.is( 'element' ) && !parent.is( 'documentFragment' ) ) {\n\t\t\t/**\n\t\t\t * Position parent have to be a model element or model document fragment.\n\t\t\t *\n\t\t\t * @error position-parent-incorrect\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-position-parent-incorrect: Position parent have to be a element or document fragment.' );\n\t\t}\n\n\t\tconst path = parent.getPath();\n\n\t\tpath.push( offset );\n\n\t\treturn new this( parent.root, path );\n\t}\n\n\t/**\n\t * Creates a new position, which is equal to passed position.\n\t *\n\t * @param {module:engine/model/position~Position} position Position to be cloned.\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tstatic createFromPosition( position ) {\n\t\treturn new this( position.root, position.path.slice() );\n\t}\n\n\t/**\n\t * Creates a `Position` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param {Object} json Plain object to be converted to `Position`.\n\t * @returns {module:engine/model/position~Position} `Position` instance created using given plain object.\n\t */\n\tstatic fromJSON( json, doc ) {\n\t\tif ( json.root === '$graveyard' ) {\n\t\t\treturn new Position( doc.graveyard, json.path );\n\t\t}\n\n\t\tif ( !doc.hasRoot( json.root ) ) {\n\t\t\t/**\n\t\t\t * Cannot create position for document. Root with specified name does not exist.\n\t\t\t *\n\t\t\t * @error position-fromjson-no-root\n\t\t\t * @param {String} rootName\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-position-fromjson-no-root: Cannot create position for document. Root with specified name does not exist.',\n\t\t\t\t{ rootName: json.root }\n\t\t\t);\n\t\t}\n\n\t\treturn new Position( doc.getRoot( json.root ), json.path );\n\t}\n}\n\n/**\n * A flag indicating whether this position is `'before'` or `'after'` or `'same'` as given position.\n * If positions are in different roots `'different'` flag is returned.\n *\n * @typedef {String} module:engine/model/position~PositionRelation\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/position.js\n// module id = 1\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/range\n */\n\nimport Position from './position';\nimport TreeWalker from './treewalker';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * Range class. Range is iterable.\n */\nexport default class Range {\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * **Note:** Constructor creates it's own {@link module:engine/model/position~Position Position} instances basing on passed values.\n\t *\n\t * @param {module:engine/model/position~Position} start Start position.\n\t * @param {module:engine/model/position~Position} [end] End position. If not set, range will be collapsed at `start` position.\n\t */\n\tconstructor( start, end = null ) {\n\t\t/**\n\t\t * Start position.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/position~Position}\n\t\t */\n\t\tthis.start = Position.createFromPosition( start );\n\n\t\t/**\n\t\t * End position.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/position~Position}\n\t\t */\n\t\tthis.end = end ? Position.createFromPosition( end ) : Position.createFromPosition( start );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/item~Item items} that are in this range and returns\n\t * them together with additional information like length or {@link module:engine/model/position~Position positions},\n\t * grouped as {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t * It iterates over all {@link module:engine/model/textproxy~TextProxy text contents} that are inside the range\n\t * and all the {@link module:engine/model/element~Element}s that are entered into when iterating over this range.\n\t *\n\t * This iterator uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range\n\t * and `ignoreElementEnd` option set to `true`.\n\t *\n\t * @returns {Iterable.}\n\t */\n\t*[ Symbol.iterator ]() {\n\t\tyield* new TreeWalker( { boundaries: this, ignoreElementEnd: true } );\n\t}\n\n\t/**\n\t * Returns whether the range is collapsed, that is if {@link #start start} and\n\t * {@link #end end} positions are equal.\n\t *\n\t * @type {Boolean}\n\t */\n\tget isCollapsed() {\n\t\treturn this.start.isEqual( this.end );\n\t}\n\n\t/**\n\t * Returns whether this range is flat, that is if {@link #start start} position and\n\t * {@link #end end} position are in the same {@link module:engine/model/position~Position#parent parent}.\n\t *\n\t * @type {Boolean}\n\t */\n\tget isFlat() {\n\t\treturn this.start.parent === this.end.parent;\n\t}\n\n\t/**\n\t * Range root element.\n\t *\n\t * @type {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment}\n\t */\n\tget root() {\n\t\treturn this.start.root;\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link module:engine/model/position~Position position}.\n\t *\n\t * @param {module:engine/model/position~Position} position Position to check.\n\t * @returns {Boolean} `true` if given {@link module:engine/model/position~Position position} is contained in this range, `false` otherwise.\n\t */\n\tcontainsPosition( position ) {\n\t\treturn position.isAfter( this.start ) && position.isBefore( this.end );\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link ~Range range}.\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to check.\n\t * @returns {Boolean} `true` if given {@link ~Range range} boundaries are contained by this range, `false` otherwise.\n\t */\n\tcontainsRange( otherRange ) {\n\t\treturn this.containsPosition( otherRange.start ) && this.containsPosition( otherRange.end );\n\t}\n\n\t/**\n\t * Two ranges are equal if their {@link #start start} and\n\t * {@link #end end} positions are equal.\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to compare with.\n\t * @returns {Boolean} `true` if ranges are equal, `false` otherwise.\n\t */\n\tisEqual( otherRange ) {\n\t\treturn this.start.isEqual( otherRange.start ) && this.end.isEqual( otherRange.end );\n\t}\n\n\t/**\n\t * Checks and returns whether this range intersects with given range.\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to compare with.\n\t * @returns {Boolean} `true` if ranges intersect, `false` otherwise.\n\t */\n\tisIntersecting( otherRange ) {\n\t\treturn this.start.isBefore( otherRange.end ) && this.end.isAfter( otherRange.start );\n\t}\n\n\t/**\n\t * Computes which part(s) of this {@link ~Range range} is not a part of given {@link ~Range range}.\n\t * Returned array contains zero, one or two {@link ~Range ranges}.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet range = new Range( new Position( root, [ 2, 7 ] ), new Position( root, [ 4, 0, 1 ] ) );\n\t *\t\tlet otherRange = new Range( new Position( root, [ 1 ] ), new Position( root, [ 5 ] ) );\n\t *\t\tlet transformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has no ranges because `otherRange` contains `range`\n\t *\n\t *\t\totherRange = new Range( new Position( root, [ 1 ] ), new Position( root, [ 3 ] ) );\n\t *\t\ttransformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has one range: from [ 3 ] to [ 4, 0, 1 ]\n\t *\n\t *\t\totherRange = new Range( new Position( root, [ 3 ] ), new Position( root, [ 4 ] ) );\n\t *\t\ttransformed = range.getDifference( otherRange );\n\t *\t\t// transformed array has two ranges: from [ 2, 7 ] to [ 3 ] and from [ 4 ] to [ 4, 0, 1 ]\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to differentiate against.\n\t * @returns {Array.} The difference between ranges.\n\t */\n\tgetDifference( otherRange ) {\n\t\tconst ranges = [];\n\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect.\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the start to the middle of this range.\n\t\t\t\tranges.push( new Range( this.start, otherRange.start ) );\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the middle of this range to the end.\n\t\t\t\tranges.push( new Range( otherRange.end, this.end ) );\n\t\t\t}\n\t\t} else {\n\t\t\t// Ranges do not intersect, return the original range.\n\t\t\tranges.push( Range.createFromRange( this ) );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns an intersection of this {@link ~Range range} and given {@link ~Range range}.\n\t * Intersection is a common part of both of those ranges. If ranges has no common part, returns `null`.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet range = new Range( new Position( root, [ 2, 7 ] ), new Position( root, [ 4, 0, 1 ] ) );\n\t *\t\tlet otherRange = new Range( new Position( root, [ 1 ] ), new Position( root, [ 2 ] ) );\n\t *\t\tlet transformed = range.getIntersection( otherRange ); // null - ranges have no common part\n\t *\n\t *\t\totherRange = new Range( new Position( root, [ 3 ] ), new Position( root, [ 5 ] ) );\n\t *\t\ttransformed = range.getIntersection( otherRange ); // range from [ 3 ] to [ 4, 0, 1 ]\n\t *\n\t * @param {module:engine/model/range~Range} otherRange Range to check for intersection.\n\t * @returns {module:engine/model/range~Range|null} A common part of given ranges or `null` if ranges have no common part.\n\t */\n\tgetIntersection( otherRange ) {\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect, so a common range will be returned.\n\t\t\t// At most, it will be same as this range.\n\t\t\tlet commonRangeStart = this.start;\n\t\t\tlet commonRangeEnd = this.end;\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means thaNt we have to\n\t\t\t\t// shrink common range to the given range start.\n\t\t\t\tcommonRangeStart = otherRange.start;\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// shrink common range to the given range end.\n\t\t\t\tcommonRangeEnd = otherRange.end;\n\t\t\t}\n\n\t\t\treturn new Range( commonRangeStart, commonRangeEnd );\n\t\t}\n\n\t\t// Ranges do not intersect, so they do not have common part.\n\t\treturn null;\n\t}\n\n\t/**\n\t * Computes and returns the smallest set of {@link #isFlat flat} ranges, that covers this range in whole.\n\t *\n\t * See an example of a model structure (`[` and `]` are range boundaries):\n\t *\n\t *\t\troot root\n\t *\t\t |- element DIV DIV P2 P3 DIV\n\t *\t\t | |- element H H P1 f o o b a r H P4\n\t *\t\t | | |- \"fir[st\" fir[st lorem se]cond ipsum\n\t *\t\t | |- element P1\n\t *\t\t | | |- \"lorem\" ||\n\t *\t\t |- element P2 ||\n\t *\t\t | |- \"foo\" VV\n\t *\t\t |- element P3\n\t *\t\t | |- \"bar\" root\n\t *\t\t |- element DIV DIV [P2 P3] DIV\n\t *\t\t | |- element H H [P1] f o o b a r H P4\n\t *\t\t | | |- \"se]cond\" fir[st] lorem [se]cond ipsum\n\t *\t\t | |- element P4\n\t *\t\t | | |- \"ipsum\"\n\t *\n\t * As it can be seen, letters contained in the range are: `stloremfoobarse`, spread across different parents.\n\t * We are looking for minimal set of flat ranges that contains the same nodes.\n\t *\n\t * Minimal flat ranges for above range `( [ 0, 0, 3 ], [ 3, 0, 2 ] )` will be:\n\t *\n\t *\t\t( [ 0, 0, 3 ], [ 0, 0, 5 ] ) = \"st\"\n\t *\t\t( [ 0, 1 ], [ 0, 2 ] ) = element P1 (\"lorem\")\n\t *\t\t( [ 1 ], [ 3 ] ) = element P2, element P3 (\"foobar\")\n\t *\t\t( [ 3, 0, 0 ], [ 3, 0, 2 ] ) = \"se\"\n\t *\n\t * **Note:** if an {@link module:engine/model/element~Element element} is not wholly contained in this range, it won't be returned\n\t * in any of the returned flat ranges. See in the example how `H` elements at the beginning and at the end of the range\n\t * were omitted. Only their parts that were wholly in the range were returned.\n\t *\n\t * **Note:** this method is not returning flat ranges that contain no nodes.\n\t *\n\t * @returns {Array.} Array of flat ranges covering this range.\n\t */\n\tgetMinimalFlatRanges() {\n\t\tconst ranges = [];\n\t\tconst diffAt = this.start.getCommonPath( this.end ).length;\n\n\t\tlet pos = Position.createFromPosition( this.start );\n\t\tlet posParent = pos.parent;\n\n\t\t// Go up.\n\t\twhile ( pos.path.length > diffAt + 1 ) {\n\t\t\tlet howMany = posParent.maxOffset - pos.offset;\n\n\t\t\tif ( howMany !== 0 ) {\n\t\t\t\tranges.push( new Range( pos, pos.getShiftedBy( howMany ) ) );\n\t\t\t}\n\n\t\t\tpos.path = pos.path.slice( 0, -1 );\n\t\t\tpos.offset++;\n\t\t\tposParent = posParent.parent;\n\t\t}\n\n\t\t// Go down.\n\t\twhile ( pos.path.length <= this.end.path.length ) {\n\t\t\tlet offset = this.end.path[ pos.path.length - 1 ];\n\t\t\tlet howMany = offset - pos.offset;\n\n\t\t\tif ( howMany !== 0 ) {\n\t\t\t\tranges.push( new Range( pos, pos.getShiftedBy( howMany ) ) );\n\t\t\t}\n\n\t\t\tpos.offset = offset;\n\t\t\tpos.path.push( 0 );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/model/treewalker~TreeWalker TreeWalker} instance with this range as a boundary.\n\t *\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t * @param {module:engine/model/position~Position} [options.startPosition]\n\t * @param {Boolean} [options.singleCharacters=false]\n\t * @param {Boolean} [options.shallow=false]\n\t * @param {Boolean} [options.ignoreElementEnd=false]\n\t */\n\tgetWalker( options = {} ) {\n\t\toptions.boundaries = this;\n\n\t\treturn new TreeWalker( options );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/item~Item items} that are in this range and returns\n\t * them.\n\t *\n\t * This method uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range and `ignoreElementEnd` option\n\t * set to `true`. However it returns only {@link module:engine/model/item~Item model items},\n\t * not {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/model/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @method getItems\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t * @returns {Iterable.}\n\t */\n\t*getItems( options = {} ) {\n\t\toptions.boundaries = this;\n\t\toptions.ignoreElementEnd = true;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tfor ( let value of treeWalker ) {\n\t\t\tyield value.item;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/position~Position positions} that are boundaries or\n\t * contained in this range.\n\t *\n\t * This method uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range. However it returns only\n\t * {@link module:engine/model/position~Position positions}, not {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/model/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param {Object} options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t * @returns {Iterable.}\n\t */\n\t*getPositions( options = {} ) {\n\t\toptions.boundaries = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tyield treeWalker.position;\n\n\t\tfor ( let value of treeWalker ) {\n\t\t\tyield value.nextPosition;\n\t\t}\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by given `delta`.\n\t *\n\t * **Note:** transformation may break one range into multiple ranges (e.g. when a part of the range is\n\t * moved to a different part of document tree). For this reason, an array is returned by this method and it\n\t * may contain one or more `Range` instances.\n\t *\n\t * @param {module:engine/model/delta/delta~Delta} delta Delta to transform range by.\n\t * @returns {Array.} Range which is the result of transformation.\n\t */\n\tgetTransformedByDelta( delta ) {\n\t\tlet ranges = [ Range.createFromRange( this ) ];\n\n\t\t// Operation types that a range can be transformed by.\n\t\tconst supportedTypes = new Set( [ 'insert', 'move', 'remove', 'reinsert' ] );\n\n\t\tfor ( let operation of delta.operations ) {\n\t\t\tif ( supportedTypes.has( operation.type ) ) {\n\t\t\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\t\t\tconst result = ranges[ i ]._getTransformedByDocumentChange(\n\t\t\t\t\t\toperation.type,\n\t\t\t\t\t\tdelta.type,\n\t\t\t\t\t\toperation.targetPosition || operation.position,\n\t\t\t\t\t\toperation.howMany || operation.nodes.maxOffset,\n\t\t\t\t\t\toperation.sourcePosition\n\t\t\t\t\t);\n\n\t\t\t\t\tranges.splice( i, 1, ...result );\n\n\t\t\t\t\ti += result.length - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by multiple `deltas`.\n\t *\n\t * **Note:** transformation may break one range into multiple ranges (e.g. when a part of the range is\n\t * moved to a different part of document tree). For this reason, an array is returned by this method and it\n\t * may contain one or more `Range` instances.\n\t *\n\t * @param {Iterable.} deltas Deltas to transform the range by.\n\t * @returns {Array.} Range which is the result of transformation.\n\t */\n\tgetTransformedByDeltas( deltas ) {\n\t\tlet ranges = [ Range.createFromRange( this ) ];\n\n\t\tfor ( let delta of deltas ) {\n\t\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\t\tlet result = ranges[ i ].getTransformedByDelta( delta );\n\n\t\t\t\tranges.splice( i, 1, ...result );\n\t\t\t\ti += result.length - 1;\n\t\t\t}\n\t\t}\n\n\t\t// It may happen that a range is split into two, and then the part of second \"piece\" is moved into first\n\t\t// \"piece\". In this case we will have incorrect third rage, which should not be included in the result --\n\t\t// because it is already included in first \"piece\". In this loop we are looking for all such ranges that\n\t\t// are inside other ranges and we simply remove them.\n\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\tconst range = ranges[ i ];\n\n\t\t\tfor ( let j = i + 1; j < ranges.length; j++ ) {\n\t\t\t\tconst next = ranges[ j ];\n\n\t\t\t\tif ( range.containsRange( next ) || next.containsRange( range ) || range.isEqual( next ) ) {\n\t\t\t\t\tranges.splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by a change in the model document.\n\t *\n\t * @protected\n\t * @param {'insert'|'move'|'remove'|'reinsert'} type Change type.\n\t * @param {String} deltaType Type of delta that introduced the change.\n\t * @param {module:engine/model/position~Position} targetPosition Position before the first changed node.\n\t * @param {Number} howMany How many nodes has been changed.\n\t * @param {module:engine/model/position~Position} sourcePosition Source position of changes.\n\t * @returns {Array.}\n\t */\n\t_getTransformedByDocumentChange( type, deltaType, targetPosition, howMany, sourcePosition ) {\n\t\tif ( type == 'insert' ) {\n\t\t\treturn this._getTransformedByInsertion( targetPosition, howMany, false, false );\n\t\t} else {\n\t\t\tconst sourceRange = Range.createFromPositionAndShift( sourcePosition, howMany );\n\n\t\t\tif ( deltaType == 'merge' && this.isCollapsed && ( this.start.isEqual( sourceRange.start ) || this.start.isEqual( sourceRange.end ) ) ) {\n\t\t\t\t// Collapsed range is in merged element.\n\t\t\t\t// Without fix, the range would end up in the graveyard, together with removed element.\n\t\t\t\t//

foo

[]bar

->

foobar

[]

->

foobar

->

foo[]bar

\n\t\t\t\treturn [ new Range( targetPosition.getShiftedBy( this.start.offset ) ) ];\n\t\t\t} else if ( type == 'move' ) {\n\t\t\t\t// In all examples `[]` is `this` and `{}` is `sourceRange`, while `^` is move target position.\n\t\t\t\t//\n\t\t\t\t// Example:\n\t\t\t\t//

xx

^{

a[b

}

c]d

-->

xx

a[b

c]d

\n\t\t\t\t// ^

xx

{

a[b

}

c]d

-->

a[b

xx

c]d

// Note

xx

inclusion.\n\t\t\t\t// {

a[b

}
^

c]d

-->

a[b

c]d

\n\t\t\t\tif ( sourceRange.containsPosition( this.start ) && this.containsPosition( sourceRange.end ) && this.end.isAfter( targetPosition ) ) {\n\t\t\t\t\tlet start = this.start._getCombined( sourcePosition, targetPosition._getTransformedByDeletion( sourcePosition, howMany ) );\n\t\t\t\t\tconst end = this.end._getTransformedByMove( sourcePosition, targetPosition, howMany, false, false );\n\n\t\t\t\t\treturn [ new Range( start, end ) ];\n\t\t\t\t}\n\n\t\t\t\t// Example:\n\t\t\t\t//

c[d

{

a]b

}
^

xx

-->

c[d

a]b

xx

\n\t\t\t\t//

c[d

{

a]b

}

xx

^ -->

c[d

xx

a]b

// Note

xx

inclusion.\n\t\t\t\t//

c[d

^{

a]b

}
-->

c[d

a]b

\n\t\t\t\tif ( sourceRange.containsPosition( this.end ) && this.containsPosition( sourceRange.start ) && this.start.isBefore( targetPosition ) ) {\n\t\t\t\t\tconst start = this.start._getTransformedByMove( sourcePosition, targetPosition, howMany, true, false );\n\t\t\t\t\tlet end = this.end._getCombined( sourcePosition, targetPosition._getTransformedByDeletion( sourcePosition, howMany ) );\n\n\t\t\t\t\treturn [ new Range( start, end ) ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this._getTransformedByMove( sourcePosition, targetPosition, howMany );\n\t\t}\n\t}\n\n\t/**\n\t * Returns an array containing one or two {@link ~Range ranges} that are a result of transforming this\n\t * {@link ~Range range} by inserting `howMany` nodes at `insertPosition`. Two {@link ~Range ranges} are\n\t * returned if the insertion was inside this {@link ~Range range} and `spread` is set to `true`.\n\t *\n\t * Examples:\n\t *\n\t *\t\tlet range = new Range( new Position( root, [ 2, 7 ] ), new Position( root, [ 4, 0, 1 ] ) );\n\t *\t\tlet transformed = range._getTransformedByInsertion( new Position( root, [ 1 ] ), 2 );\n\t *\t\t// transformed array has one range from [ 4, 7 ] to [ 6, 0, 1 ]\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 4, 0, 0 ] ), 4 );\n\t *\t\t// transformed array has one range from [ 2, 7 ] to [ 4, 0, 5 ]\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 3, 2 ] ), 4 );\n\t *\t\t// transformed array has one range, which is equal to original range\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 3, 2 ] ), 4, true );\n\t *\t\t// transformed array has two ranges: from [ 2, 7 ] to [ 3, 2 ] and from [ 3, 6 ] to [ 4, 0, 1 ]\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 4, 0, 1 ] ), 4, false, false );\n\t *\t\t// transformed array has one range which is equal to original range because insertion is after the range boundary\n\t *\n\t *\t\ttransformed = range._getTransformedByInsertion( new Position( root, [ 4, 0, 1 ] ), 4, false, true );\n\t *\t\t// transformed array has one range: from [ 2, 7 ] to [ 4, 0, 5 ] because range was expanded\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} insertPosition Position where nodes are inserted.\n\t * @param {Number} howMany How many nodes are inserted.\n\t * @param {Boolean} [spread] Flag indicating whether this {~Range range} should be spread if insertion\n\t * was inside the range. Defaults to `false`.\n\t * @param {Boolean} [isSticky] Flag indicating whether insertion should expand a range if it is in a place of\n\t * range boundary. Defaults to `false`.\n\t * @returns {Array.} Result of the transformation.\n\t */\n\t_getTransformedByInsertion( insertPosition, howMany, spread = false, isSticky = false ) {\n\t\tif ( spread && this.containsPosition( insertPosition ) ) {\n\t\t\t// Range has to be spread. The first part is from original start to the spread point.\n\t\t\t// The other part is from spread point to the original end, but transformed by\n\t\t\t// insertion to reflect insertion changes.\n\n\t\t\treturn [\n\t\t\t\tnew Range( this.start, insertPosition ),\n\t\t\t\tnew Range(\n\t\t\t\t\tinsertPosition._getTransformedByInsertion( insertPosition, howMany, true ),\n\t\t\t\t\tthis.end._getTransformedByInsertion( insertPosition, howMany, this.isCollapsed )\n\t\t\t\t)\n\t\t\t];\n\t\t} else {\n\t\t\tconst range = Range.createFromRange( this );\n\n\t\t\tlet insertBeforeStart = range.isCollapsed ? true : !isSticky;\n\t\t\tlet insertBeforeEnd = range.isCollapsed ? true : isSticky;\n\n\t\t\trange.start = range.start._getTransformedByInsertion( insertPosition, howMany, insertBeforeStart );\n\t\t\trange.end = range.end._getTransformedByInsertion( insertPosition, howMany, insertBeforeEnd );\n\n\t\t\treturn [ range ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns an array containing {@link ~Range ranges} that are a result of transforming this\n\t * {@link ~Range range} by moving `howMany` nodes from `sourcePosition` to `targetPosition`.\n\t *\n\t * @protected\n\t * @param {module:engine/model/position~Position} sourcePosition Position from which nodes are moved.\n\t * @param {module:engine/model/position~Position} targetPosition Position to where nodes are moved.\n\t * @param {Number} howMany How many nodes are moved.\n\t * @returns {Array.} Result of the transformation.\n\t */\n\t_getTransformedByMove( sourcePosition, targetPosition, howMany ) {\n\t\tif ( this.isCollapsed ) {\n\t\t\tconst newPos = this.start._getTransformedByMove( sourcePosition, targetPosition, howMany, true, false );\n\n\t\t\treturn [ new Range( newPos ) ];\n\t\t}\n\n\t\tlet result;\n\n\t\tconst moveRange = new Range( sourcePosition, sourcePosition.getShiftedBy( howMany ) );\n\n\t\tconst differenceSet = this.getDifference( moveRange );\n\t\tlet difference = null;\n\n\t\tconst common = this.getIntersection( moveRange );\n\n\t\tif ( differenceSet.length == 1 ) {\n\t\t\t// `moveRange` and this range may intersect.\n\t\t\tdifference = new Range(\n\t\t\t\tdifferenceSet[ 0 ].start._getTransformedByDeletion( sourcePosition, howMany ),\n\t\t\t\tdifferenceSet[ 0 ].end._getTransformedByDeletion( sourcePosition, howMany )\n\t\t\t);\n\t\t} else if ( differenceSet.length == 2 ) {\n\t\t\t// `moveRange` is inside this range.\n\t\t\tdifference = new Range(\n\t\t\t\tthis.start,\n\t\t\t\tthis.end._getTransformedByDeletion( sourcePosition, howMany )\n\t\t\t);\n\t\t} // else, `moveRange` contains this range.\n\n\t\tconst insertPosition = targetPosition._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\tif ( difference ) {\n\t\t\tresult = difference._getTransformedByInsertion( insertPosition, howMany, common !== null );\n\t\t} else {\n\t\t\tresult = [];\n\t\t}\n\n\t\tif ( common ) {\n\t\t\tresult.push( new Range(\n\t\t\t\tcommon.start._getCombined( moveRange.start, insertPosition ),\n\t\t\t\tcommon.end._getCombined( moveRange.start, insertPosition )\n\t\t\t) );\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Creates a new range, spreading from specified {@link module:engine/model/position~Position position} to a position moved by\n\t * given `shift`. If `shift` is a negative value, shifted position is treated as the beginning of the range.\n\t *\n\t * @param {module:engine/model/position~Position} position Beginning of the range.\n\t * @param {Number} shift How long the range should be.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createFromPositionAndShift( position, shift ) {\n\t\tconst start = position;\n\t\tconst end = position.getShiftedBy( shift );\n\n\t\treturn shift > 0 ? new this( start, end ) : new this( end, start );\n\t}\n\n\t/**\n\t * Creates a range from given parents and offsets.\n\t *\n\t * @param {module:engine/model/element~Element} startElement Start position parent element.\n\t * @param {Number} startOffset Start position offset.\n\t * @param {module:engine/model/element~Element} endElement End position parent element.\n\t * @param {Number} endOffset End position offset.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createFromParentsAndOffsets( startElement, startOffset, endElement, endOffset ) {\n\t\treturn new this(\n\t\t\tPosition.createFromParentAndOffset( startElement, startOffset ),\n\t\t\tPosition.createFromParentAndOffset( endElement, endOffset )\n\t\t);\n\t}\n\n\t/**\n\t * Creates a new instance of `Range` which is equal to passed range.\n\t *\n\t * @param {module:engine/model/range~Range} range Range to clone.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createFromRange( range ) {\n\t\treturn new this( range.start, range.end );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/model/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @param {module:engine/model/element~Element} element Element which is a parent for the range.\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createIn( element ) {\n\t\treturn this.createFromParentsAndOffsets( element, 0, element, element.maxOffset );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/model/item~Item model item} and ends after it.\n\t *\n\t * @param {module:engine/model/item~Item} item\n\t * @returns {module:engine/model/range~Range}\n\t */\n\tstatic createOn( item ) {\n\t\treturn this.createFromPositionAndShift( Position.createBefore( item ), item.offsetSize );\n\t}\n\n\t/**\n\t * Combines all ranges from the passed array into a one range. At least one range has to be passed.\n\t * Passed ranges must not have common parts.\n\t *\n\t * The first range from the array is a reference range. If other ranges start or end on the exactly same position where\n\t * the reference range, they get combined into one range.\n\t *\n\t *\t\t[ ][] [ ][ ][ ][ ][] [ ] // Passed ranges, shown sorted\n\t *\t\t[ ] // The result of the function if the first range was a reference range.\n\t *\t [ ] // The result of the function if the third-to-seventh range was a reference range.\n\t *\t [ ] // The result of the function if the last range was a reference range.\n\t *\n\t * @param {Array.} ranges Ranges to combine.\n\t * @returns {module:engine/model/range~Range} Combined range.\n\t */\n\tstatic createFromRanges( ranges ) {\n\t\tif ( ranges.length === 0 ) {\n\t\t\t/**\n\t\t\t * At least one range has to be passed.\n\t\t\t *\n\t\t\t * @error range-create-from-ranges-empty-array\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'range-create-from-ranges-empty-array: At least one range has to be passed.' );\n\t\t} else if ( ranges.length == 1 ) {\n\t\t\treturn this.createFromRange( ranges[ 0 ] );\n\t\t}\n\n\t\t// 1. Set the first range in `ranges` array as a reference range.\n\t\t// If we are going to return just a one range, one of the ranges need to be the reference one.\n\t\t// Other ranges will be stuck to that range, if possible.\n\t\tconst ref = ranges[ 0 ];\n\n\t\t// 2. Sort all the ranges so it's easier to process them.\n\t\tranges.sort( ( a, b ) => a.start.isAfter( b.start ) );\n\n\t\t// 3. Check at which index the reference range is now.\n\t\tconst refIndex = ranges.indexOf( ref );\n\n\t\t// 4. At this moment we don't need the original range.\n\t\t// We are going to modify the result and we need to return a new instance of Range.\n\t\t// We have to create a copy of the reference range.\n\t\tconst result = new this( ref.start, ref.end );\n\n\t\t// 5. Ranges should be checked and glued starting from the range that is closest to the reference range.\n\t\t// Since ranges are sorted, start with the range with index that is closest to reference range index.\n\t\tfor ( let i = refIndex - 1; i >= 0; i++ ) {\n\t\t\tif ( ranges[ i ].end.isEqual( result.start ) ) {\n\t\t\t\tresult.start = Position.createFromPosition( ranges[ i ].start );\n\t\t\t} else {\n\t\t\t\t// If ranges are not starting/ending at the same position there is no point in looking further.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// 6. Ranges should be checked and glued starting from the range that is closest to the reference range.\n\t\t// Since ranges are sorted, start with the range with index that is closest to reference range index.\n\t\tfor ( let i = refIndex + 1; i < ranges.length; i++ ) {\n\t\t\tif ( ranges[ i ].start.isEqual( result.end ) ) {\n\t\t\t\tresult.end = Position.createFromPosition( ranges[ i ].end );\n\t\t\t} else {\n\t\t\t\t// If ranges are not starting/ending at the same position there is no point in looking further.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Creates a `Range` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param {Object} json Plain object to be converted to `Range`.\n\t * @param {module:engine/model/document~Document} doc Document object that will be range owner.\n\t * @returns {module:engine/model/element~Element} `Range` instance created using given plain object.\n\t */\n\tstatic fromJSON( json, doc ) {\n\t\treturn new this( Position.fromJSON( json.start, doc ), Position.fromJSON( json.end, doc ) );\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/range.js\n// module id = 2\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module core/plugin\n */\n\nimport ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\n\n/**\n * The base class for CKEditor plugin classes.\n *\n * @mixes module:utils/observablemixin~ObservaleMixin\n */\nexport default class Plugin {\n\t/**\n\t * Creates a new Plugin instance. This is the first step of a plugin initialization.\n\t * See also {@link #init} and {@link #afterInit}.\n\t *\n\t * A plugin is always instantiated after its {@link module:core/plugin~Plugin.requires dependencies} and the\n\t * {@link #init} and {@link #afterInit} methods are called in the same order.\n\t *\n\t * Usually, you'll want to put your plugin's initialization code in the {@link #init} method.\n\t * The constructor can be understood as \"before init\" and used in special cases, just like\n\t * {@link #afterInit} servers for the special \"after init\" scenarios (e.g. code which depends on other\n\t * plugins, but which doesn't {@link module:core/plugin~Plugin.requires explicitly require} them).\n\t *\n\t * @param {module:core/editor/editor~Editor} editor\n\t */\n\tconstructor( editor ) {\n\t\t/**\n\t\t * The editor instance.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:core/editor/editor~Editor} module:core/plugin~Plugin#editor\n\t\t */\n\t\tthis.editor = editor;\n\t}\n\n\t/**\n\t * An array of plugins required by this plugin.\n\t *\n\t * To keep a plugin class definition tight it's recommended to define this property as a static getter:\n\t *\n\t *\t\timport Image from './image.js';\n\t *\n\t *\t\texport default class ImageCaption extends Plugin {\n *\t\t\tstatic get requires() {\n *\t\t\t\treturn [ Image ];\n *\t\t\t}\n\t *\t\t}\n\t *\n\t * @static\n\t * @member {Array.|undefined} module:core/plugin~Plugin.requires\n\t */\n\n\t/**\n\t * Optional name of the plugin. If set, the plugin will be available in\n\t * {@link module:core/plugincollection~PluginCollection#get} by its\n\t * name and its constructor. If not, then only by its constructor.\n\t *\n\t * The name should reflect the package name + path to that module. E.g. `ckeditor5-image/src/image.js` plugin\n\t * should be named `image/image` (the `ckeditor5-` prefix is stripped during compilation).\n\t *\n\t * To keep a plugin class definition tight it's recommended to define this property as a static getter:\n\t *\n\t *\t\texport default class ImageCaption {\n *\t\t\tstatic get pluginName() {\n *\t\t\t\treturn 'image/imagecaption';\n *\t\t\t}\n\t *\t\t}\n\t *\n\t * @static\n\t * @member {String|undefined} module:core/plugin~Plugin.pluginName\n\t */\n\n\t/**\n\t * The second stage (after plugin {@link #constructor}) of plugin initialization.\n\t * Unlike the plugin constructor this method can perform asynchronous.\n\t *\n\t * A plugin's `init()` method is called after its {@link module:core/plugin~Plugin.requires dependencies} are initialized,\n\t * so in the same order as constructors of these plugins.\n\t *\n\t * @returns {null|Promise}\n\t */\n\tinit() {}\n\n\t/**\n\t * The third (and last) stage of plugin initialization. See also {@link #constructor} and {@link #init}.\n\t *\n\t * @returns {null|Promise}\n\t */\n\tafterInit() {}\n\n\t/**\n\t * Destroys the plugin.\n\t *\n\t * @returns {null|Promise}\n\t */\n\tdestroy() {}\n}\n\nmix( Plugin, ObservableMixin );\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-core/src/plugin.js\n// module id = 3\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/mix\n */\n\n/**\n * Copies enumerable properties and symbols from the objects given as 2nd+ parameters to the\n * prototype of first object (a constructor).\n *\n *\t\tclass Editor {\n *\t\t\t...\n *\t\t}\n *\n *\t\tconst SomeMixin = {\n *\t\t\ta() {\n *\t\t\t\treturn 'a';\n *\t\t\t}\n *\t\t};\n *\n *\t\tmix( Editor, SomeMixin, ... );\n *\n *\t\tnew Editor().a(); // -> 'a'\n *\n * Note: Properties which already exist in the base class will not be overriden.\n *\n * @param {Function} [baseClass] Class which prototype will be extended.\n * @param {Object} [...mixins] Objects from which to get properties.\n */\nexport default function mix( baseClass, ...mixins ) {\n\tmixins.forEach( ( mixin ) => {\n\t\tObject.getOwnPropertyNames( mixin ).concat( Object.getOwnPropertySymbols( mixin ) )\n\t\t\t.forEach( ( key ) => {\n\t\t\t\tif ( key in baseClass.prototype ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sourceDescriptor = Object.getOwnPropertyDescriptor( mixin, key );\n\t\t\t\tsourceDescriptor.enumerable = false;\n\n\t\t\t\tObject.defineProperty( baseClass.prototype, key, sourceDescriptor );\n\t\t\t} );\n\t} );\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/mix.js\n// module id = 4\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/element\n */\n\nimport Node from './node';\nimport NodeList from './nodelist';\nimport Text from './text';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\n\n/**\n * Model element. Type of {@link module:engine/model/node~Node node} that has a {@link module:engine/model/element~Element#name name} and\n * {@link module:engine/model/element~Element#getChildren child nodes}.\n *\n * **Important**: see {@link module:engine/model/node~Node} to read about restrictions using `Element` and `Node` API.\n */\nexport default class Element extends Node {\n\t/**\n\t * Creates a model element.\n\t *\n\t * @param {String} name Element's name.\n\t * @param {Object} [attrs] Element's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t * @param {module:engine/model/node~Node|Iterable.} [children]\n\t * One or more nodes to be inserted as children of created element.\n\t */\n\tconstructor( name, attrs, children ) {\n\t\tsuper( attrs );\n\n\t\t/**\n\t\t * Element name.\n\t\t *\n\t\t * @member {String} module:engine/model/element~Element#name\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * List of children nodes.\n\t\t *\n\t\t * @private\n\t\t * @member {module:engine/model/nodelist~NodeList} module:engine/model/element~Element#_children\n\t\t */\n\t\tthis._children = new NodeList();\n\n\t\tif ( children ) {\n\t\t\tthis.insertChildren( 0, children );\n\t\t}\n\t}\n\n\t/**\n\t * Number of this element's children.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget childCount() {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Sum of {module:engine/model/node~Node#offsetSize offset sizes} of all of this element's children.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget maxOffset() {\n\t\treturn this._children.maxOffset;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this element, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isEmpty() {\n\t\treturn this.childCount === 0;\n\t}\n\n\t/**\n\t * Checks whether given model tree object is of given type.\n\t *\n\t *\t\tobj.name; // 'listItem'\n\t *\t\tobj instanceof Element; // true\n\t *\n\t *\t\tobj.is( 'element' ); // true\n\t *\t\tobj.is( 'listItem' ); // true\n\t *\t\tobj.is( 'element', 'listItem' ); // true\n\t *\t\tobj.is( 'text' ); // false\n\t *\t\tobj.is( 'element', 'image' ); // false\n\t *\n\t * Read more in {@link module:engine/model/node~Node#is}.\n\t *\n\t * @param {String} type Type to check when `name` parameter is present.\n\t * Otherwise, it acts like the `name` parameter.\n\t * @param {String} [name] Element name.\n\t * @returns {Boolean}\n\t */\n\tis( type, name = null ) {\n\t\tif ( !name ) {\n\t\t\treturn type == 'element' || type == this.name;\n\t\t} else {\n\t\t\treturn type == 'element' && name == this.name;\n\t\t}\n\t}\n\n\t/**\n\t * Gets the child at the given index.\n\t *\n\t * @param {Number} index Index of child.\n\t * @returns {module:engine/model/node~Node} Child node.\n\t */\n\tgetChild( index ) {\n\t\treturn this._children.getNode( index );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all of this element's children.\n\t *\n\t * @returns {Iterable.}\n\t */\n\tgetChildren() {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns an index of the given child node. Returns `null` if given node is not a child of this element.\n\t *\n\t * @param {module:engine/model/node~Node} node Child node to look for.\n\t * @returns {Number} Child node's index in this element.\n\t */\n\tgetChildIndex( node ) {\n\t\treturn this._children.getNodeIndex( node );\n\t}\n\n\t/**\n\t * Returns the starting offset of given child. Starting offset is equal to the sum of\n\t * {module:engine/model/node~Node#offsetSize offset sizes} of all node's siblings that are before it. Returns `null` if\n\t * given node is not a child of this element.\n\t *\n\t * @param {module:engine/model/node~Node} node Child node to look for.\n\t * @returns {Number} Child node's starting offset.\n\t */\n\tgetChildStartOffset( node ) {\n\t\treturn this._children.getNodeStartOffset( node );\n\t}\n\n\t/**\n\t * Creates a copy of this element and returns it. Created element has same name and attributes as original element.\n\t * If clone is not deep, children of copied element are references to the same nodes as in original element.\n\t * If clone is deep, original element's children are also cloned.\n\t *\n\t * @param {Boolean} [deep=false] Decides whether children of this element should also be cloned (`true`) or not (`false`).\n\t */\n\tclone( deep = false ) {\n\t\tconst children = deep ?\n\t\t\tArray.from( this._children ).map( ( node ) => node.clone() ) :\n\t\t\tArray.from( this._children );\n\n\t\treturn new Element( this.name, this.getAttributes(), children );\n\t}\n\n\t/**\n\t * Returns index of a node that occupies given offset. If given offset is too low, returns `0`. If given offset is\n\t * too high, returns {@link module:engine/model/element~Element#getChildIndex index after last child}.\n\t *\n\t *\t\tconst textNode = new Text( 'foo' );\n\t *\t\tconst pElement = new Element( 'p' );\n\t *\t\tconst divElement = new Element( [ textNode, pElement ] );\n\t *\t\tdivElement.offsetToIndex( -1 ); // Returns 0, because offset is too low.\n\t *\t\tdivElement.offsetToIndex( 0 ); // Returns 0, because offset 0 is taken by `textNode` which is at index 0.\n\t *\t\tdivElement.offsetToIndex( 1 ); // Returns 0, because `textNode` has `offsetSize` equal to 3, so it occupies offset 1 too.\n\t *\t\tdivElement.offsetToIndex( 2 ); // Returns 0.\n\t *\t\tdivElement.offsetToIndex( 3 ); // Returns 1.\n\t *\t\tdivElement.offsetToIndex( 4 ); // Returns 2. There are no nodes at offset 4, so last available index is returned.\n\t *\n\t * @param {Number} offset Offset to look for.\n\t * @returns {Number}\n\t */\n\toffsetToIndex( offset ) {\n\t\treturn this._children.offsetToIndex( offset );\n\t}\n\n\t/**\n\t * {@link module:engine/model/element~Element#insertChildren Inserts} one or more nodes at the end of this element.\n\t *\n\t * @param {module:engine/model/node~Node|Iterable.} nodes Nodes to be inserted.\n\t */\n\tappendChildren( nodes ) {\n\t\tthis.insertChildren( this.childCount, nodes );\n\t}\n\n\t/**\n\t * Inserts one or more nodes at the given index and sets {@link module:engine/model/node~Node#parent parent} of these nodes\n\t * to this element.\n\t *\n\t * @param {Number} index Index at which nodes should be inserted.\n\t * @param {module:engine/model/node~Node|Iterable.} nodes Nodes to be inserted.\n\t */\n\tinsertChildren( index, nodes ) {\n\t\tnodes = normalize( nodes );\n\n\t\tfor ( let node of nodes ) {\n\t\t\tnode.parent = this;\n\t\t}\n\n\t\tthis._children.insertNodes( index, nodes );\n\t}\n\n\t/**\n\t * Removes one or more nodes starting at the given index and sets\n\t * {@link module:engine/model/node~Node#parent parent} of these nodes to `null`.\n\t *\n\t * @param {Number} index Index of the first node to remove.\n\t * @param {Number} [howMany=1] Number of nodes to remove.\n\t * @returns {Array.} Array containing removed nodes.\n\t */\n\tremoveChildren( index, howMany = 1 ) {\n\t\tconst nodes = this._children.removeNodes( index, howMany );\n\n\t\tfor ( let node of nodes ) {\n\t\t\tnode.parent = null;\n\t\t}\n\n\t\treturn nodes;\n\t}\n\n\t/**\n\t * Returns a descendant node by its path relative to this element.\n\t *\n\t *\t\t// ac\n\t *\t\tthis.getNodeByPath( [ 0 ] ); // -> \"a\"\n\t *\t\tthis.getNodeByPath( [ 1 ] ); // -> \n\t *\t\tthis.getNodeByPath( [ 1, 0 ] ); // -> \"c\"\n\t *\n\t * @param {Array.} relativePath Path of the node to find, relative to this element.\n\t * @returns {module:engine/model/node~Node}\n\t */\n\tgetNodeByPath( relativePath ) {\n\t\tlet node = this;\n\n\t\tfor ( const index of relativePath ) {\n\t\t\tnode = node.getChild( index );\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Converts `Element` instance to plain object and returns it. Takes care of converting all of this element's children.\n\t *\n\t * @returns {Object} `Element` instance converted to plain object.\n\t */\n\ttoJSON() {\n\t\tlet json = super.toJSON();\n\n\t\tjson.name = this.name;\n\n\t\tif ( this._children.length > 0 ) {\n\t\t\tjson.children = [];\n\n\t\t\tfor ( let node of this._children ) {\n\t\t\t\tjson.children.push( node.toJSON() );\n\t\t\t}\n\t\t}\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates an `Element` instance from given plain object (i.e. parsed JSON string).\n\t * Converts `Element` children to proper nodes.\n\t *\n\t * @param {Object} json Plain object to be converted to `Element`.\n\t * @returns {module:engine/model/element~Element} `Element` instance created using given plain object.\n\t */\n\tstatic fromJSON( json ) {\n\t\tlet children = null;\n\n\t\tif ( json.children ) {\n\t\t\tchildren = [];\n\n\t\t\tfor ( let child of json.children ) {\n\t\t\t\tif ( child.name ) {\n\t\t\t\t\t// If child has name property, it is an Element.\n\t\t\t\t\tchildren.push( Element.fromJSON( child ) );\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, it is a Text node.\n\t\t\t\t\tchildren.push( Text.fromJSON( child ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new Element( json.name, json.attributes, children );\n\t}\n}\n\n// Converts strings to Text and non-iterables to arrays.\n//\n// @param {String|module:engine/model/node~Node|Iterable.}\n// @return {Iterable.}\nfunction normalize( nodes ) {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes ).map( ( node ) => typeof node == 'string' ? new Text( node ) : node );\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/element.js\n// module id = 5\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module ui/template\n */\n\n/* global document */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\nimport EmitterMixin from '@ckeditor/ckeditor5-utils/src/emittermixin';\nimport Collection from '@ckeditor/ckeditor5-utils/src/collection';\nimport View from './view';\nimport ViewCollection from './viewcollection';\nimport cloneDeepWith from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeepWith';\nimport isObject from '@ckeditor/ckeditor5-utils/src/lib/lodash/isObject';\nimport log from '@ckeditor/ckeditor5-utils/src/log';\n\nconst xhtmlNs = 'http://www.w3.org/1999/xhtml';\n\n/**\n * A basic Template class. It renders DOM HTMLElement or Text from {@link module:ui/template~TemplateDefinition} and supports\n * element attributes, children, bindings to {@link module:utils/observablemixin~ObservableMixin} instances and DOM events\n * propagation. For example:\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tattributes: {\n *\t\t\t\tclass: 'foo',\n *\t\t\t\tstyle: {\n *\t\t\t\t\tbackgroundColor: 'yellow'\n *\t\t\t\t}\n *\t\t\t},\n *\t\t\tchildren: [\n *\t\t\t\t'A paragraph.'\n *\t\t\t]\n *\t\t} ).render();\n *\n * will render the following HTMLElement:\n *\n *\t\t

A paragraph.

\n *\n * See {@link module:ui/template~TemplateDefinition} to know more about templates and complex template definitions.\n *\n* @mixes module:utils/emittermixin~EmitterMixin\n */\nexport default class Template {\n\t/**\n\t * Creates an instance of the {@link ~Template} class.\n\t *\n\t * @param {module:ui/template~TemplateDefinition} def The definition of the template.\n\t */\n\tconstructor( def ) {\n\t\tObject.assign( this, normalize( clone( def ) ) );\n\n\t\t/**\n\t\t * Indicates whether this particular Template instance has been\n\t\t * {@link #render rendered}.\n\t\t *\n\t\t * @readonly\n\t\t * @protected\n\t\t * @member {Boolean}\n\t\t */\n\t\tthis._isRendered = false;\n\n\t\t/**\n\t\t * Tag of this template, i.e. `div`, indicating that the instance will render\n\t\t * to an HTMLElement.\n\t\t *\n\t\t * @member {String} #tag\n\t\t */\n\n\t\t/**\n\t\t * Text of this template, indicating that the instance will render to a DOM Text.\n\t\t *\n\t\t * @member {Array.} #text\n\t\t */\n\n\t\t/**\n\t\t * Attributes of this template, i.e. `{ id: [ 'ck-id' ] }`, corresponding with\n\t\t * HTML attributes on HTMLElement.\n\t\t *\n\t\t * Note: Only when {@link #tag} is defined.\n\t\t *\n\t\t * @member {Object} #attributes\n\t\t */\n\n\t\t/**\n\t\t * Children of this template; sub–templates. Each one is an independent\n\t\t * instance of {@link ~Template}.\n\t\t *\n\t\t * Note: Only when {@link #tag} is defined.\n\t\t *\n\t\t * @member {module:utils/collection~Collection.} #children\n\t\t */\n\n\t\t/**\n\t\t * DOM event listeners of this template.\n\t\t *\n\t\t * @member {Object} #eventListeners\n\t\t */\n\n\t\t/**\n\t\t * Data used by {@link #revert} method to restore a node\n\t\t * to its original state.\n\t\t *\n\t\t * See: {@link #apply}.\n\t\t *\n\t\t * @readonly\n\t\t * @protected\n\t\t * @member {module:ui/template~RenderData}\n\t\t */\n\t\tthis._revertData = null;\n\t}\n\n\t/**\n\t * Renders a DOM Node (`HTMLElement` or `Text`) out of the template.\n\t *\n\t * @see #apply\n\t *\n\t * @returns {HTMLElement|Text}\n\t */\n\trender() {\n\t\tconst node = this._renderNode( {\n\t\t\tintoFragment: true\n\t\t} );\n\n\t\tthis._isRendered = true;\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Applies the template to an existing DOM Node, either `HTMLElement` or `Text`.\n\t *\n\t * **Note:** No new DOM nodes (HTMLElement or Text) will be created. Applying extends attributes\n\t * ({@link module:ui/template~TemplateDefinition attributes}) and listeners ({@link module:ui/template~TemplateDefinition on}) only.\n\t *\n\t * **Note:** Existing \"class\" and \"style\" attributes are extended when a template\n\t * is applied to a Node, while other attributes and `textContent` are overridden.\n\t *\n\t * **Note:** The process of applying a template can be easily reverted using\n\t * {@link module:ui/template~Template#revert} method.\n\t *\n\t *\t\tconst element = document.createElement( 'div' );\n\t *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n\t *\n\t *\t\tnew Template( {\n\t *\t\t\tattrs: {\n\t *\t\t\t\tid: 'first-div',\n\t *\t\t\t\tclass: bind.to( 'divClass' )\n\t *\t\t\t},\n\t *\t\t\ton: {\n\t *\t\t\t\tclick: bind( 'elementClicked' ) // Will be fired by the observableInstance.\n\t *\t\t\t}\n\t *\t\t\tchildren: [\n\t *\t\t\t\t'Div text.'\n\t *\t\t\t]\n\t *\t\t} ).apply( element );\n\t *\n\t *\t\telement.outerHTML == \"
Div text.
\"\n\t *\n\t * @see module:ui/template~Template#render\n\t * @see module:ui/template~Template#revert\n\t * @param {Node} node Root node for the template to apply.\n\t */\n\tapply( node ) {\n\t\tthis._revertData = getEmptyRevertData();\n\n\t\tthis._renderNode( {\n\t\t\tnode: node,\n\t\t\tisApplying: true,\n\t\t\trevertData: this._revertData\n\t\t} );\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Reverts a template {@link module:ui/template~Template#apply applied} to a DOM Node.\n\t *\n\t * @param {Node} node Root node for the template to revert. In most cases, it's the same node\n\t * that {@link module:ui/template~Template#apply} has used.\n\t */\n\trevert( node ) {\n\t\tif ( !this._revertData ) {\n\t\t\t/**\n\t\t\t * Attempting reverting a template which has not been applied yet.\n\t\t\t *\n\t\t\t * @error ui-template-revert-not-applied\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-template-revert-not-applied: Attempting reverting a template which has not been applied yet.' );\n\t\t}\n\n\t\tthis._revertTemplateFromNode( node, this._revertData );\n\t}\n\n\t/**\n\t * An entry point to the interface which allows binding DOM nodes to {@link module:utils/observablemixin~ObservableMixin}.\n\t * There are two types of bindings:\n\t *\n\t * * `HTMLElement` attributes or Text Node `textContent` can be synchronized with {@link module:utils/observablemixin~ObservableMixin}\n\t * instance attributes. See {@link module:ui/template~BindChain#to} and {@link module:ui/template~BindChain#if}.\n\t *\n\t * * DOM events fired on `HTMLElement` can be propagated through {@link module:utils/observablemixin~ObservableMixin}.\n\t * See {@link module:ui/template~BindChain#to}.\n\t *\n\t * @param {module:utils/observablemixin~ObservableMixin} observable An instance of ObservableMixin class.\n\t * @param {module:utils/emittermixin~EmitterMixin} emitter An instance of `Emitter` class. It listens\n\t * to `observable` attribute changes and DOM Events, depending on the binding. Usually {@link module:ui/view~View} instance.\n\t * @returns {module:ui/template~BindChain}\n\t */\n\tstatic bind( observable, emitter ) {\n\t\treturn {\n\t\t\tto( eventNameOrFunctionOrAttribute, callback ) {\n\t\t\t\treturn new TemplateToBinding( {\n\t\t\t\t\teventNameOrFunction: eventNameOrFunctionOrAttribute,\n\t\t\t\t\tattribute: eventNameOrFunctionOrAttribute,\n\t\t\t\t\tobservable, emitter, callback\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tif( attribute, valueIfTrue, callback ) {\n\t\t\t\treturn new TemplateIfBinding( {\n\t\t\t\t\tobservable, emitter, attribute, valueIfTrue, callback\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Extends {@link module:ui/template~Template} instance with additional content from {@link module:ui/template~TemplateDefinition}.\n\t *\n\t *\t\tconst bind = Template.bind( observable, emitterInstance );\n\t *\t\tconst instance = new Template( {\n\t *\t\t\ttag: 'p',\n\t *\t\t\tattributes: {\n\t *\t\t\t\tclass: 'a',\n\t *\t\t\t\tdata-x: bind.to( 'foo' )\n\t *\t\t\t},\n\t *\t\t\tchildren: [\n\t *\t\t\t\t{\n\t *\t\t\t\t\ttag: 'span',\n\t *\t\t\t\t\tattributes: {\n\t *\t\t\t\t\t\tclass: 'b'\n\t *\t\t\t\t\t},\n\t *\t\t\t\t\tchildren: [\n\t *\t\t\t\t\t\t'Span'\n\t *\t\t\t\t\t]\n\t *\t\t\t\t}\n\t *\t\t\t]\n\t *\t\t } );\n\t *\n\t *\t\t// Instance-level extension.\n\t *\t\tTemplate.extend( instance, {\n\t *\t\t\tattributes: {\n\t *\t\t\t\tclass: 'b',\n\t *\t\t\t\tdata-x: bind.to( 'bar' )\n\t *\t\t\t},\n\t *\t\t\tchildren: [\n\t *\t\t\t\t{\n\t *\t\t\t\t\tattributes: {\n\t *\t\t\t\t\t\tclass: 'c'\n\t *\t\t\t\t\t}\n\t *\t\t\t\t}\n\t *\t\t\t]\n\t *\t\t} );\n\t *\n\t *\t\t// Child extension.\n\t *\t\tTemplate.extend( instance.children.get( 0 ), {\n\t *\t\t\tattributes: {\n\t *\t\t\t\tclass: 'd'\n\t *\t\t\t}\n\t *\t\t} );\n\t *\n\t * the `instance.render().outerHTML` is\n\t *\n\t *\t\t

\n\t *\t\t\tSpan\n\t *\t\t

\n\t *\n\t * @param {module:ui/template~Template} template Existing Template instance to be extended.\n\t * @param {module:ui/template~TemplateDefinition} def An extension to existing an template instance.\n\t */\n\tstatic extend( template, def ) {\n\t\tif ( template._isRendered ) {\n\t\t\t/**\n\t\t\t * Extending a template after rendering may not work as expected. To make sure\n\t\t\t * the {@link #extend extending} works for the rendered element, perform it\n\t\t\t * before {@link #render} is called.\n\t\t\t *\n\t\t\t * @error template-extend-render\n\t\t\t */\n\t\t\tlog.warn( 'template-extend-render: Attempting to extend a template which has already been rendered.' );\n\t\t}\n\n\t\textendTemplate( template, normalize( clone( def ) ) );\n\t}\n\n\t/**\n\t * Renders a DOM Node (either `HTMLElement` or `Text`) out of the template.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderNode( data ) {\n\t\tlet isInvalid;\n\n\t\tif ( data.node ) {\n\t\t\t// When applying, a definition cannot have \"tag\" and \"text\" at the same time.\n\t\t\tisInvalid = this.tag && this.text;\n\t\t} else {\n\t\t\t// When rendering, a definition must have either \"tag\" or \"text\": XOR( this.tag, this.text ).\n\t\t\tisInvalid = this.tag ? this.text : !this.text;\n\t\t}\n\n\t\tif ( isInvalid ) {\n\t\t\t/**\n\t\t\t * Node definition cannot have \"tag\" and \"text\" properties at the same time.\n\t\t\t * Node definition must have either \"tag\" or \"text\" when rendering new Node.\n\t\t\t *\n\t\t\t * @error ui-template-wrong-syntax\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-template-wrong-syntax: Node definition must have either \"tag\" or \"text\" when rendering new Node.' );\n\t\t}\n\n\t\tif ( this.text ) {\n\t\t\treturn this._renderText( data );\n\t\t} else {\n\t\t\treturn this._renderElement( data );\n\t\t}\n\t}\n\n\t/**\n\t * Renders an `HTMLElement` out of the template.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderElement( data ) {\n\t\tlet node = data.node;\n\n\t\tif ( !node ) {\n\t\t\tnode = data.node = document.createElementNS( this.ns || xhtmlNs, this.tag );\n\t\t}\n\n\t\tthis._renderAttributes( data );\n\t\tthis._renderElementChildren( data );\n\t\tthis._setUpListeners( data );\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Renders a `Text` node out of {@link module:ui/template~Template#text}.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderText( data ) {\n\t\tlet node = data.node;\n\n\t\t// Save the original textContent to revert it in #revert().\n\t\tif ( node ) {\n\t\t\tdata.revertData.text = node.textContent;\n\t\t} else {\n\t\t\tnode = data.node = document.createTextNode( '' );\n\t\t}\n\n\t\t// Check if this Text Node is bound to Observable. Cases:\n\t\t//\n\t\t//\t\ttext: [ Template.bind( ... ).to( ... ) ]\n\t\t//\n\t\t//\t\ttext: [\n\t\t//\t\t\t'foo',\n\t\t//\t\t\tTemplate.bind( ... ).to( ... ),\n\t\t//\t\t\t...\n\t\t//\t\t]\n\t\t//\n\t\tif ( hasTemplateBinding( this.text ) ) {\n\t\t\tthis._bindToObservable( {\n\t\t\t\tschema: this.text,\n\t\t\t\tupdater: getTextUpdater( node ),\n\t\t\t\tdata\n\t\t\t} );\n\t\t}\n\t\t// Simply set text. Cases:\n\t\t//\n\t\t//\t\ttext: [ 'all', 'are', 'static' ]\n\t\t//\n\t\t//\t\ttext: [ 'foo' ]\n\t\t//\n\t\telse {\n\t\t\tnode.textContent = this.text.join( '' );\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Renders an `HTMLElement` attributes out of {@link module:ui/template~Template#attributes}.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderAttributes( data ) {\n\t\tlet attrName, attrValue, domAttrValue, attrNs;\n\n\t\tif ( !this.attributes ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst node = data.node;\n\t\tconst revertData = data.revertData;\n\n\t\tfor ( attrName in this.attributes ) {\n\t\t\t// Current attribute value in DOM.\n\t\t\tdomAttrValue = node.getAttribute( attrName );\n\n\t\t\t// The value to be set.\n\t\t\tattrValue = this.attributes[ attrName ];\n\n\t\t\t// Save revert data.\n\t\t\tif ( revertData ) {\n\t\t\t\trevertData.attributes[ attrName ] = domAttrValue;\n\t\t\t}\n\n\t\t\t// Detect custom namespace:\n\t\t\t//\n\t\t\t//\t\tclass: {\n\t\t\t//\t\t\tns: 'abc',\n\t\t\t//\t\t\tvalue: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tattrNs = ( isObject( attrValue[ 0 ] ) && attrValue[ 0 ].ns ) ? attrValue[ 0 ].ns : null;\n\n\t\t\t// Activate binding if one is found. Cases:\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\tTemplate.bind( ... ).to( ... )\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t'bar',\n\t\t\t//\t\t\tTemplate.bind( ... ).to( ... ),\n\t\t\t//\t\t\t'baz'\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\t//\t\tclass: {\n\t\t\t//\t\t\tns: 'abc',\n\t\t\t//\t\t\tvalue: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tif ( hasTemplateBinding( attrValue ) ) {\n\t\t\t\t// Normalize attributes with additional data like namespace:\n\t\t\t\t//\n\t\t\t\t//\t\tclass: {\n\t\t\t\t//\t\t\tns: 'abc',\n\t\t\t\t//\t\t\tvalue: [ ... ]\n\t\t\t\t//\t\t}\n\t\t\t\t//\n\t\t\t\tconst valueToBind = attrNs ? attrValue[ 0 ].value : attrValue;\n\n\t\t\t\t// Extend the original value of attributes like \"style\" and \"class\",\n\t\t\t\t// don't override them.\n\t\t\t\tif ( revertData && shouldExtend( attrName ) ) {\n\t\t\t\t\tvalueToBind.unshift( domAttrValue );\n\t\t\t\t}\n\n\t\t\t\tthis._bindToObservable( {\n\t\t\t\t\tschema: valueToBind,\n\t\t\t\t\tupdater: getAttributeUpdater( node, attrName, attrNs ),\n\t\t\t\t\tdata\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Style attribute could be an Object so it needs to be parsed in a specific way.\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\twidth: '100px',\n\t\t\t//\t\t\theight: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\telse if ( attrName == 'style' && typeof attrValue[ 0 ] !== 'string' ) {\n\t\t\t\tthis._renderStyleAttribute( attrValue[ 0 ], data );\n\t\t\t}\n\n\t\t\t// Otherwise simply set the static attribute:\n\t\t\t//\n\t\t\t//\t\tclass: [ 'foo' ]\n\t\t\t//\n\t\t\t//\t\tclass: [ 'all', 'are', 'static' ]\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t{\n\t\t\t//\t\t\t\tns: 'abc',\n\t\t\t//\t\t\t\tvalue: [ 'foo' ]\n\t\t\t//\t\t\t}\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\telse {\n\t\t\t\t// Extend the original value of attributes like \"style\" and \"class\",\n\t\t\t\t// don't override them.\n\t\t\t\tif ( revertData && domAttrValue && shouldExtend( attrName ) ) {\n\t\t\t\t\tattrValue.unshift( domAttrValue );\n\t\t\t\t}\n\n\t\t\t\tattrValue = attrValue\n\t\t\t\t\t// Retrieve \"values\" from:\n\t\t\t\t\t//\n\t\t\t\t\t//\t\tclass: [\n\t\t\t\t\t//\t\t\t{\n\t\t\t\t\t//\t\t\t\tns: 'abc',\n\t\t\t\t\t//\t\t\t\tvalue: [ ... ]\n\t\t\t\t\t//\t\t\t}\n\t\t\t\t\t//\t\t]\n\t\t\t\t\t//\n\t\t\t\t\t.map( val => val ? ( val.value || val ) : val )\n\t\t\t\t\t// Flatten the array.\n\t\t\t\t\t.reduce( ( prev, next ) => prev.concat( next ), [] )\n\t\t\t\t\t// Convert into string.\n\t\t\t\t\t.reduce( arrayValueReducer, '' );\n\n\t\t\t\tif ( !isFalsy( attrValue ) ) {\n\t\t\t\t\tnode.setAttributeNS( attrNs, attrName, attrValue );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Renders `style` attribute of an `HTMLElement` based on {@link module:ui/template~Template#attributes}.\n\t *\n\t * Style attribute is an {Object} with static values:\n\t *\n\t *\t\tattributes: {\n\t *\t\t\tstyle: {\n\t *\t\t\t\tcolor: 'red'\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t * or values bound to {@link module:ui/model~Model} properties:\n\t *\n\t *\t\tattributes: {\n\t *\t\t\tstyle: {\n\t *\t\t\t\tcolor: bind.to( ... )\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t * Note: `style` attribute is rendered without setting the namespace. It does not seem to be\n\t * needed.\n\t *\n\t * @private\n\t * @param {Object} styles Styles located in `attributes.style` of {@link module:ui/template~TemplateDefinition}.\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderStyleAttribute( styles, data ) {\n\t\tconst node = data.node;\n\n\t\tfor ( let styleName in styles ) {\n\t\t\tconst styleValue = styles[ styleName ];\n\n\t\t\t// Cases:\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\tcolor: bind.to( 'attribute' )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tif ( hasTemplateBinding( styleValue ) ) {\n\t\t\t\tthis._bindToObservable( {\n\t\t\t\t\tschema: [ styleValue ],\n\t\t\t\t\tupdater: getStyleUpdater( node, styleName ),\n\t\t\t\t\tdata\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Cases:\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\tcolor: 'red'\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\telse {\n\t\t\t\tnode.style[ styleName ] = styleValue;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Recursively renders `HTMLElement` children from {@link module:ui/template~Template#children}.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_renderElementChildren( data ) {\n\t\tconst node = data.node;\n\t\tconst container = data.intoFragment ? document.createDocumentFragment() : node;\n\t\tconst isApplying = data.isApplying;\n\t\tlet childIndex = 0;\n\n\t\tfor ( let child of this.children ) {\n\t\t\tif ( isViewCollection( child ) ) {\n\t\t\t\tif ( !isApplying ) {\n\t\t\t\t\tchild.setParent( node );\n\n\t\t\t\t\tfor ( let view of child ) {\n\t\t\t\t\t\tcontainer.appendChild( view.element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( isView( child ) ) {\n\t\t\t\tif ( !isApplying ) {\n\t\t\t\t\tcontainer.appendChild( child.element );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( isApplying ) {\n\t\t\t\t\tconst revertData = data.revertData;\n\t\t\t\t\tconst childRevertData = getEmptyRevertData();\n\n\t\t\t\t\trevertData.children.push( childRevertData );\n\n\t\t\t\t\tchild._renderNode( {\n\t\t\t\t\t\tnode: container.childNodes[ childIndex++ ],\n\t\t\t\t\t\tisApplying: true,\n\t\t\t\t\t\trevertData: childRevertData\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tcontainer.appendChild( child.render() );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( data.intoFragment ) {\n\t\t\tnode.appendChild( container );\n\t\t}\n\t}\n\n\t/**\n\t * Activates `on` listeners in the {@link module:ui/template~TemplateDefinition}\n\t * on a passed `HTMLElement`.\n\t *\n\t * @protected\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t */\n\t_setUpListeners( data ) {\n\t\tif ( !this.eventListeners ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( let key in this.eventListeners ) {\n\t\t\tconst revertBindings = this.eventListeners[ key ].map( schemaItem => {\n\t\t\t\tconst [ domEvtName, domSelector ] = key.split( '@' );\n\n\t\t\t\treturn schemaItem.activateDomEventListener( domEvtName, domSelector, data );\n\t\t\t} );\n\n\t\t\tif ( data.revertData ) {\n\t\t\t\tdata.revertData.bindings.push( revertBindings );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * For given {@link module:ui/template~TemplateValueSchema} containing {@link module:ui/template~TemplateBinding} it activates the\n\t * binding and sets its initial value.\n\t *\n\t * Note: {@link module:ui/template~TemplateValueSchema} can be for HTMLElement attributes or Text Node `textContent`.\n\t *\n\t * @protected\n\t * @param {Object} options Binding options.\n\t * @param {module:ui/template~TemplateValueSchema} options.schema\n\t * @param {Function} options.updater A function which updates DOM (like attribute or text).\n\t * @param {module:ui/template~RenderData} options.data Rendering data.\n\t */\n\t_bindToObservable( { schema, updater, data } ) {\n\t\tconst revertData = data.revertData;\n\n\t\t// Set initial values.\n\t\tsyncValueSchemaValue( schema, updater, data );\n\n\t\tconst revertBindings = schema\n\t\t\t// Filter \"falsy\" (false, undefined, null, '') value schema components out.\n\t\t\t.filter( item => !isFalsy( item ) )\n\t\t\t// Filter inactive bindings from schema, like static strings ('foo'), numbers (42), etc.\n\t\t\t.filter( item => item.observable )\n\t\t\t// Once only the actual binding are left, let the emitter listen to observable change:attribute event.\n\t\t\t// TODO: Reduce the number of listeners attached as many bindings may listen\n\t\t\t// to the same observable attribute.\n\t\t\t.map( templateBinding => templateBinding.activateAttributeListener( schema, updater, data ) );\n\n\t\tif ( revertData ) {\n\t\t\trevertData.bindings.push( revertBindings );\n\t\t}\n\t}\n\n\t/**\n\t * Reverts {@link module:ui/template~RenderData#revertData template data} from a node to\n\t * return it to the the original state.\n\t *\n\t * @protected\n\t * @param {HTMLElement|Text} node A node to be reverted.\n\t * @param {module:ui/template~RenderData#revertData} revertData Stores information about\n\t * what changes have been made by {@link #apply} to the node.\n\t */\n\t_revertTemplateFromNode( node, revertData ) {\n\t\tfor ( let binding of revertData.bindings ) {\n\t\t\t// Each binding may consist of several observable+observable#attribute.\n\t\t\t// like the following has 2:\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t'x',\n\t\t\t//\t\t\tbind.to( 'foo' ),\n\t\t\t//\t\t\t'y',\n\t\t\t//\t\t\tbind.to( 'bar' )\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\tfor ( let revertBinding of binding ) {\n\t\t\t\trevertBinding();\n\t\t\t}\n\t\t}\n\n\t\tif ( revertData.text ) {\n\t\t\tnode.textContent = revertData.text;\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( let attrName in revertData.attributes ) {\n\t\t\tconst attrValue = revertData.attributes[ attrName ];\n\n\t\t\t// When the attribute has **not** been set before #apply().\n\t\t\tif ( attrValue === null ) {\n\t\t\t\tnode.removeAttribute( attrName );\n\t\t\t} else {\n\t\t\t\tnode.setAttribute( attrName, attrValue );\n\t\t\t}\n\t\t}\n\n\t\tfor ( let i = 0; i < revertData.children.length; ++i ) {\n\t\t\tthis._revertTemplateFromNode( node.childNodes[ i ], revertData.children[ i ] );\n\t\t}\n\t}\n}\n\nmix( Template, EmitterMixin );\n\n/**\n * Describes a binding created by {@link module:ui/template~Template.bind} interface.\n *\n * @protected\n */\nexport class TemplateBinding {\n\t/**\n\t * Creates an instance of the {@link module:ui/template~TemplateBinding} class.\n\t *\n\t * @param {module:ui/template~TemplateDefinition} def The definition of the binding.\n\t */\n\tconstructor( def ) {\n\t\tObject.assign( this, def );\n\n\t\t/**\n\t\t * An observable instance of the binding. It provides the attribute\n\t\t * with the value or passes the event when a corresponding DOM event is fired.\n\t\t *\n\t\t * @member {module:utils/observablemixin~ObservableMixin} module:ui/template~TemplateBinding#observable\n\t\t */\n\n\t\t/**\n\t\t * An {@link module:utils/emittermixin~EmitterMixin} instance used by the binding\n\t\t * to (either):\n\t\t *\n\t\t * * listen to the attribute change in the {@link module:ui/template~TemplateBinding#observable},\n\t\t * * listen to the event in the DOM.\n\t\t *\n\t\t * @member {module:utils/emittermixin~EmitterMixin} module:ui/template~TemplateBinding#emitter\n\t\t */\n\n\t\t/**\n\t\t * The name of the attribute of {@link module:ui/template~TemplateBinding#observable} which is observed.\n\t\t *\n\t\t * @member {String} module:ui/template~TemplateBinding#attribute\n\t\t */\n\n\t\t/**\n\t\t * A custom function to process the value of {@link module:ui/template~TemplateBinding#attribute}.\n\t\t *\n\t\t * @member {Function} [module:ui/template~TemplateBinding#callback]\n\t\t */\n\t}\n\n\t/**\n\t * Returns the value of the binding, which is the value of {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable}.\n\t *\n\t * @param {Node} [node] A native DOM node, passed to the custom {@link module:ui/template~TemplateBinding#callback}.\n\t * @returns {*} The value of {@link module:ui/template~TemplateBinding#attribute} in {@link module:ui/template~TemplateBinding#observable}.\n\t */\n\tgetValue( node ) {\n\t\tconst value = this.observable[ this.attribute ];\n\n\t\treturn this.callback ? this.callback( value, node ) : value;\n\t}\n\n\t/**\n\t * Activates the listener for the changes of {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable}, which then updates the DOM with the aggregated\n\t * value of {@link module:ui/template~TemplateValueSchema}.\n\t *\n\t * For instance, the `class` attribute of the `Template` element can be be bound to\n\t * the observable `foo` attribute in `ObservableMixin` instance.\n\t *\n\t * @param {module:ui/template~TemplateValueSchema} schema A full schema to generate an attribute or text in DOM.\n\t * @param {Function} updater A DOM updater function used to update native DOM attribute or text.\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t * @returns {Function} A function to sever the listener binding.\n\t */\n\tactivateAttributeListener( schema, updater, data ) {\n\t\tconst callback = () => syncValueSchemaValue( schema, updater, data );\n\n\t\tthis.emitter.listenTo( this.observable, 'change:' + this.attribute, callback );\n\n\t\t// Allows revert of the listener.\n\t\treturn () => {\n\t\t\tthis.emitter.stopListening( this.observable, 'change:' + this.attribute, callback );\n\t\t};\n\t}\n}\n\n/**\n * Describes either:\n *\n * * a binding to {@link module:utils/observablemixin~ObservableMixin}\n * * or a native DOM event binding\n *\n * created by {@link module:ui/template~BindChain#to} method.\n *\n * @protected\n */\nexport class TemplateToBinding extends TemplateBinding {\n\t/**\n\t * Activates the listener for the native DOM event, which when fired, is propagated by\n\t * the {@link module:ui/template~TemplateBinding#emitter}.\n\t *\n\t * @param {String} domEvtName A name of the native DOM event.\n\t * @param {String} domSelector A selector in DOM to filter delegated events.\n\t * @param {module:ui/template~RenderData} data Rendering data.\n\t * @returns {Function} A function to sever the listener binding.\n\t */\n\tactivateDomEventListener( domEvtName, domSelector, data ) {\n\t\tconst callback = ( evt, domEvt ) => {\n\t\t\tif ( !domSelector || domEvt.target.matches( domSelector ) ) {\n\t\t\t\tif ( typeof this.eventNameOrFunction == 'function' ) {\n\t\t\t\t\tthis.eventNameOrFunction( domEvt );\n\t\t\t\t} else {\n\t\t\t\t\tthis.observable.fire( this.eventNameOrFunction, domEvt );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.emitter.listenTo( data.node, domEvtName, callback );\n\n\t\t// Allows revert of the listener.\n\t\treturn () => {\n\t\t\tthis.emitter.stopListening( data.node, domEvtName, callback );\n\t\t};\n\t}\n}\n\n/**\n * Describes a binding to {@link module:utils/observablemixin~ObservableMixin} created by {@link module:ui/template~BindChain#if}\n * method.\n *\n * @protected\n */\nexport class TemplateIfBinding extends TemplateBinding {\n\t/**\n\t * @inheritDoc\n\t */\n\tgetValue( node ) {\n\t\tconst value = super.getValue( node );\n\n\t\treturn isFalsy( value ) ? false : ( this.valueIfTrue || true );\n\t}\n\n\t/**\n\t * The value of the DOM attribute/text to be set if the {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable} is `true`.\n\t *\n\t * @member {String} [module:ui/template~TemplateIfBinding#valueIfTrue]\n\t */\n}\n\n// Checks whether given {@link module:ui/template~TemplateValueSchema} contains a\n// {@link module:ui/template~TemplateBinding}.\n//\n// @param {module:ui/template~TemplateValueSchema} schema\n// @returns {Boolean}\nfunction hasTemplateBinding( schema ) {\n\tif ( !schema ) {\n\t\treturn false;\n\t}\n\n\t// Normalize attributes with additional data like namespace:\n\t//\n\t//\t\tclass: {\n\t//\t\t\tns: 'abc',\n\t//\t\t\tvalue: [ ... ]\n\t//\t\t}\n\t//\n\tif ( schema.value ) {\n\t\tschema = schema.value;\n\t}\n\n\tif ( Array.isArray( schema ) ) {\n\t\treturn schema.some( hasTemplateBinding );\n\t} else if ( schema instanceof TemplateBinding ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n// Assembles the value using {@link module:ui/template~TemplateValueSchema} and stores it in a form of\n// an Array. Each entry of an Array corresponds to one of {@link module:ui/template~TemplateValueSchema}\n// items.\n//\n// @param {module:ui/template~TemplateValueSchema} schema\n// @param {Node} node DOM Node updated when {@link module:utils/observablemixin~ObservableMixin} changes.\n// @return {Array}\nfunction getValueSchemaValue( schema, node ) {\n\treturn schema.map( schemaItem => {\n\t\t// Process {@link module:ui/template~TemplateBinding} bindings.\n\t\tif ( schemaItem instanceof TemplateBinding ) {\n\t\t\treturn schemaItem.getValue( node );\n\t\t}\n\n\t\t// All static values like strings, numbers, and \"falsy\" values (false, null, undefined, '', etc.) just pass.\n\t\treturn schemaItem;\n\t} );\n}\n\n// A function executed each time bound Observable attribute changes, which updates DOM with a value\n// constructed from {@link module:ui/template~TemplateValueSchema}.\n//\n// @param {module:ui/template~TemplateValueSchema} schema\n// @param {Function} updater A function which updates DOM (like attribute or text).\n// @param {Node} node DOM Node updated when {@link module:utils/observablemixin~ObservableMixin} changes.\nfunction syncValueSchemaValue( schema, updater, { node } ) {\n\tlet value = getValueSchemaValue( schema, node );\n\n\t// Check if schema is a single Template.bind.if, like:\n\t//\n\t//\t\tclass: Template.bind.if( 'foo' )\n\t//\n\tif ( schema.length == 1 && schema[ 0 ] instanceof TemplateIfBinding ) {\n\t\tvalue = value[ 0 ];\n\t} else {\n\t\tvalue = value.reduce( arrayValueReducer, '' );\n\t}\n\n\tif ( isFalsy( value ) ) {\n\t\tupdater.remove();\n\t} else {\n\t\tupdater.set( value );\n\t}\n}\n\n// Returns an object consisting of `set` and `remove` functions, which\n// can be used in the context of DOM Node to set or reset `textContent`.\n// @see module:ui/view~View#_bindToObservable\n//\n// @param {Node} node DOM Node to be modified.\n// @returns {Object}\nfunction getTextUpdater( node ) {\n\treturn {\n\t\tset( value ) {\n\t\t\tnode.textContent = value;\n\t\t},\n\n\t\tremove() {\n\t\t\tnode.textContent = '';\n\t\t}\n\t};\n}\n\n// Returns an object consisting of `set` and `remove` functions, which\n// can be used in the context of DOM Node to set or reset an attribute.\n// @see module:ui/view~View#_bindToObservable\n//\n// @param {Node} node DOM Node to be modified.\n// @param {String} attrName Name of the attribute to be modified.\n// @param {String} [ns=null] Namespace to use.\n// @returns {Object}\nfunction getAttributeUpdater( el, attrName, ns ) {\n\treturn {\n\t\tset( value ) {\n\t\t\tel.setAttributeNS( ns, attrName, value );\n\t\t},\n\n\t\tremove() {\n\t\t\tel.removeAttributeNS( ns, attrName );\n\t\t}\n\t};\n}\n\n// Returns an object consisting of `set` and `remove` functions, which\n// can be used in the context of CSSStyleDeclaration to set or remove a style.\n// @see module:ui/view~View#_bindToObservable\n//\n// @param {Node} node DOM Node to be modified.\n// @param {String} styleName Name of the style to be modified.\n// @returns {Object}\nfunction getStyleUpdater( el, styleName ) {\n\treturn {\n\t\tset( value ) {\n\t\t\tel.style[ styleName ] = value;\n\t\t},\n\n\t\tremove() {\n\t\t\tel.style[ styleName ] = null;\n\t\t}\n\t};\n}\n\n// Clones definition of the template.\n//\n// @param {module:ui/template~TemplateDefinition} def\n// @returns {module:ui/template~TemplateDefinition}\nfunction clone( def ) {\n\tconst clone = cloneDeepWith( def, value => {\n\t\t// Don't clone the `Template.bind`* bindings because of the references to Observable\n\t\t// and DomEmitterMixin instances inside, which would also be traversed and cloned by greedy\n\t\t// cloneDeepWith algorithm. There's no point in cloning Observable/DomEmitterMixins\n\t\t// along with the definition.\n\t\t//\n\t\t// Don't clone Template instances if provided as a child. They're simply #render()ed\n\t\t// and nothing should interfere.\n\t\t//\n\t\t// Also don't clone View instances if provided as a child of the Template. The template\n\t\t// instance will be extracted from the View during the normalization and there's no need\n\t\t// to clone it.\n\t\tif ( value && ( value instanceof TemplateBinding || isTemplate( value ) || isView( value ) || isViewCollection( value ) ) ) {\n\t\t\treturn value;\n\t\t}\n\t} );\n\n\treturn clone;\n}\n\n// Normalizes given {@link module:ui/template~TemplateDefinition}.\n//\n// See:\n// * {@link normalizeAttributes}\n// * {@link normalizeListeners}\n// * {@link normalizePlainTextDefinition}\n// * {@link normalizeTextDefinition}\n//\n// @param {module:ui/template~TemplateDefinition} def\n// @returns {module:ui/template~TemplateDefinition} Normalized definition.\nfunction normalize( def ) {\n\tif ( typeof def == 'string' ) {\n\t\tdef = normalizePlainTextDefinition( def );\n\t} else if ( def.text ) {\n\t\tnormalizeTextDefinition( def );\n\t}\n\n\tif ( def.on ) {\n\t\tdef.eventListeners = normalizeListeners( def.on );\n\n\t\t// Template mixes EmitterMixin, so delete #on to avoid collision.\n\t\tdelete def.on;\n\t}\n\n\tif ( !def.text ) {\n\t\tif ( def.attributes ) {\n\t\t\tnormalizeAttributes( def.attributes );\n\t\t}\n\n\t\tconst children = new Collection();\n\n\t\tif ( def.children ) {\n\t\t\tif ( isViewCollection( def.children ) ) {\n\t\t\t\tchildren.add( def.children );\n\t\t\t} else {\n\t\t\t\tfor ( let child of def.children ) {\n\t\t\t\t\tif ( isTemplate( child ) || isView( child ) ) {\n\t\t\t\t\t\tchildren.add( child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchildren.add( new Template( child ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdef.children = children;\n\t}\n\n\treturn def;\n}\n\n// Normalizes \"attributes\" section of {@link module:ui/template~TemplateDefinition}.\n//\n//\t\tattributes: {\n//\t\t\ta: 'bar',\n//\t\t\tb: {@link module:ui/template~TemplateBinding},\n//\t\t\tc: {\n//\t\t\t\tvalue: 'bar'\n//\t\t\t}\n//\t\t}\n//\n// becomes\n//\n//\t\tattributes: {\n//\t\t\ta: [ 'bar' ],\n//\t\t\tb: [ {@link module:ui/template~TemplateBinding} ],\n//\t\t\tc: {\n//\t\t\t\tvalue: [ 'bar' ]\n//\t\t\t}\n//\t\t}\n//\n// @param {Object} attrs\nfunction normalizeAttributes( attrs ) {\n\tfor ( let a in attrs ) {\n\t\tif ( attrs[ a ].value ) {\n\t\t\tattrs[ a ].value = [].concat( attrs[ a ].value );\n\t\t}\n\n\t\tarrayify( attrs, a );\n\t}\n}\n\n// Normalizes \"on\" section of {@link module:ui/template~TemplateDefinition}.\n//\n//\t\ton: {\n//\t\t\ta: 'bar',\n//\t\t\tb: {@link module:ui/template~TemplateBinding},\n//\t\t\tc: [ {@link module:ui/template~TemplateBinding}, () => { ... } ]\n//\t\t}\n//\n// becomes\n//\n//\t\ton: {\n//\t\t\ta: [ 'bar' ],\n//\t\t\tb: [ {@link module:ui/template~TemplateBinding} ],\n//\t\t\tc: [ {@link module:ui/template~TemplateBinding}, () => { ... } ]\n//\t\t}\n//\n// @param {Object} listeners\n// @returns {Object} Object containing normalized listeners.\nfunction normalizeListeners( listeners ) {\n\tfor ( let l in listeners ) {\n\t\tarrayify( listeners, l );\n\t}\n\n\treturn listeners;\n}\n\n// Normalizes \"string\" {@link module:ui/template~TemplateDefinition}.\n//\n//\t\t\"foo\"\n//\n// becomes\n//\n//\t\t{ text: [ 'foo' ] },\n//\n// @param {String} def\n// @returns {module:ui/template~TemplateDefinition} Normalized template definition.\nfunction normalizePlainTextDefinition( def ) {\n\treturn {\n\t\ttext: [ def ]\n\t};\n}\n\n// Normalizes text {@link module:ui/template~TemplateDefinition}.\n//\n//\t\tchildren: [\n//\t\t\t{ text: 'def' },\n//\t\t\t{ text: {@link module:ui/template~TemplateBinding} }\n//\t\t]\n//\n// becomes\n//\n//\t\tchildren: [\n//\t\t\t{ text: [ 'def' ] },\n//\t\t\t{ text: [ {@link module:ui/template~TemplateBinding} ] }\n//\t\t]\n//\n// @param {module:ui/template~TemplateDefinition} def\nfunction normalizeTextDefinition( def ) {\n\tif ( !Array.isArray( def.text ) ) {\n\t\tdef.text = [ def.text ];\n\t}\n}\n\n// Wraps an entry in Object in an Array, if not already one.\n//\n//\t\t{\n//\t\t\tx: 'y',\n//\t\t\ta: [ 'b' ]\n//\t\t}\n//\n// becomes\n//\n//\t\t{\n//\t\t\tx: [ 'y' ],\n//\t\t\ta: [ 'b' ]\n//\t\t}\n//\n// @param {Object} obj\n// @param {String} key\nfunction arrayify( obj, key ) {\n\tif ( !Array.isArray( obj[ key ] ) ) {\n\t\tobj[ key ] = [ obj[ key ] ];\n\t}\n}\n\n// A helper which concatenates the value avoiding unwanted\n// leading white spaces.\n//\n// @param {String} prev\n// @param {String} cur\n// @returns {String}\nfunction arrayValueReducer( prev, cur ) {\n\tif ( isFalsy( cur ) ) {\n\t\treturn prev;\n\t} else if ( isFalsy( prev ) ) {\n\t\treturn cur;\n\t} else {\n\t\treturn `${prev} ${cur}`;\n\t}\n}\n\n// Extends one object defined in the following format:\n//\n//\t\t{\n//\t\t\tkey1: [Array1],\n//\t\t\tkey2: [Array2],\n//\t\t\t...\n//\t\t\tkeyN: [ArrayN]\n//\t\t}\n//\n// with another object of the same data format.\n//\n// @param {Object} obj Base object.\n// @param {Object} ext Object extending base.\n// @returns {String}\nfunction extendObjectValueArray( obj, ext ) {\n\tfor ( let a in ext ) {\n\t\tif ( obj[ a ] ) {\n\t\t\tobj[ a ].push( ...ext[ a ] );\n\t\t} else {\n\t\t\tobj[ a ] = ext[ a ];\n\t\t}\n\t}\n}\n\n// A helper for {@link module:ui/template~Template#extend}. Recursively extends {@link module:ui/template~Template} instance\n// with content from {module:ui/template~TemplateDefinition}. See {@link module:ui/template~Template#extend} to learn more.\n//\n// @param {module:ui/template~Template} def A template instance to be extended.\n// @param {module:ui/template~TemplateDefinition} def A definition which is to extend the template instance.\nfunction extendTemplate( template, def ) {\n\tif ( def.attributes ) {\n\t\tif ( !template.attributes ) {\n\t\t\ttemplate.attributes = {};\n\t\t}\n\n\t\textendObjectValueArray( template.attributes, def.attributes );\n\t}\n\n\tif ( def.eventListeners ) {\n\t\tif ( !template.eventListeners ) {\n\t\t\ttemplate.eventListeners = {};\n\t\t}\n\n\t\textendObjectValueArray( template.eventListeners, def.eventListeners );\n\t}\n\n\tif ( def.text ) {\n\t\ttemplate.text.push( ...def.text );\n\t}\n\n\tif ( def.children && def.children.length ) {\n\t\tif ( template.children.length != def.children.length ) {\n\t\t\t/**\n\t\t\t * The number of children in extended definition does not match.\n\t\t\t *\n\t\t\t * @error ui-template-extend-children-mismatch\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-template-extend-children-mismatch: The number of children in extended definition does not match.' );\n\t\t}\n\n\t\tlet childIndex = 0;\n\n\t\tfor ( let childDef of def.children ) {\n\t\t\textendTemplate( template.children.get( childIndex++ ), childDef );\n\t\t}\n\t}\n}\n\n// Checks if value is \"falsy\".\n// Note: 0 (Number) is not \"falsy\" in this context.\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isFalsy( value ) {\n\treturn !value && value !== 0;\n}\n\n// Checks if the item is an instance of {@link module:ui/view~View}\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isView( item ) {\n\treturn item instanceof View;\n}\n\n// Checks if the item is an instance of {@link module:ui/template~Template}\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isTemplate( item ) {\n\treturn item instanceof Template;\n}\n\n// Checks if the item is an instance of {@link module:ui/viewcollection~ViewCollection}\n//\n// @private\n// @param {*} value Value to be checked.\nfunction isViewCollection( item ) {\n\treturn item instanceof ViewCollection;\n}\n\n// Creates an empty skeleton for {@link module:ui/template~Template#revert}\n// data.\n//\n// @private\nfunction getEmptyRevertData() {\n\treturn {\n\t\tchildren: [],\n\t\tbindings: [],\n\t\tattributes: {}\n\t};\n}\n\n// Checks whether an attribute should be extended when\n// {@link module:ui/template~Template#apply} is called.\n//\n// @private\n// @param {String} attrName Attribute name to check.\nfunction shouldExtend( attrName ) {\n\treturn attrName == 'class' || attrName == 'style';\n}\n\n/**\n * A definition of {@link module:ui/template~Template}.\n * See: {@link module:ui/template~TemplateValueSchema}.\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tchildren: [\n *\t\t\t\t{\n *\t\t\t\t\ttag: 'span',\n *\t\t\t\t\tattributes: { ... },\n *\t\t\t\t\tchildren: [ ... ],\n *\t\t\t\t\t...\n *\t\t\t\t},\n *\t\t\t\t{\n *\t\t\t\t\ttext: 'static–text'\n *\t\t\t\t},\n *\t\t\t\t'also-static–text',\n *\t\t\t\t<{@link module:ui/view~View} instance>\n *\t\t\t\t<{@link module:ui/template~Template} instance>\n *\t\t\t\t...\n *\t\t\t],\n *\t\t\tattributes: {\n *\t\t\t\tclass: {@link module:ui/template~TemplateValueSchema},\n *\t\t\t\tid: {@link module:ui/template~TemplateValueSchema},\n *\t\t\t\tstyle: {@link module:ui/template~TemplateValueSchema}\n *\t\t\t\t...\n *\t\t\t},\n *\t\t\ton: {\n *\t\t\t\t'click': {@link module:ui/template~TemplateListenerSchema}\n *\t\t\t\t'keyup@.some-class': {@link module:ui/template~TemplateListenerSchema},\n *\t\t\t\t...\n *\t\t\t}\n *\t\t} );\n *\n *\t\t// An entire view collection can be used as a child in the definition.\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tchildren: <{@link module:ui/viewcollection~ViewCollection} instance>\n *\t\t} );\n *\n * @typedef module:ui/template~TemplateDefinition\n * @type Object\n * @property {String} tag\n * @property {Array.} [children]\n * @property {Object.} [attributes]\n * @property {String|module:ui/template~TemplateValueSchema|Array.} [text]\n * @property {Object.} [on]\n */\n\n/**\n * Describes a value of HTMLElement attribute or `textContent`. See:\n * * {@link module:ui/template~TemplateDefinition},\n * * {@link module:ui/template~Template.bind},\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tattributes: {\n *\t\t\t\t// Plain String schema.\n *\t\t\t\tclass: 'static-text'\n *\n *\t\t\t\t// Object schema, an `ObservableMixin` binding.\n *\t\t\t\tclass: bind.to( 'foo' )\n *\n *\t\t\t\t// Array schema, combines the above.\n *\t\t\t\tclass: [\n *\t\t\t\t\t'static-text',\n *\t\t\t\t\tbind.to( 'bar', () => { ... } )\n *\t\t\t\t],\n *\n *\t\t\t\t// Array schema, with custom namespace.\n *\t\t\t\tclass: {\n *\t\t\t\t\tns: 'http://ns.url',\n *\t\t\t\t\tvalue: [\n *\t\t\t\t\t\tbind.if( 'baz', 'value-when-true' )\n *\t\t\t\t\t\t'static-text'\n *\t\t\t\t\t]\n *\t\t\t\t},\n *\n *\t\t\t\t// Object literal schema, specific for styles.\n *\t\t\t\tstyle: {\n *\t\t\t\t\tcolor: 'red',\n *\t\t\t\t\tbackgroundColor: bind.to( 'qux', () => { ... } )\n *\t\t\t\t}\n *\t\t\t}\n *\t\t} );\n *\n * @typedef module:ui/template~TemplateValueSchema\n * @type {Object|String|Array}\n */\n\n/**\n * Describes a listener attached to HTMLElement. See: {@link module:ui/template~TemplateDefinition}.\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\ton: {\n *\t\t\t\t// Plain String schema.\n *\t\t\t\tclick: 'clicked'\n *\n *\t\t\t\t// Object schema, an `ObservableMixin` binding.\n *\t\t\t\tclick: {@link module:ui/template~TemplateBinding}\n *\n *\t\t\t\t// Array schema, combines the above.\n *\t\t\t\tclick: [\n *\t\t\t\t\t'clicked',\n *\t\t\t\t\t{@link module:ui/template~TemplateBinding}\n *\t\t\t\t],\n *\n *\t\t\t\t// Array schema, with custom callback.\n *\t\t\t\t// Note: It will work for \"click\" event on class=\".foo\" children only.\n *\t\t\t\t'click@.foo': {\n *\t\t\t\t\t'clicked',\n *\t\t\t\t\t{@link module:ui/template~TemplateBinding},\n *\t\t\t\t\t() => { ... }\n *\t\t\t\t}\n *\t\t\t}\n *\t\t} );\n *\n * @typedef module:ui/template~TemplateListenerSchema\n * @type {Object|String|Array}\n */\n\n/**\n * The type of {@link ~Template.bind}'s return value.\n *\n * @interface module:ui/template~BindChain\n */\n\n/**\n * Binds {@link module:utils/observablemixin~ObservableMixin} instance to:\n *\n * * HTMLElement attribute or Text Node `textContent` so remains in sync with the Observable when it changes:\n * * HTMLElement DOM event, so the DOM events are propagated through Observable.\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t\tattributes: {\n *\t\t\t\t// class=\"...\" attribute gets bound to `observableInstance#a`\n *\t\t\t\t'class': bind.to( 'a' )\n *\t\t\t},\n *\t\t\tchildren: [\n *\t\t\t\t//

...

gets bound to `observableInstance#b`; always `toUpperCase()`.\n *\t\t\t\t{ text: bind.to( 'b', ( value, node ) => value.toUpperCase() ) }\n *\t\t\t],\n *\t\t\ton: {\n *\t\t\t\tclick: [\n *\t\t\t\t\t// \"clicked\" event will be fired on `observableInstance` when \"click\" fires in DOM.\n *\t\t\t\t\tbind.to( 'clicked' ),\n *\n *\t\t\t\t\t// A custom callback function will be executed when \"click\" fires in DOM.\n *\t\t\t\t\tbind.to( () => {\n *\t\t\t\t\t\t...\n *\t\t\t\t\t} )\n *\t\t\t\t]\n *\t\t\t}\n *\t\t} ).render();\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'p',\n *\t\t} ).render();\n *\n * @method #to\n * @param {String|Function} eventNameOrFunctionOrAttribute An attribute name of\n * {@link module:utils/observablemixin~ObservableMixin} or a DOM event name or an event callback.\n * @param {Function} [callback] Allows processing of the value. Accepts `Node` and `value` as arguments.\n * @return {module:ui/template~TemplateBinding}\n */\n\n/**\n * Binds {@link module:utils/observablemixin~ObservableMixin} to HTMLElement attribute or Text Node `textContent`\n * so remains in sync with the Model when it changes. Unlike {@link module:ui/template~BindChain#to},\n * it controls the presence of the attribute/`textContent` depending on the \"falseness\" of\n * {@link module:utils/observablemixin~ObservableMixin} attribute.\n *\n *\t\tconst bind = Template.bind( observableInstance, emitterInstance );\n *\n *\t\tnew Template( {\n *\t\t\ttag: 'input',\n *\t\t\tattributes: {\n *\t\t\t\t// when `observableInstance#a` is not undefined/null/false/''\n *\t\t\t\t// when `observableInstance#a` is undefined/null/false\n *\t\t\t\tchecked: bind.if( 'a' )\n *\t\t\t},\n *\t\t\tchildren: [\n *\t\t\t\t{\n *\t\t\t\t\t// \"b-is-not-set\" when `observableInstance#b` is undefined/null/false/''\n *\t\t\t\t\t// when `observableInstance#b` is not \"falsy\"\n *\t\t\t\t\ttext: bind.if( 'b', 'b-is-not-set', ( value, node ) => !value )\n *\t\t\t\t}\n *\t\t\t]\n *\t\t} ).render();\n *\n * @method #if\n * @param {String} attribute An attribute name of {@link module:utils/observablemixin~ObservableMixin} used in the binding.\n * @param {String} [valueIfTrue] Value set when {@link module:utils/observablemixin~ObservableMixin} attribute is not\n * undefined/null/false/''.\n * @param {Function} [callback] Allows processing of the value. Accepts `Node` and `value` as arguments.\n * @return {module:ui/template~TemplateBinding}\n */\n\n/**\n * The {@link module:ui/template~Template#_renderNode} configuration.\n *\n * @private\n * @interface module:ui/template~RenderData\n */\n\n/**\n * Tells {@link module:ui/template~Template#_renderNode} to render\n * children into `DocumentFragment` first and then append the fragment\n * to the parent element. It's a speed optimization.\n *\n * @member {Boolean} #intoFragment\n */\n\n/**\n * A node which is being rendered.\n *\n * @member {HTMLElement|Text} #node\n */\n\n/**\n * Indicates whether the {@module:ui/template~RenderNodeOptions#node} has\n * been provided by {@module:ui/template~Template#apply}.\n *\n * @member {Boolean} #isApplying\n */\n\n/**\n * An object storing the data that helps {@module:ui/template~Template#revert}\n * bringing back an element to its initial state, i.e. before\n * {@module:ui/template~Template#apply} was called.\n *\n * @member {Object} #revertData\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-ui/src/template.js\n// module id = 6\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/emittermixin\n */\n\nimport EventInfo from './eventinfo';\nimport uid from './uid';\nimport priorities from './priorities';\n\nconst _listeningTo = Symbol( 'listeningTo' );\nconst _emitterId = Symbol( 'emitterId' );\n\n/**\n * Mixin that injects the events API into its host.\n *\n * @mixin EmitterMixin\n * @implements module:utils/emittermixin~Emitter\n */\nconst EmitterMixin = {\n\t/**\n\t * Registers a callback function to be executed when an event is fired. Events can be grouped in namespaces using `:`.\n\t * When namespaced event is fired, it additionaly fires all callbacks for that namespace.\n\t *\n\t *\t\tmyEmitter.on( 'myGroup', genericCallback );\n\t *\t\tmyEmitter.on( 'myGroup:myEvent', specificCallback );\n\t *\t\tmyEmitter.fire( 'myGroup' ); // genericCallback is fired.\n\t *\t\tmyEmitter.fire( 'myGroup:myEvent' ); // both genericCallback and specificCallback are fired.\n\t *\t\tmyEmitter.fire( 'myGroup:foo' ); // genericCallback is fired even though there are no callbacks for \"foo\".\n\t *\n\t * @method #on\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {module:utils/priorities~PriorityString|Number} [options.priority='normal'] The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t * @param {Object} [options.context] The object that represents `this` in the callback. Defaults to the object firing the event.\n\t */\n\ton( event, callback, options = {} ) {\n\t\tcreateEventNamespace( this, event );\n\t\tconst lists = getCallbacksListsForNamespace( this, event );\n\t\tconst priority = priorities.get( options.priority );\n\n\t\tcallback = {\n\t\t\tcallback: callback,\n\t\t\tcontext: options.context || this,\n\t\t\tpriority: priority\n\t\t};\n\n\t\t// Add the callback to all callbacks list.\n\t\tfor ( let callbacks of lists ) {\n\t\t\t// Add the callback to the list in the right priority position.\n\t\t\tlet added = false;\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\tif ( callbacks[ i ].priority < priority ) {\n\t\t\t\t\tcallbacks.splice( i, 0, callback );\n\t\t\t\t\tadded = true;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add at the end, if right place was not found.\n\t\t\tif ( !added ) {\n\t\t\t\tcallbacks.push( callback );\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Registers a callback function to be executed on the next time the event is fired only. This is similar to\n\t * calling {@link #on} followed by {@link #off} in the callback.\n\t *\n\t * @method #once\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {module:utils/priorities~PriorityString|Number} [options.priority='normal'] The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t * @param {Object} [options.context] The object that represents `this` in the callback. Defaults to the object firing the event.\n\t */\n\tonce( event, callback, options ) {\n\t\tconst onceCallback = function( event ) {\n\t\t\t// Go off() at the first call.\n\t\t\tevent.off();\n\n\t\t\t// Go with the original callback.\n\t\t\tcallback.apply( this, arguments );\n\t\t};\n\n\t\t// Make a similar on() call, simply replacing the callback.\n\t\tthis.on( event, onceCallback, options );\n\t},\n\n\t/**\n\t * Stops executing the callback on the given event.\n\t *\n\t * @method #off\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to stop being called.\n\t * @param {Object} [context] The context object to be removed, pared with the given callback. To handle cases where\n\t * the same callback is used several times with different contexts.\n\t */\n\toff( event, callback, context ) {\n\t\tconst lists = getCallbacksListsForNamespace( this, event );\n\n\t\tfor ( let callbacks of lists ) {\n\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\tif ( callbacks[ i ].callback == callback ) {\n\t\t\t\t\tif ( !context || context == callbacks[ i ].context ) {\n\t\t\t\t\t\t// Remove the callback from the list (fixing the next index).\n\t\t\t\t\t\tcallbacks.splice( i, 1 );\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired in a specific (emitter) object.\n\t *\n\t * @method #listenTo\n\t * @param {module:utils/emittermixin~Emitter} emitter The object that fires the event.\n\t * @param {String} event The name of the event.\n\t * @param {Function} callback The function to be called on event.\n\t * @param {Object} [options={}] Additional options.\n\t * @param {module:utils/priorities~PriorityString|Number} [options.priority='normal'] The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t * @param {Object} [options.context] The object that represents `this` in the callback. Defaults to the object firing the event.\n\t */\n\tlistenTo( emitter, event, callback, options ) {\n\t\tlet emitters, emitterId, emitterInfo, eventCallbacks;\n\n\t\t// _listeningTo contains a list of emitters that this object is listening to.\n\t\t// This list has the following format:\n\t\t//\n\t\t// _listeningTo: {\n\t\t// emitterId: {\n\t\t// emitter: emitter,\n\t\t// callbacks: {\n\t\t// event1: [ callback1, callback2, ... ]\n\t\t// ....\n\t\t// }\n\t\t// },\n\t\t// ...\n\t\t// }\n\n\t\tif ( !this[ _listeningTo ] ) {\n\t\t\tthis[ _listeningTo ] = {};\n\t\t}\n\n\t\temitters = this[ _listeningTo ];\n\n\t\tif ( !_getEmitterId( emitter ) ) {\n\t\t\t_setEmitterId( emitter );\n\t\t}\n\n\t\temitterId = _getEmitterId( emitter );\n\n\t\tif ( !( emitterInfo = emitters[ emitterId ] ) ) {\n\t\t\temitterInfo = emitters[ emitterId ] = {\n\t\t\t\temitter: emitter,\n\t\t\t\tcallbacks: {}\n\t\t\t};\n\t\t}\n\n\t\tif ( !( eventCallbacks = emitterInfo.callbacks[ event ] ) ) {\n\t\t\teventCallbacks = emitterInfo.callbacks[ event ] = [];\n\t\t}\n\n\t\teventCallbacks.push( callback );\n\n\t\t// Finally register the callback to the event.\n\t\temitter.on( event, callback, options );\n\t},\n\n\t/**\n\t * Stops listening for events. It can be used at different levels:\n\t *\n\t * * To stop listening to a specific callback.\n\t * * To stop listening to a specific event.\n\t * * To stop listening to all events fired by a specific object.\n\t * * To stop listening to all events fired by all object.\n\t *\n\t * @method #stopListening\n\t * @param {module:utils/emittermixin~Emitter} [emitter] The object to stop listening to. If omitted, stops it for all objects.\n\t * @param {String} [event] (Requires the `emitter`) The name of the event to stop listening to. If omitted, stops it\n\t * for all events from `emitter`.\n\t * @param {Function} [callback] (Requires the `event`) The function to be removed from the call list for the given\n\t * `event`.\n\t */\n\tstopListening( emitter, event, callback ) {\n\t\tlet emitters = this[ _listeningTo ];\n\t\tlet emitterId = emitter && _getEmitterId( emitter );\n\t\tlet emitterInfo = emitters && emitterId && emitters[ emitterId ];\n\t\tlet eventCallbacks = emitterInfo && event && emitterInfo.callbacks[ event ];\n\n\t\t// Stop if nothing has been listened.\n\t\tif ( !emitters || ( emitter && !emitterInfo ) || ( event && !eventCallbacks ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// All params provided. off() that single callback.\n\t\tif ( callback ) {\n\t\t\temitter.off( event, callback );\n\t\t}\n\t\t// Only `emitter` and `event` provided. off() all callbacks for that event.\n\t\telse if ( eventCallbacks ) {\n\t\t\twhile ( ( callback = eventCallbacks.pop() ) ) {\n\t\t\t\temitter.off( event, callback );\n\t\t\t}\n\t\t\tdelete emitterInfo.callbacks[ event ];\n\t\t}\n\t\t// Only `emitter` provided. off() all events for that emitter.\n\t\telse if ( emitterInfo ) {\n\t\t\tfor ( event in emitterInfo.callbacks ) {\n\t\t\t\tthis.stopListening( emitter, event );\n\t\t\t}\n\t\t\tdelete emitters[ emitterId ];\n\t\t}\n\t\t// No params provided. off() all emitters.\n\t\telse {\n\t\t\tfor ( emitterId in emitters ) {\n\t\t\t\tthis.stopListening( emitters[ emitterId ].emitter );\n\t\t\t}\n\t\t\tdelete this[ _listeningTo ];\n\t\t}\n\t},\n\n\t/**\n\t * Fires an event, executing all callbacks registered for it.\n\t *\n\t * The first parameter passed to callbacks is an {@link module:utils/eventinfo~EventInfo} object,\n\t * followed by the optional `args` provided in the `fire()` method call.\n\t *\n\t * @method #fire\n\t * @param {String|module:utils/eventinfo~EventInfo} eventOrInfo The name of the event or `EventInfo` object if event is delegated.\n\t * @param {...*} [args] Additional arguments to be passed to the callbacks.\n\t */\n\tfire( eventOrInfo, ...args ) {\n\t\tconst eventInfo = eventOrInfo instanceof EventInfo ? eventOrInfo : new EventInfo( this, eventOrInfo );\n\t\tconst event = eventInfo.name;\n\t\tlet callbacks = getCallbacksForEvent( this, event );\n\n\t\t// Record that the event passed this emitter on its path.\n\t\teventInfo.path.push( this );\n\n\t\t// Handle event listener callbacks first.\n\t\tif ( callbacks ) {\n\t\t\t// Arguments passed to each callback.\n\t\t\tconst callbackArgs = [ eventInfo, ...args ];\n\n\t\t\t// Copying callbacks array is the easiest and most secure way of preventing infinite loops, when event callbacks\n\t\t\t// are added while processing other callbacks. Previous solution involved adding counters (unique ids) but\n\t\t\t// failed if callbacks were added to the queue before currently processed callback.\n\t\t\t// If this proves to be too inefficient, another method is to change `.on()` so callbacks are stored if same\n\t\t\t// event is currently processed. Then, `.fire()` at the end, would have to add all stored events.\n\t\t\tcallbacks = Array.from( callbacks );\n\n\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\tcallbacks[ i ].callback.apply( callbacks[ i ].context, callbackArgs );\n\n\t\t\t\t// Remove the callback from future requests if off() has been called.\n\t\t\t\tif ( eventInfo.off.called ) {\n\t\t\t\t\t// Remove the called mark for the next calls.\n\t\t\t\t\tdelete eventInfo.off.called;\n\n\t\t\t\t\tthis.off( event, callbacks[ i ].callback, callbacks[ i ].context );\n\t\t\t\t}\n\n\t\t\t\t// Do not execute next callbacks if stop() was called.\n\t\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Delegate event to other emitters if needed.\n\t\tif ( this._delegations ) {\n\t\t\tconst destinations = this._delegations.get( event );\n\t\t\tconst passAllDestinations = this._delegations.get( '*' );\n\n\t\t\tif ( destinations ) {\n\t\t\t\tfireDelegatedEvents( destinations, eventInfo, args );\n\t\t\t}\n\n\t\t\tif ( passAllDestinations ) {\n\t\t\t\tfireDelegatedEvents( passAllDestinations, eventInfo, args );\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Delegates selected events to another {@link module:utils/emittermixin~Emitter}. For instance:\n\t *\n\t *\t\temitterA.delegate( 'eventX' ).to( emitterB );\n\t *\t\temitterA.delegate( 'eventX', 'eventY' ).to( emitterC );\n\t *\n\t * then `eventX` is delegated (fired by) `emitterB` and `emitterC` along with `data`:\n\t *\n\t *\t\temitterA.fire( 'eventX', data );\n\t *\n\t * and `eventY` is delegated (fired by) `emitterC` along with `data`:\n\t *\n\t *\t\temitterA.fire( 'eventY', data );\n\t *\n\t * @method #delegate\n\t * @param {...String} events Event names that will be delegated to another emitter.\n\t * @returns {module:utils/emittermixin~EmitterMixinDelegateChain}\n\t */\n\tdelegate( ...events ) {\n\t\treturn {\n\t\t\tto: ( emitter, nameOrFunction ) => {\n\t\t\t\tif ( !this._delegations ) {\n\t\t\t\t\tthis._delegations = new Map();\n\t\t\t\t}\n\n\t\t\t\tfor ( let eventName of events ) {\n\t\t\t\t\tlet destinations = this._delegations.get( eventName );\n\n\t\t\t\t\tif ( !destinations ) {\n\t\t\t\t\t\tthis._delegations.set( eventName, new Map( [ [ emitter, nameOrFunction ] ] ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdestinations.set( emitter, nameOrFunction );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t},\n\n\t/**\n\t * Stops delegating events. It can be used at different levels:\n\t *\n\t * * To stop delegating all events.\n\t * * To stop delegating a specific event to all emitters.\n\t * * To stop delegating a specific event to a specific emitter.\n\t *\n\t * @method #stopDelegating\n\t * @param {String} [event] The name of the event to stop delegating. If omitted, stops it all delegations.\n\t * @param {module:utils/emittermixin~Emitter} [emitter] (requires `event`) The object to stop delegating a particular event to.\n\t * If omitted, stops delegation of `event` to all emitters.\n\t */\n\tstopDelegating( event, emitter ) {\n\t\tif ( !this._delegations ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !event ) {\n\t\t\tthis._delegations.clear();\n\t\t} else if ( !emitter ) {\n\t\t\tthis._delegations.delete( event );\n\t\t} else {\n\t\t\tconst destinations = this._delegations.get( event );\n\n\t\t\tif ( destinations ) {\n\t\t\t\tdestinations.delete( emitter );\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default EmitterMixin;\n\n/**\n * Checks if `listeningEmitter` listens to an emitter with given `listenedToEmitterId` and if so, returns that emitter.\n * If not, returns `null`.\n *\n * @protected\n * @param {module:utils/emittermixin~EmitterMixin} listeningEmitter Emitter that listens.\n * @param {String} listenedToEmitterId Unique emitter id of emitter listened to.\n * @returns {module:utils/emittermixin~EmitterMixin|null}\n */\nexport function _getEmitterListenedTo( listeningEmitter, listenedToEmitterId ) {\n\tif ( listeningEmitter[ _listeningTo ] && listeningEmitter[ _listeningTo ][ listenedToEmitterId ] ) {\n\t\treturn listeningEmitter[ _listeningTo ][ listenedToEmitterId ].emitter;\n\t}\n\n\treturn null;\n}\n\n/**\n * Sets emitter's unique id.\n *\n * **Note:** `_emitterId` can be set only once.\n *\n * @protected\n * @param {module:utils/emittermixin~EmitterMixin} emitter Emitter for which id will be set.\n * @param {String} [id] Unique id to set. If not passed, random unique id will be set.\n */\nexport function _setEmitterId( emitter, id ) {\n\tif ( !emitter[ _emitterId ] ) {\n\t\temitter[ _emitterId ] = id || uid();\n\t}\n}\n\n/**\n * Returns emitter's unique id.\n *\n * @protected\n * @param {module:utils/emittermixin~EmitterMixin} emitter Emitter which id will be returned.\n */\nexport function _getEmitterId( emitter ) {\n\treturn emitter[ _emitterId ];\n}\n\n// Gets the internal `_events` property of the given object.\n// `_events` property store all lists with callbacks for registered event names.\n// If there were no events registered on the object, empty `_events` object is created.\nfunction getEvents( source ) {\n\tif ( !source._events ) {\n\t\tObject.defineProperty( source, '_events', {\n\t\t\tvalue: {}\n\t\t} );\n\t}\n\n\treturn source._events;\n}\n\n// Creates event node for generic-specific events relation architecture.\nfunction makeEventNode() {\n\treturn {\n\t\tcallbacks: [],\n\t\tchildEvents: []\n\t};\n}\n\n// Creates an architecture for generic-specific events relation.\n// If needed, creates all events for given eventName, i.e. if the first registered event\n// is foo:bar:abc, it will create foo:bar:abc, foo:bar and foo event and tie them together.\n// It also copies callbacks from more generic events to more specific events when\n// specific events are created.\nfunction createEventNamespace( source, eventName ) {\n\tconst events = getEvents( source );\n\n\t// First, check if the event we want to add to the structure already exists.\n\tif ( events[ eventName ] ) {\n\t\t// If it exists, we don't have to do anything.\n\t\treturn;\n\t}\n\n\t// In other case, we have to create the structure for the event.\n\t// Note, that we might need to create intermediate events too.\n\t// I.e. if foo:bar:abc is being registered and we only have foo in the structure,\n\t// we need to also register foo:bar.\n\n\t// Currently processed event name.\n\tlet name = eventName;\n\t// Name of the event that is a child event for currently processed event.\n\tlet childEventName = null;\n\n\t// Array containing all newly created specific events.\n\tconst newEventNodes = [];\n\n\t// While loop can't check for ':' index because we have to handle generic events too.\n\t// In each loop, we truncate event name, going from the most specific name to the generic one.\n\t// I.e. foo:bar:abc -> foo:bar -> foo.\n\twhile ( name !== '' ) {\n\t\tif ( events[ name ] ) {\n\t\t\t// If the currently processed event name is already registered, we can be sure\n\t\t\t// that it already has all the structure created, so we can break the loop here\n\t\t\t// as no more events need to be registered.\n\t\t\tbreak;\n\t\t}\n\n\t\t// If this event is not yet registered, create a new object for it.\n\t\tevents[ name ] = makeEventNode();\n\t\t// Add it to the array with newly created events.\n\t\tnewEventNodes.push( events[ name ] );\n\n\t\t// Add previously processed event name as a child of this event.\n\t\tif ( childEventName ) {\n\t\t\tevents[ name ].childEvents.push( childEventName );\n\t\t}\n\n\t\tchildEventName = name;\n\t\t// If `.lastIndexOf()` returns -1, `.substr()` will return '' which will break the loop.\n\t\tname = name.substr( 0, name.lastIndexOf( ':' ) );\n\t}\n\n\tif ( name !== '' ) {\n\t\t// If name is not empty, we found an already registered event that was a parent of the\n\t\t// event we wanted to register.\n\n\t\t// Copy that event's callbacks to newly registered events.\n\t\tfor ( let node of newEventNodes ) {\n\t\t\tnode.callbacks = events[ name ].callbacks.slice();\n\t\t}\n\n\t\t// Add last newly created event to the already registered event.\n\t\tevents[ name ].childEvents.push( childEventName );\n\t}\n}\n\n// Gets an array containing callbacks list for a given event and it's more specific events.\n// I.e. if given event is foo:bar and there is also foo:bar:abc event registered, this will\n// return callback list of foo:bar and foo:bar:abc (but not foo).\n// Returns empty array if given event has not been yet registered.\nfunction getCallbacksListsForNamespace( source, eventName ) {\n\tconst eventNode = getEvents( source )[ eventName ];\n\n\tif ( !eventNode ) {\n\t\treturn [];\n\t}\n\n\tlet callbacksLists = [ eventNode.callbacks ];\n\n\tfor ( let i = 0; i < eventNode.childEvents.length; i++ ) {\n\t\tlet childCallbacksLists = getCallbacksListsForNamespace( source, eventNode.childEvents[ i ] );\n\n\t\tcallbacksLists = callbacksLists.concat( childCallbacksLists );\n\t}\n\n\treturn callbacksLists;\n}\n\n// Get the list of callbacks for a given event, but only if there any callbacks have been registered.\n// If there are no callbacks registered for given event, it checks if this is a specific event and looks\n// for callbacks for it's more generic version.\nfunction getCallbacksForEvent( source, eventName ) {\n\tlet event;\n\n\tif ( !source._events || !( event = source._events[ eventName ] ) || !event.callbacks.length ) {\n\t\t// There are no callbacks registered for specified eventName.\n\t\t// But this could be a specific-type event that is in a namespace.\n\t\tif ( eventName.indexOf( ':' ) > -1 ) {\n\t\t\t// If the eventName is specific, try to find callback lists for more generic event.\n\t\t\treturn getCallbacksForEvent( source, eventName.substr( 0, eventName.lastIndexOf( ':' ) ) );\n\t\t} else {\n\t\t\t// If this is a top-level generic event, return null;\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn event.callbacks;\n}\n\n// Fires delegated events for given map of destinations.\n//\n// @private\n// * @param {Map.} destinations A map containing `[ {@link utils.Emitter}, \"event name\" ]` pair destinations.\n// * @param {utils.EventInfo} eventInfo The original event info object.\n// * @param {Array.<*>} fireArgs Arguments the original event was fired with.\nfunction fireDelegatedEvents( destinations, eventInfo, fireArgs ) {\n\tfor ( let [ emitter, name ] of destinations ) {\n\t\tif ( !name ) {\n\t\t\tname = eventInfo.name;\n\t\t} else if ( typeof name == 'function' ) {\n\t\t\tname = name( eventInfo.name );\n\t\t}\n\n\t\tconst delegatedInfo = new EventInfo( eventInfo.source, name );\n\n\t\tdelegatedInfo.path = [ ...eventInfo.path ];\n\n\t\temitter.fire( delegatedInfo, ...fireArgs );\n\t}\n}\n\n/**\n * Interface representing classes which mix in {@link module:utils/emittermixin~EmitterMixin}.\n *\n * @interface Emitter\n */\n\n/**\n * The return value of {@link ~EmitterMixin#delegate}.\n *\n * @interface module:utils/emittermixin~EmitterMixinDelegateChain\n */\n\n/**\n * Selects destination for {@link module:utils/emittermixin~EmitterMixin#delegate} events.\n *\n * @method #to\n * @param {module:utils/emittermixin~Emitter} emitter An `EmitterMixin` instance which is the destination for delegated events.\n * @param {String|Function} nameOrFunction A custom event name or function which converts the original name string.\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/emittermixin.js\n// module id = 7\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module ui/view\n */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport ViewCollection from './viewcollection';\nimport Template from './template';\nimport DomEmmiterMixin from '@ckeditor/ckeditor5-utils/src/dom/emittermixin';\nimport ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';\nimport Collection from '@ckeditor/ckeditor5-utils/src/collection';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\n\n/**\n * Basic View class.\n *\n *\t\tclass SampleView extends View {\n *\t\t\tconstructor( locale ) {\n *\t\t\t\tsuper( locale );\n *\n *\t\t\t\tthis.template = new Template( {\n *\t\t\t\t\ttag: 'p',\n *\t\t\t\t\tchildren: [\n *\t\t\t\t\t\t'Hello',\n *\t\t\t\t\t\t{\n *\t\t\t\t\t\t\ttag: 'b',\n *\t\t\t\t\t\t\tchildren: [\n *\t\t\t\t\t\t\t\t'world!'\n *\t\t\t\t\t\t\t]\n *\t\t\t\t\t\t}\n *\t\t\t\t\t],\n *\t\t\t\t\tattributes: {\n *\t\t\t\t\t\tclass: 'foo'\n *\t\t\t\t\t}\n *\t\t\t\t} );\n *\t\t\t}\n *\t\t}\n *\n *\t\tconst view = new SampleView( locale );\n *\n *\t\tview.init().then( () => {\n *\t\t\t// Will append

Helloworld

\n *\t\t\tdocument.body.appendChild( view.element );\n *\t\t} );\n *\n * @mixes module:utils/dom/emittermixin~EmmiterMixin\n * @mixes module:utils/observablemixin~ObservableMixin\n */\nexport default class View {\n\t/**\n\t * Creates an instance of the {@link module:ui/view~View} class.\n\t *\n\t * @param {module:utils/locale~Locale} [locale] The {@link module:core/editor/editor~Editor editor's locale} instance.\n\t */\n\tconstructor( locale ) {\n\t\t/**\n\t\t * A set of tools to localize the user interface. See {@link module:core/editor/editor~Editor}.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:utils/locale~Locale}\n\t\t */\n\t\tthis.locale = locale;\n\n\t\t/**\n\t\t * Shorthand for {@link module:utils/locale~Locale#t}.\n\t\t *\n\t\t * Note: If locale instance hasn't been passed to the view this method may not be available.\n\t\t *\n\t\t * @see module:utils/locale~Locale#t\n\t\t * @method\n\t\t */\n\t\tthis.t = locale && locale.t;\n\n\t\t/**\n\t\t * Set `true` after {@link #init}, which can be asynchronous.\n\t\t *\n\t\t * @readonly\n\t\t * @observable\n\t\t * @member {Boolean} #ready\n\t\t */\n\t\tthis.set( 'ready', false );\n\n\t\t/**\n\t\t * Collections registered with {@link #createCollection}.\n\t\t *\n\t\t * @protected\n\t\t * @member {Set.}\n\t\t */\n\t\tthis._viewCollections = new Collection();\n\n\t\t/**\n\t\t * A collection of view instances, which have been added directly\n\t\t * into the {@link module:ui/template~Template#children}.\n\t\t *\n\t\t * @protected\n\t\t * @member {module:ui/viewcollection~ViewCollection}\n\t\t */\n\t\tthis._unboundChildren = this.createCollection();\n\n\t\t// Pass parent locale to its children.\n\t\tthis._viewCollections.on( 'add', ( evt, collection ) => {\n\t\t\tcollection.locale = locale;\n\t\t} );\n\n\t\t/**\n\t\t * Template of this view.\n\t\t *\n\t\t * @member {module:ui/template~Template} #template\n\t\t */\n\n\t\t/**\n\t\t * Element of this view.\n\t\t *\n\t\t * @private\n\t\t * @member {HTMLElement} #_element\n\t\t */\n\n\t\t/**\n\t\t * Cached {@link module:ui/template~Template} binder object specific for this instance.\n\t\t * See {@link #bindTemplate}.\n\t\t *\n\t\t * @private\n\t\t * @member {Object} #_bindTemplate\n\t\t */\n\t}\n\n\t/**\n\t * Element of this view. The element is rendered on first reference\n\t * using {@link #template} definition.\n\t *\n\t * @type {HTMLElement}\n\t */\n\tget element() {\n\t\tif ( this._element ) {\n\t\t\treturn this._element;\n\t\t}\n\n\t\t// No template means no element (a virtual view).\n\t\tif ( !this.template ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tthis._addTemplateChildren();\n\n\t\treturn ( this._element = this.template.render() );\n\t}\n\n\t/**\n\t * @type {HTMLElement}\n\t */\n\tset element( el ) {\n\t\tthis._element = el;\n\t}\n\n\t/**\n\t * Shorthand for {@link module:ui/template~Template.bind}, bound to {@link ~View} on the first access.\n\t *\n\t * Cached {@link module:ui/template~Template.bind} object is stored in {@link #_bindTemplate}.\n\t *\n\t * @method #bindTemplate\n\t */\n\tget bindTemplate() {\n\t\tif ( this._bindTemplate ) {\n\t\t\treturn this._bindTemplate;\n\t\t}\n\n\t\treturn ( this._bindTemplate = Template.bind( this, this ) );\n\t}\n\n\t/**\n\t * Creates a new collection of views, which can be used in this view instance,\n\t * e.g. as a member of {@link module:ui/template~TemplateDefinition TemplateDefinition} children.\n\t *\n\t *\t\tclass SampleView extends View {\n\t *\t\t\tconstructor( locale ) {\n\t *\t\t\t\tsuper( locale );\n\t *\n\t *\t\t\t\tthis.items = this.createCollection();\n \t *\n\t *\t\t\t\tthis.template = new Template( {\n\t *\t\t\t\t\ttag: 'p',\n\t *\n\t *\t\t\t\t\t// `items` collection will render here.\n\t *\t\t\t\t\tchildren: this.items\n\t *\t\t\t\t} );\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t *\t\tconst view = new SampleView( locale );\n\t *\t\tconst anotherView = new AnotherSampleView( locale );\n\t *\n\t *\t\tview.init().then( () => {\n\t *\t\t\t// Will append

\n\t *\t\t\tdocument.body.appendChild( view.element );\n\t *\n\t *\t\t\t// `anotherView` becomes a child of the view, which is reflected in DOM\n\t *\t\t\t//

\n\t *\t\t\tview.items.add( anotherView );\n\t *\t\t} );\n\t *\n\t * @returns {module:ui/viewcollection~ViewCollection} A new collection of view instances.\n\t */\n\tcreateCollection() {\n\t\tconst collection = new ViewCollection();\n\n\t\tthis._viewCollections.add( collection );\n\n\t\treturn collection;\n\t}\n\n\t/**\n\t * Registers a new child view under this view instance. Once registered, a child\n\t * view is managed by its parent, including initialization ({@link #init})\n\t * and destruction ({@link #destroy}).\n\t *\n\t *\t\tclass SampleView extends View {\n\t *\t\t\tconstructor( locale ) {\n\t *\t\t\t\tsuper( locale );\n\t *\n\t *\t\t\t\tthis.childA = new SomeChildView( locale );\n\t *\t\t\t\tthis.childB = new SomeChildView( locale );\n\t *\n\t *\t\t\t\tthis.template = new Template( { tag: 'p' } );\n\t *\n\t *\t\t\t\t// Register children.\n\t *\t\t\t\tthis.addChildren( [ this.childA, this.childB ] );\n\t *\t\t\t}\n\t *\n\t *\t\t\tinit() {\n\t *\t\t\t\tthis.element.appendChild( this.childA.element );\n\t *\t\t\t\tthis.element.appendChild( this.childB.element );\n\t *\n\t *\t\t\t\treturn super.init();\n\t *\t\t\t}\n\t *\t\t}\n\t *\n\t *\t\tconst view = new SampleView( locale );\n\t *\n\t *\t\tview.init().then( () => {\n\t *\t\t\t// Will append

\n\t *\t\t\tdocument.body.appendChild( view.element );\n\t *\t\t} );\n\t *\n\t * **Note**: There's no need to add child views if they're used in the\n\t * {@link #template} explicitly:\n\t *\n\t *\t\tclass SampleView extends View {\n\t *\t\t\tconstructor( locale ) {\n\t *\t\t\t\tsuper( locale );\n\t *\n\t *\t\t\t\tthis.childA = new SomeChildView( locale );\n\t *\t\t\t\tthis.childB = new SomeChildView( locale );\n\t *\n\t *\t\t\t\tthis.template = new Template( {\n\t *\t\t\t\t\ttag: 'p',\n\t *\n \t *\t\t\t\t\t// These children will be added automatically. There's no\n \t *\t\t\t\t\t// need to call {@link #addChildren} for any of them.\n\t *\t\t\t\t\tchildren: [ this.childA, this.childB ]\n\t *\t\t\t\t} );\n\t *\t\t\t}\n\t *\n\t *\t\t\t...\n\t *\t\t}\n\t *\n\t * @param {module:ui/view~View|Iterable.} children Children views to be registered.\n\t */\n\taddChildren( children ) {\n\t\tif ( !isIterable( children ) ) {\n\t\t\tchildren = [ children ];\n\t\t}\n\n\t\tfor ( let child of children ) {\n\t\t\tthis._unboundChildren.add( child );\n\t\t}\n\t}\n\n\t/**\n\t * Initializes the view and child views located in {@link #_viewCollections}.\n\t *\n\t * @returns {Promise} A Promise resolved when the initialization process is finished.\n\t */\n\tinit() {\n\t\tif ( this.ready ) {\n\t\t\t/**\n\t\t\t * This View has already been initialized.\n\t\t\t *\n\t\t\t * @error ui-view-init-reinit\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-view-init-reinit: This View has already been initialized.' );\n\t\t}\n\n\t\treturn Promise.resolve()\n\t\t\t// Initialize collections in #_viewCollections.\n\t\t\t.then( () => {\n\t\t\t\treturn Promise.all( this._viewCollections.map( c => c.init() ) );\n\t\t\t} )\n\t\t\t// Spread the word that this view is ready!\n\t\t\t.then( () => {\n\t\t\t\tthis.ready = true;\n\t\t\t} );\n\t}\n\n\t/**\n\t * Destroys the view instance and child views located in {@link #_viewCollections}.\n\t *\n\t * @returns {Promise} A Promise resolved when the destruction process is finished.\n\t */\n\tdestroy() {\n\t\tthis.stopListening();\n\n\t\tconst promises = this._viewCollections.map( c => c.destroy() );\n\n\t\tthis._unboundChildren.clear();\n\t\tthis._viewCollections.clear();\n\n\t\tthis.element = this.template = this.locale = this.t =\n\t\t\tthis._viewCollections = this._unboundChildren = null;\n\n\t\treturn Promise.all( promises );\n\t}\n\n\t/**\n\t * Recursively traverses {@link #template} in search of {@link module:ui/view~View}\n\t * instances and automatically registers them using {@link #addChildren} method.\n\t *\n\t * @protected\n\t */\n\t_addTemplateChildren() {\n\t\tconst search = ( def ) => {\n\t\t\tif ( def.children ) {\n\t\t\t\tfor ( let defOrView of def.children ) {\n\t\t\t\t\tif ( defOrView instanceof View ) {\n\t\t\t\t\t\tthis.addChildren( defOrView );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearch( defOrView );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tsearch( this.template );\n\t}\n}\n\nmix( View, DomEmmiterMixin );\nmix( View, ObservableMixin );\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-ui/src/view.js\n// module id = 9\n// module chunks = 0","import baseMatches from './_baseMatches';\nimport baseMatchesProperty from './_baseMatchesProperty';\nimport identity from './identity';\nimport isArray from './isArray';\nimport property from './property';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/_baseIteratee.js\n// module id = 10\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified,\n * else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/isArray.js\n// module id = 11\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module core/command/command\n */\n\nimport ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';\nimport mix from '@ckeditor/ckeditor5-utils/src/mix';\n\n/**\n * The base class for CKEditor commands.\n *\n * Commands are main way to manipulate editor contents and state. They are mostly used by UI elements (or by other\n * commands) to make changes in Tree Model. Commands are available in every part of code that has access to\n * {@link module:core/editor/editor~Editor} instance, since they are registered in it and executed through\n * {@link module:core/editor/editor~Editor#execute}.\n * Commands instances are available through {@link module:core/editor/editor~Editor#commands}.\n *\n * This is an abstract base class for all commands.\n *\n * @mixes module:utils/observablemixin~ObservaleMixin\n */\nexport default class Command {\n\t/**\n\t * Creates a new Command instance.\n\t *\n\t * @param {module:core/editor/editor~Editor} editor Editor on which this command will be used.\n\t */\n\tconstructor( editor ) {\n\t\t/**\n\t\t * Editor on which this command will be used.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:core/editor/editor~Editor} #editor\n\t\t */\n\t\tthis.editor = editor;\n\n\t\t/**\n\t\t * Flag indicating whether a command is enabled or disabled.\n\t\t * A disabled command should do nothing upon it's execution.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isEnabled\n\t\t */\n\t\tthis.set( 'isEnabled', true );\n\n\t\t// If schema checking function is specified, add it to the `refreshState` listeners.\n\t\t// Feature will be disabled if it does not apply to schema requirements.\n\t\tif ( this._checkEnabled ) {\n\t\t\tthis.on( 'refreshState', ( evt, data ) => {\n\t\t\t\tdata.isEnabled = this._checkEnabled();\n\t\t\t} );\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Fires `refreshState` event and checks it's resolve value to decide whether command should be enabled or not.\n\t * Other parts of code might listen to `refreshState` event on this command and add their callbacks. This\n\t * way the responsibility of deciding whether a command should be enabled is shared.\n\t *\n\t * @fires refreshState\n\t */\n\trefreshState() {\n\t\tconst data = { isEnabled: true };\n\t\tthis.fire( 'refreshState', data );\n\n\t\tthis.isEnabled = data.isEnabled;\n\t}\n\n\t/**\n\t * Executes the command if it is enabled.\n\t *\n\t * @protected\n\t * @param {*} param Parameter passed to {@link module:core/editor/editor~Editor#execute execute} method of this command.\n\t */\n\t_execute( param ) {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis._doExecute( param );\n\t\t}\n\t}\n\n\t/**\n\t * Disables the command. This should be used only by the command itself. Other parts of code should add\n\t * listeners to `refreshState` event.\n\t *\n\t * @protected\n\t */\n\t_disable() {\n\t\tthis.on( 'refreshState', disableCallback );\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Enables the command (internally). This should be used only by the command itself. Command will be enabled if\n\t * other listeners does not return false on `refreshState` event callbacks. Firing {@link #_enable}\n\t * does not guarantee that {@link #isEnabled} will be set to true, as it depends on other listeners.\n\t *\n\t * @protected\n\t */\n\t_enable() {\n\t\tthis.off( 'refreshState', disableCallback );\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Executes command.\n\t * This is an abstract method that should be overwritten in child classes.\n\t *\n\t * @protected\n\t */\n\t_doExecute() {}\n\n\t/**\n\t * Checks if a command should be enabled according to its own rules. Mostly it will check schema to see if the command\n\t * is allowed to be executed in given position. This method can be defined in child class (but is not obligatory).\n\t * If it is defined, it will be added as a callback to `refreshState` event.\n\t *\n\t * @protected\n\t * @method #_checkEnabled\n\t * @returns {Boolean} `true` if command should be enabled according to\n\t * {@link module:engine/model/document~Document#schema}. `false` otherwise.\n\t */\n}\n\nfunction disableCallback( evt, data ) {\n\tdata.isEnabled = false;\n}\n\nmix( Command, ObservableMixin );\n\n/**\n * Fired whenever command has to have its {@link #isEnabled} property refreshed. Every feature,\n * command or other class which needs to disable command (set `isEnabled` to `false`) should listen to this\n * event.\n *\n * @event refreshState\n * @param {Object} data\n * @param {Boolean} [data.isEnabled=true]\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-core/src/command/command.js\n// module id = 12\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/writer\n */\n\nimport Node from './node';\nimport Text from './text';\nimport TextProxy from './textproxy';\nimport Range from './range';\nimport DocumentFragment from './documentfragment';\nimport NodeList from './nodelist';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * Contains functions used for composing model tree, grouped together under \"model writer\" name. Those functions\n * are built on top of {@link module:engine/model/node~Node node}, and it's child classes', APIs.\n *\n * Model writer API has multiple advantages and it is highly recommended to use it when changing model tree and nodes:\n * * model writer API {@link module:engine/model/writer~writer.normalizeNodes normalizes inserted nodes}, which means that you can insert\n * not only {@link module:engine/model/node~Node nodes}, but also `String`s, {@link module:engine/model/textproxy~TextProxy text proxies}\n * and\n * {@link module:engine/model/documentfragment~DocumentFragment document fragments},\n * * model writer API operates on {@link module:engine/model/position~Position positions}, which means that you have\n * better control over manipulating model tree as positions operate on offsets rather than indexes,\n * * model writer API automatically merges {@link module:engine/model/text~Text text nodes} with same attributes, which means\n * lower memory usage and better efficiency.\n *\n * @namespace writer\n */\nconst writer = {\n\tinsert,\n\tremove,\n\tmove,\n\tsetAttribute,\n\tremoveAttribute,\n\tnormalizeNodes\n};\n\nexport default writer;\n\n/**\n * Inserts given nodes at given position.\n *\n * @function module:engine/model/writer~writer.insert\n * @param {module:engine/model/position~Position} position Position at which nodes should be inserted.\n * @param {module:engine/model/node~NodeSet} nodes Nodes to insert.\n * @returns {module:engine/model/range~Range} Range spanning over inserted elements.\n */\nexport function insert( position, nodes ) {\n\tnodes = normalizeNodes( nodes );\n\n\t// We have to count offset before inserting nodes because they can get merged and we would get wrong offsets.\n\tconst offset = nodes.reduce( ( sum, node ) => sum + node.offsetSize, 0 );\n\tconst parent = position.parent;\n\n\t// Insertion might be in a text node, we should split it if that's the case.\n\t_splitNodeAtPosition( position );\n\tconst index = position.index;\n\n\t// Insert nodes at given index. After splitting we have a proper index and insertion is between nodes,\n\t// using basic `Element` API.\n\tparent.insertChildren( index, nodes );\n\n\t// Merge text nodes, if possible. Merging is needed only at points where inserted nodes \"touch\" \"old\" nodes.\n\t_mergeNodesAtIndex( parent, index + nodes.length );\n\t_mergeNodesAtIndex( parent, index );\n\n\treturn new Range( position, position.getShiftedBy( offset ) );\n}\n\n/**\n * Removed nodes in given range. Only {@link module:engine/model/range~Range#isFlat flat} ranges are accepted.\n *\n * @function module:engine/model/writer~writer.remove\n * @param {module:engine/model/range~Range} range Range containing nodes to remove.\n * @returns {Array.}\n */\nexport function remove( range ) {\n\tif ( !range.isFlat ) {\n\t\t/**\n\t\t * Trying to remove a range that starts and ends in different element.\n\t\t *\n\t\t * @error model-writer-remove-range-not-flat\n\t\t */\n\t\tthrow new CKEditorError( 'model-writer-remove-range-not-flat: ' +\n\t\t\t'Trying to remove a range that starts and ends in different element.' );\n\t}\n\n\tconst parent = range.start.parent;\n\n\t// Range may be inside text nodes, we have to split them if that's the case.\n\t_splitNodeAtPosition( range.start );\n\t_splitNodeAtPosition( range.end );\n\n\t// Remove the text nodes using basic `Element` API.\n\tconst removed = parent.removeChildren( range.start.index, range.end.index - range.start.index );\n\n\t// Merge text nodes, if possible. After some nodes were removed, node before and after removed range will be\n\t// touching at the position equal to the removed range beginning. We check merging possibility there.\n\t_mergeNodesAtIndex( parent, range.start.index );\n\n\treturn removed;\n}\n\n/**\n * Moves nodes in given range to given target position. Only {@link module:engine/model/range~Range#isFlat flat} ranges are accepted.\n *\n * @param {module:engine/model/range~Range} sourceRange Range containing nodes to move.\n * @param {module:engine/model/position~Position} targetPosition Position to which nodes should be moved.\n * @returns {module:engine/model/range~Range} Range containing moved nodes.\n */\nexport function move( sourceRange, targetPosition ) {\n\t/* jshint validthis:true */\n\tif ( !sourceRange.isFlat ) {\n\t\t/**\n\t\t * Trying to move a range that starts and ends in different element.\n\t\t *\n\t\t * @error model-writer-move-range-not-flat\n\t\t */\n\t\tthrow new CKEditorError( 'model-writer-move-range-not-flat: ' +\n\t\t\t'Trying to move a range that starts and ends in different element.' );\n\t}\n\n\tconst nodes = this.remove( sourceRange );\n\n\t// We have to fix `targetPosition` because model changed after nodes from `sourceRange` got removed and\n\t// that change might have an impact on `targetPosition`.\n\ttargetPosition = targetPosition._getTransformedByDeletion( sourceRange.start, sourceRange.end.offset - sourceRange.start.offset );\n\n\treturn this.insert( targetPosition, nodes );\n}\n\n/**\n * Sets given attribute on nodes in given range.\n *\n * @param {module:engine/model/range~Range} range Range containing nodes that should have the attribute set.\n * @param {String} key Key of attribute to set.\n * @param {*} value Attribute value.\n */\nexport function setAttribute( range, key, value ) {\n\t// Range might start or end in text nodes, so we have to split them.\n\t_splitNodeAtPosition( range.start );\n\t_splitNodeAtPosition( range.end );\n\n\t// Iterate over all items in the range.\n\tfor ( let item of range.getItems() ) {\n\t\t// Iterator will return `TextProxy` instances but we know that those text proxies will\n\t\t// always represent full text nodes (this is guaranteed thanks to splitting we did before).\n\t\t// So, we can operate on those text proxies' text nodes.\n\t\tlet node = item.is( 'textProxy' ) ? item.textNode : item;\n\n\t\tif ( value !== null ) {\n\t\t\tnode.setAttribute( key, value );\n\t\t} else {\n\t\t\tnode.removeAttribute( key );\n\t\t}\n\n\t\t// After attributes changing it may happen that some text nodes can be merged. Try to merge with previous node.\n\t\t_mergeNodesAtIndex( node.parent, node.index );\n\t}\n\n\t// Try to merge last changed node with it's previous sibling (not covered by the loop above).\n\t_mergeNodesAtIndex( range.end.parent, range.end.index );\n}\n\n/**\n * Removes given attribute from nodes in given range.\n *\n * @param {module:engine/model/range~Range} range Range containing nodes that should have the attribute removed.\n * @param {String} key Key of attribute to remove.\n */\nexport function removeAttribute( range, key ) {\n\t/* jshint validthis:true */\n\tthis.setAttribute( range, key, null );\n}\n\n/**\n * Normalizes given object or an array of objects to an array of {@link module:engine/model/node~Node nodes}. See\n * {@link module:engine/model/node~NodeSet NodeSet} for details on how normalization is performed.\n *\n * @param {module:engine/model/node~NodeSet} nodes Objects to normalize.\n * @returns {Array.} Normalized nodes.\n */\nexport function normalizeNodes( nodes ) {\n\tconst normalized = [];\n\n\tif ( !( nodes instanceof Array ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Convert instances of classes other than Node.\n\tfor ( let i = 0; i < nodes.length; i++ ) {\n\t\tif ( typeof nodes[ i ] == 'string' ) {\n\t\t\tnormalized.push( new Text( nodes[ i ] ) );\n\t\t} else if ( nodes[ i ] instanceof TextProxy ) {\n\t\t\tnormalized.push( new Text( nodes[ i ].data, nodes[ i ].getAttributes() ) );\n\t\t} else if ( nodes[ i ] instanceof DocumentFragment || nodes[ i ] instanceof NodeList ) {\n\t\t\tfor ( let child of nodes[ i ] ) {\n\t\t\t\tnormalized.push( child );\n\t\t\t}\n\t\t} else if ( nodes[ i ] instanceof Node ) {\n\t\t\tnormalized.push( nodes[ i ] );\n\t\t}\n\t\t// Skip unrecognized type.\n\t}\n\n\t// Merge text nodes.\n\tfor ( let i = 1; i < normalized.length; i++ ) {\n\t\tconst node = normalized[ i ];\n\t\tconst prev = normalized[ i - 1 ];\n\n\t\tif ( node instanceof Text && prev instanceof Text && _haveSameAttributes( node, prev ) ) {\n\t\t\t// Doing this instead changing prev.data because .data is readonly.\n\t\t\tnormalized.splice( i - 1, 2, new Text( prev.data + node.data, prev.getAttributes() ) );\n\t\t\ti--;\n\t\t}\n\t}\n\n\treturn normalized;\n}\n\n/**\n * Checks if nodes before and after given index in given element are {@link module:engine/model/text~Text text nodes} and\n * merges them into one node if they have same attributes.\n *\n * Merging is done by removing two text nodes and inserting a new text node containing data from both merged text nodes.\n *\n * @ignore\n * @private\n * @param {module:engine/model/element~Element} element Parent element of nodes to merge.\n * @param {Number} index Index between nodes to merge.\n */\nfunction _mergeNodesAtIndex( element, index ) {\n\tconst nodeBefore = element.getChild( index - 1 );\n\tconst nodeAfter = element.getChild( index );\n\n\t// Check if both of those nodes are text objects with same attributes.\n\tif ( nodeBefore && nodeAfter && nodeBefore.is( 'text' ) && nodeAfter.is( 'text' ) && _haveSameAttributes( nodeBefore, nodeAfter ) ) {\n\t\t// Append text of text node after index to the before one.\n\t\tconst mergedNode = new Text( nodeBefore.data + nodeAfter.data, nodeBefore.getAttributes() );\n\n\t\t// Remove separate text nodes.\n\t\telement.removeChildren( index - 1, 2 );\n\n\t\t// Insert merged text node.\n\t\telement.insertChildren( index - 1, mergedNode );\n\t}\n}\n\n/**\n * Checks if given position is in a text node, and if so, splits the text node in two text nodes, each of them\n * containing a part of original text node.\n *\n * @ignore\n * @private\n * @param {module:engine/model/position~Position} position Position at which node should be split.\n */\nfunction _splitNodeAtPosition( position ) {\n\tconst textNode = position.textNode;\n\tconst element = position.parent;\n\n\tif ( textNode ) {\n\t\tconst offsetDiff = position.offset - textNode.startOffset;\n\t\tconst index = textNode.index;\n\n\t\telement.removeChildren( index, 1 );\n\n\t\tconst firstPart = new Text( textNode.data.substr( 0, offsetDiff ), textNode.getAttributes() );\n\t\tconst secondPart = new Text( textNode.data.substr( offsetDiff ), textNode.getAttributes() );\n\n\t\telement.insertChildren( index, [ firstPart, secondPart ] );\n\t}\n}\n\n/**\n * Checks whether two given nodes have same attributes.\n *\n * @ignore\n * @private\n * @param {module:engine/model/node~Node} nodeA Node to check.\n * @param {module:engine/model/node~Node} nodeB Node to check.\n * @returns {Boolean} `true` if nodes have same attributes, `false` otherwise.\n */\nfunction _haveSameAttributes( nodeA, nodeB ) {\n\tconst iteratorA = nodeA.getAttributes();\n\tconst iteratorB = nodeB.getAttributes();\n\n\tfor ( let attr of iteratorA ) {\n\t\tif ( attr[ 1 ] !== nodeB.getAttribute( attr[ 0 ] ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\titeratorB.next();\n\t}\n\n\treturn iteratorB.next().done;\n}\n\n/**\n * Value that can be normalized to an array of {@link module:engine/model/node~Node nodes}.\n *\n * Non-arrays are normalized as follows:\n * * {@link module:engine/model/node~Node Node} is left as is,\n * * {@link module:engine/model/textproxy~TextProxy TextProxy} and `String` are normalized to {@link module:engine/model/text~Text Text},\n * * {@link module:engine/model/nodelist~NodeList NodeList} is normalized to an array containing all nodes that are in that node list,\n * * {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment} is normalized to an array containing all of it's\n * * children.\n *\n * Arrays are processed item by item like non-array values and flattened to one array. Normalization always results in\n * a flat array of {@link module:engine/model/node~Node nodes}. Consecutive text nodes (or items normalized to text nodes) will be\n * merged if they have same attributes.\n *\n * @typedef {module:engine/model/node~Node|module:engine/model/textproxy~TextProxy|String|\n * module:engine/model/nodelist~NodeList|module:engine/model/documentfragment~DocumentFragment|Iterable}\n * module:engine/model/node~NodeSet\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/writer.js\n// module id = 13\n// module chunks = 0","import isArrayLike from './isArrayLike';\nimport isObjectLike from './isObjectLike';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/isArrayLikeObject.js\n// module id = 14\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/isObject.js\n// module id = 15\n// module chunks = 0","import toFinite from './toFinite';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/toInteger.js\n// module id = 16\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/batch\n */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\n/**\n * `Batch` instance groups document changes ({@link module:engine/model/delta/delta~Delta deltas}). All deltas grouped in a single `Batch`\n * can be reverted together, so you can think about `Batch` as of a single undo step. If you want to extend given undo step you\n * can call another method on the same `Batch` object. If you want to create a separate undo step you can create a new `Batch`.\n *\n * For example to create two separate undo steps you can call:\n *\n *\t\tdoc.batch().insert( firstPosition, 'foo' );\n *\t\tdoc.batch().insert( secondPosition, 'bar' );\n *\n * To create a single undo step:\n *\n *\t\tconst batch = doc.batch();\n *\t\tbatch.insert( firstPosition, 'foo' );\n *\t\tbatch.insert( secondPosition, 'bar' );\n *\n * Note that all document modification methods (insert, remove, split, etc.) are chainable so you can shorten code to:\n *\n *\t\tdoc.batch().insert( firstPosition, 'foo' ).insert( secondPosition, 'bar' );\n */\nexport default class Batch {\n\t/**\n\t * Creates `Batch` instance. Not recommended to use directly, use {@link module:engine/model/document~Document#batch} instead.\n\t *\n\t * @param {module:engine/model/document~Document} document Document which this Batch changes.\n\t * @param {'transparent'|'default'} [type='default'] Type of the batch.\n\t */\n\tconstructor( document, type = 'default' ) {\n\t\t/**\n\t\t * Document which this batch changes.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/document~Document} module:engine/model/batch~Batch#document\n\t\t */\n\t\tthis.document = document;\n\n\t\t/**\n\t\t * Array of deltas which compose this batch.\n\t\t *\n\t\t * @readonly\n\t\t * @member {Array.} module:engine/model/batch~Batch#deltas\n\t\t */\n\t\tthis.deltas = [];\n\n\t\t/**\n\t\t * Type of the batch.\n\t\t *\n\t\t * Can be one of the following values:\n\t\t * * `'default'` - all \"normal\" batches, most commonly used type.\n\t\t * * `'transparent'` - batch that should be ignored by other features, i.e. initial batch or collaborative editing changes.\n\t\t *\n\t\t * @readonly\n\t\t * @member {'transparent'|'default'} module:engine/model/batch~Batch#type\n\t\t */\n\t\tthis.type = type;\n\t}\n\n\t/**\n\t * Returns this batch base version, which is equal to the base version of first delta in the batch.\n\t * If there are no deltas in the batch, it returns `null`.\n\t *\n\t * @readonly\n\t * @type {Number|null}\n\t */\n\tget baseVersion() {\n\t\treturn this.deltas.length > 0 ? this.deltas[ 0 ].baseVersion : null;\n\t}\n\n\t/**\n\t * Adds delta to the batch instance. All modification methods (insert, remove, split, etc.) use this method\n\t * to add created deltas.\n\t *\n\t * @param {module:engine/model/delta/delta~Delta} delta Delta to add.\n\t * @return {module:engine/model/delta/delta~Delta} Added delta.\n\t */\n\taddDelta( delta ) {\n\t\tdelta.batch = this;\n\t\tthis.deltas.push( delta );\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Gets an iterable collection of operations.\n\t *\n\t * @returns {Iterable.}\n\t */\n\t*getOperations() {\n\t\tfor ( let delta of this.deltas ) {\n\t\t\tyield* delta.operations;\n\t\t}\n\t}\n}\n\n/**\n * Function to register batch methods. To make code scalable `Batch` do not have modification\n * methods built in. They can be registered using this method.\n *\n * This method checks if there is no naming collision and throws `batch-register-taken` if the method name\n * is already taken.\n *\n * Besides that no magic happens here, the method is added to the `Batch` class prototype.\n *\n * For example:\n *\n *\t\tBatch.register( 'insert', function( position, nodes ) {\n *\t\t\t// You can use a class inheriting from `Delta` if that class should handle OT in a special way.\n *\t\t\tconst delta = new Delta();\n *\n *\t\t\t// Add delta to the Batch instance. It is important to add a delta to the batch before applying any operation.\n *\t\t\tthis.addDelta( delta );\n *\n *\t\t\t// Create operations which should be components of this delta.\n *\t\t\tconst operation = new InsertOperation( position, nodes, this.document.version );\n *\n *\t\t\t// Add operation to the delta. It is important to add operation before applying it.\n *\t\t\tdelta.addOperation( operation );\n *\n *\t\t\t// Remember to apply every operation, no magic, you need to do it manually.\n *\t\t\tthis.document.applyOperation( operation );\n *\n *\t\t\t// Make this method chainable.\n *\t\t\treturn this;\n *\t\t} );\n *\n * @method module:engine/model/batch~Batch.register\n * @param {String} name Method name.\n * @param {Function} creator Method body.\n */\nexport function register( name, creator ) {\n\tif ( Batch.prototype[ name ] ) {\n\t\t/**\n\t\t * This batch method name is already taken.\n\t\t *\n\t\t * @error batch-register-taken\n\t\t * @param {String} name\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'model-batch-register-taken: This batch method name is already taken.',\n\t\t\t{ name: name } );\n\t}\n\n\tBatch.prototype[ name ] = creator;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/batch.js\n// module id = 17\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/delta/deltafactory\n */\n\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\nimport OperationFactory from '../operation/operationfactory';\n\nconst deserializers = new Map();\n\n/**\n * A factory class for creating operations.\n *\n * Delta is a single, from the user action point of view, change in the editable document, like insert, split or\n * rename element. Delta is composed of operations, which are unit changes needed to be done to execute user action.\n *\n * Multiple deltas are grouped into a single {@link module:engine/model/batch~Batch}.\n */\nexport default class DeltaFactory {\n\t/**\n\t * Creates InsertDelta from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param {Object} json\n\t * @param {module:engine/model/document~Document} doc Document on which this delta will be applied.\n\t * @returns {module:engine/model/delta/insertdelta~InsertDelta}\n\t */\n\tstatic fromJSON( json, doc ) {\n\t\tif ( !deserializers.has( json.__className ) ) {\n\t\t\t/**\n\t\t\t * This delta has no defined deserializer.\n\t\t\t *\n\t\t\t * @error delta-fromjson-no-deserializer\n\t\t\t * @param {String} name\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'delta-fromjson-no-deserializer: This delta has no defined deserializer',\n\t\t\t\t{ name: json.__className }\n\t\t\t);\n\t\t}\n\n\t\tlet Delta = deserializers.get( json.__className );\n\n\t\tlet delta = new Delta();\n\n\t\tfor ( let operation of json.operations ) {\n\t\t\tdelta.addOperation( OperationFactory.fromJSON( operation, doc ) );\n\t\t}\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Registers a class for delta factory.\n\t *\n\t * @param {Function} Delta A delta class to register.\n\t */\n\tstatic register( Delta ) {\n\t\tdeserializers.set( Delta.className, Delta );\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/delta/deltafactory.js\n// module id = 18\n// module chunks = 0","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/last.js\n// module id = 19\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/delta/delta\n */\n\nimport clone from '@ckeditor/ckeditor5-utils/src/lib/lodash/clone';\nimport DeltaFactory from './deltafactory';\n\n/**\n * Base class for all deltas.\n *\n * Delta is a single, from the user action point of view, change in the editable document, like insert, split or\n * rename element. Delta is composed of operations, which are unit changes needed to be done to execute user action.\n *\n * Multiple deltas are grouped into a single {@link module:engine/model/batch~Batch}.\n */\nexport default class Delta {\n\t/**\n\t * Creates a delta instance.\n\t */\n\tconstructor() {\n\t\t/**\n\t\t * {@link module:engine/model/batch~Batch} which delta is a part of. This property is null by default and set by the\n\t\t * {@link module:engine/model/batch~Batch#addDelta} method.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/batch~Batch} module:engine/model/delta/delta~Delta#batch\n\t\t */\n\t\tthis.batch = null;\n\n\t\t/**\n\t\t * Array of operations which compose delta.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:engine/model/operation/operation~Operation[]} module:engine/model/delta/delta~Delta#operations\n\t\t */\n\t\tthis.operations = [];\n\t}\n\n\t/**\n\t * Returns delta base version which is equal to the base version of the first operation in delta. If there\n\t * are no operations in delta, returns `null`.\n\t *\n\t * @see module:engine/model/document~Document\n\t * @type {Number|null}\n\t */\n\tget baseVersion() {\n\t\tif ( this.operations.length > 0 ) {\n\t\t\treturn this.operations[ 0 ].baseVersion;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * @param {Number} baseVersion\n\t */\n\tset baseVersion( baseVersion ) {\n\t\tfor ( let operation of this.operations ) {\n\t\t\toperation.baseVersion = baseVersion++;\n\t\t}\n\t}\n\n\t/**\n\t * A class that will be used when creating reversed delta.\n\t *\n\t * @private\n\t * @type {Function}\n\t */\n\tget _reverseDeltaClass() {\n\t\treturn Delta;\n\t}\n\n\t/**\n\t * Delta type.\n\t *\n\t * @readonly\n\t * @member {String} #type\n\t */\n\n\t/**\n\t * Add operation to the delta.\n\t *\n\t * @param {module:engine/model/operation/operation~Operation} operation Operation instance.\n\t */\n\taddOperation( operation ) {\n\t\toperation.delta = this;\n\t\tthis.operations.push( operation );\n\n\t\treturn operation;\n\t}\n\n\t/**\n\t * Creates and returns a delta that has the same parameters as this delta.\n\t *\n\t * @returns {module:engine/model/delta/delta~Delta} Clone of this delta.\n\t */\n\tclone() {\n\t\tlet delta = new this.constructor();\n\n\t\tfor ( let op of this.operations ) {\n\t\t\tdelta.addOperation( op.clone() );\n\t\t}\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Creates and returns a reverse delta. Reverse delta when executed right after the original delta will bring back\n\t * tree model state to the point before the original delta execution. In other words, it reverses changes done\n\t * by the original delta.\n\t *\n\t * Keep in mind that tree model state may change since executing the original delta, so reverse delta may be \"outdated\".\n\t * In that case you will need to {@link module:engine/model/delta/transform~transform} it by all deltas that were executed after\n\t * the original delta.\n\t *\n\t * @returns {module:engine/model/delta/delta~Delta} Reversed delta.\n\t */\n\tgetReversed() {\n\t\tlet delta = new this._reverseDeltaClass();\n\n\t\tfor ( let op of this.operations ) {\n\t\t\tdelta.addOperation( op.getReversed() );\n\t\t}\n\n\t\tdelta.operations.reverse();\n\n\t\tfor ( let i = 0; i < delta.operations.length; i++ ) {\n\t\t\tdelta.operations[ i ].baseVersion = this.operations[ this.operations.length - 1 ].baseVersion + i + 1;\n\t\t}\n\n\t\treturn delta;\n\t}\n\n\t/**\n\t * Custom toJSON method to make deltas serializable.\n\t *\n\t * @returns {Object} Clone of this delta with added class name.\n\t */\n\ttoJSON() {\n\t\tlet json = clone( this );\n\n\t\tjson.__className = this.constructor.className;\n\n\t\t// Remove parent batch to avoid circular dependencies.\n\t\tdelete json.batch;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Delta class name. Used by {@link #toJSON} method for serialization and\n\t * {@link module:engine/model/delta/deltafactory~DeltaFactory.fromJSON} during deserialization.\n\t *\n\t * @type {String}\n\t * @readonly\n\t */\n\tstatic get className() {\n\t\treturn 'engine.model.delta.Delta';\n\t}\n\n\t/**\n\t * Delta priority. Used in {@link module:engine/model/delta/transform~transform delta transformations}. Delta with the higher\n\t * priority will be treated as more important when resolving transformation conflicts. If deltas have same\n\t * priority, other factors will be used to determine which delta is more important.\n\t *\n\t * @private\n\t * @type {Number}\n\t */\n\tstatic get _priority() {\n\t\treturn 0;\n\t}\n}\n\nDeltaFactory.register( Delta );\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/delta/delta.js\n// module id = 20\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/element\n */\n\nimport Node from './node';\nimport Text from './text';\nimport objectToMap from '@ckeditor/ckeditor5-utils/src/objecttomap';\nimport isIterable from '@ckeditor/ckeditor5-utils/src/isiterable';\nimport isPlainObject from '@ckeditor/ckeditor5-utils/src/lib/lodash/isPlainObject';\nimport Matcher from './matcher';\n\n/**\n * View element.\n *\n * Editing engine does not define fixed HTML DTD. This is why the type of the {@link module:engine/view/element~Element} need to\n * be defined by the feature developer. Creating an element you should use {@link module:engine/view/containerelement~ContainerElement}\n * class, {@link module:engine/view/attributeelement~AttributeElement} class or {@link module:engine/view/emptyelement~EmptyElement} class.\n *\n * Note that for view elements which are not created from model, like elements from mutations, paste or\n * {@link module:engine/controller/datacontroller~DataController#set data.set} it is not possible to define the type of the element, so\n * these will be instances of the {@link module:engine/view/element~Element}.\n *\n * @extends module:engine/view/node~Node\n */\nexport default class Element extends Node {\n\t/**\n\t * Creates a view element.\n\t *\n\t * Attributes can be passed in various formats:\n\t *\n\t *\t\tnew Element( 'div', { 'class': 'editor', 'contentEditable': 'true' } ); // object\n\t *\t\tnew Element( 'div', [ [ 'class', 'editor' ], [ 'contentEditable', 'true' ] ] ); // map-like iterator\n\t *\t\tnew Element( 'div', mapOfAttributes ); // map\n\t *\n\t * @param {String} name Node name.\n\t * @param {Object|Iterable} [attrs] Collection of attributes.\n\t * @param {module:engine/view/node~Node|Iterable.} [children]\n\t * List of nodes to be inserted into created element.\n\t */\n\tconstructor( name, attrs, children ) {\n\t\tsuper();\n\n\t\t/**\n\t\t * Name of the element.\n\t\t *\n\t\t * @readonly\n\t\t * @member {String}\n\t\t */\n\t\tthis.name = name;\n\n\t\t/**\n\t\t * Map of attributes, where attributes names are keys and attributes values are values.\n\t\t *\n\t\t * @protected\n\t\t * @member {Map} #_attrs\n\t\t */\n\t\tif ( isPlainObject( attrs ) ) {\n\t\t\tthis._attrs = objectToMap( attrs );\n\t\t} else {\n\t\t\tthis._attrs = new Map( attrs );\n\t\t}\n\n\t\t/**\n\t\t * Array of child nodes.\n\t\t *\n\t\t * @protected\n\t\t * @member {Array.}\n\t\t */\n\t\tthis._children = [];\n\n\t\tif ( children ) {\n\t\t\tthis.insertChildren( 0, children );\n\t\t}\n\n\t\t/**\n\t\t * Set of classes associated with element instance.\n\t\t *\n\t\t * @protected\n\t\t * @member {Set}\n\t\t */\n\t\tthis._classes = new Set();\n\n\t\tif ( this._attrs.has( 'class' ) ) {\n\t\t\t// Remove class attribute and handle it by class set.\n\t\t\tconst classString = this._attrs.get( 'class' );\n\t\t\tparseClasses( this._classes, classString );\n\t\t\tthis._attrs.delete( 'class' );\n\t\t}\n\n\t\t/**\n\t\t * Map of styles.\n\t\t *\n\t\t * @protected\n\t\t * @member {Set} module:engine/view/element~Element#_styles\n\t\t */\n\t\tthis._styles = new Map();\n\n\t\tif ( this._attrs.has( 'style' ) ) {\n\t\t\t// Remove style attribute and handle it by styles map.\n\t\t\tparseInlineStyles( this._styles, this._attrs.get( 'style' ) );\n\t\t\tthis._attrs.delete( 'style' );\n\t\t}\n\n\t\t/**\n\t\t * Map of custom properties.\n\t\t * Custom properties can be added to element instance, will be cloned but not rendered into DOM.\n\t\t *\n\t\t * @protected\n\t\t * @memeber {Map}\n\t\t */\n\t\tthis._customProperties = new Map();\n\t}\n\n\t/**\n\t * Number of element's children.\n\t *\n\t * @readonly\n\t * @type {Number}\n\t */\n\tget childCount() {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this element, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isEmpty() {\n\t\treturn this._children.length === 0;\n\t}\n\n\t/**\n\t * Checks whether given view tree object is of given type.\n\t *\n\t * Read more in {@link module:engine/view/node~Node#is}.\n\t *\n\t * @param {String} type\n\t * @param {String} [name] Element name.\n\t * @returns {Boolean}\n\t */\n\tis( type, name = null ) {\n\t\tif ( !name ) {\n\t\t\treturn type == 'element' || type == this.name;\n\t\t} else {\n\t\t\treturn type == 'element' && name == this.name;\n\t\t}\n\t}\n\n\t/**\n\t * Clones provided element.\n\t *\n\t * @param {Boolean} deep If set to `true` clones element and all its children recursively. When set to `false`,\n\t * element will be cloned without any children.\n\t * @returns {module:engine/view/element~Element} Clone of this element.\n\t */\n\tclone( deep ) {\n\t\tconst childrenClone = [];\n\n\t\tif ( deep ) {\n\t\t\tfor ( let child of this.getChildren() ) {\n\t\t\t\tchildrenClone.push( child.clone( deep ) );\n\t\t\t}\n\t\t}\n\n\t\t// ContainerElement and AttributeElement should be also cloned properly.\n\t\tconst cloned = new this.constructor( this.name, this._attrs, childrenClone );\n\n\t\t// Classes and styles are cloned separately - this solution is faster than adding them back to attributes and\n\t\t// parse once again in constructor.\n\t\tcloned._classes = new Set( this._classes );\n\t\tcloned._styles = new Map( this._styles );\n\n\t\t// Clone custom properties.\n\t\tcloned._customProperties = new Map( this._customProperties );\n\n\t\t// Clone filler offset method.\n\t\tcloned.getFillerOffset = this.getFillerOffset;\n\n\t\treturn cloned;\n\t}\n\n\t/**\n\t * {@link module:engine/view/element~Element#insertChildren Insert} a child node or a list of child nodes at the end of this node and sets\n\t * the parent of these nodes to this element.\n\t *\n\t * @fires module:engine/view/node~Node#change\n\t * @param {module:engine/view/node~Node|Iterable.} nodes Node or the list of nodes to be inserted.\n\t * @returns {Number} Number of appended nodes.\n\t */\n\tappendChildren( nodes ) {\n\t\treturn this.insertChildren( this.childCount, nodes );\n\t}\n\n\t/**\n\t * Gets child at the given index.\n\t *\n\t * @param {Number} index Index of child.\n\t * @returns {module:engine/view/node~Node} Child node.\n\t */\n\tgetChild( index ) {\n\t\treturn this._children[ index ];\n\t}\n\n\t/**\n\t * Gets index of the given child node. Returns `-1` if child node is not found.\n\t *\n\t * @param {module:engine/view/node~Node} node Child node.\n\t * @returns {Number} Index of the child node.\n\t */\n\tgetChildIndex( node ) {\n\t\treturn this._children.indexOf( node );\n\t}\n\n\t/**\n\t * Gets child nodes iterator.\n\t *\n\t * @returns {Iterable.} Child nodes iterator.\n\t */\n\tgetChildren() {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns an iterator that contains the keys for attributes. Order of inserting attributes is not preserved.\n\t *\n\t * @returns {Iterator.} Keys for attributes.\n\t */\n\t*getAttributeKeys() {\n\t\tif ( this._classes.size > 0 ) {\n\t\t\tyield 'class';\n\t\t}\n\n\t\tif ( this._styles.size > 0 ) {\n\t\t\tyield 'style';\n\t\t}\n\n\t\t// This is not an optimal solution because of https://github.com/ckeditor/ckeditor5-engine/issues/454.\n\t\t// It can be simplified to `yield* this._attrs.keys();`.\n\t\tfor ( let key of this._attrs.keys() ) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t/**\n\t * Returns iterator that iterates over this element's attributes.\n\t *\n\t * Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value.\n\t * This format is accepted by native `Map` object and also can be passed in `Node` constructor.\n\t *\n\t * @returns {Iterable.<*>}\n\t */\n\t*getAttributes() {\n\t\tyield* this._attrs.entries();\n\n\t\tif ( this._classes.size > 0 ) {\n\t\t\tyield [ 'class', this.getAttribute( 'class' ) ];\n\t\t}\n\n\t\tif ( this._styles.size > 0 ) {\n\t\t\tyield [ 'style', this.getAttribute( 'style' ) ];\n\t\t}\n\t}\n\n\t/**\n\t * Gets attribute by key. If attribute is not present - returns undefined.\n\t *\n\t * @param {String} key Attribute key.\n\t * @returns {String|undefined} Attribute value.\n\t */\n\tgetAttribute( key ) {\n\t\tif ( key == 'class' ) {\n\t\t\tif ( this._classes.size > 0 ) {\n\t\t\t\treturn [ ...this._classes ].join( ' ' );\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( key == 'style' ) {\n\t\t\tif ( this._styles.size > 0 ) {\n\t\t\t\tlet styleString = '';\n\n\t\t\t\tfor ( let [ property, value ] of this._styles ) {\n\t\t\t\t\tstyleString += `${ property }:${ value };`;\n\t\t\t\t}\n\n\t\t\t\treturn styleString;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn this._attrs.get( key );\n\t}\n\n\t/**\n\t * Returns a boolean indicating whether an attribute with the specified key exists in the element.\n\t *\n\t * @param {String} key Attribute key.\n\t * @returns {Boolean} `true` if attribute with the specified key exists in the element, false otherwise.\n\t */\n\thasAttribute( key ) {\n\t\tif ( key == 'class' ) {\n\t\t\treturn this._classes.size > 0;\n\t\t}\n\n\t\tif ( key == 'style' ) {\n\t\t\treturn this._styles.size > 0;\n\t\t}\n\n\t\treturn this._attrs.has( key );\n\t}\n\n\t/**\n\t * Adds or overwrite attribute with a specified key and value.\n\t *\n\t * @param {String} key Attribute key.\n\t * @param {String} value Attribute value.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tsetAttribute( key, value ) {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tif ( key == 'class' ) {\n\t\t\tparseClasses( this._classes, value );\n\t\t} else if ( key == 'style' ) {\n\t\t\tparseInlineStyles( this._styles, value );\n\t\t} else {\n\t\t\tthis._attrs.set( key, value );\n\t\t}\n\t}\n\n\t/**\n\t * Inserts a child node or a list of child nodes on the given index and sets the parent of these nodes to\n\t * this element.\n\t *\n\t * @param {Number} index Position where nodes should be inserted.\n\t * @param {module:engine/view/node~Node|Iterable.} nodes Node or the list of nodes to be inserted.\n\t * @fires module:engine/view/node~Node#change\n\t * @returns {Number} Number of inserted nodes.\n\t */\n\tinsertChildren( index, nodes ) {\n\t\tthis._fireChange( 'children', this );\n\t\tlet count = 0;\n\n\t\tnodes = normalize( nodes );\n\n\t\tfor ( let node of nodes ) {\n\t\t\tnode.parent = this;\n\n\t\t\tthis._children.splice( index, 0, node );\n\t\t\tindex++;\n\t\t\tcount++;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t/**\n\t * Removes attribute from the element.\n\t *\n\t * @param {String} key Attribute key.\n\t * @returns {Boolean} Returns true if an attribute existed and has been removed.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveAttribute( key ) {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\t// Remove class attribute.\n\t\tif ( key == 'class' ) {\n\t\t\tif ( this._classes.size > 0 ) {\n\t\t\t\tthis._classes.clear();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove style attribute.\n\t\tif ( key == 'style' ) {\n\t\t\tif ( this._styles.size > 0 ) {\n\t\t\t\tthis._styles.clear();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove other attributes.\n\t\treturn this._attrs.delete( key );\n\t}\n\n\t/**\n\t * Removes number of child nodes starting at the given index and set the parent of these nodes to `null`.\n\t *\n\t * @param {Number} index Number of the first node to remove.\n\t * @param {Number} [howMany=1] Number of nodes to remove.\n\t * @returns {Array.} The array of removed nodes.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveChildren( index, howMany = 1 ) {\n\t\tthis._fireChange( 'children', this );\n\n\t\tfor ( let i = index; i < index + howMany; i++ ) {\n\t\t\tthis._children[ i ].parent = null;\n\t\t}\n\n\t\treturn this._children.splice( index, howMany );\n\t}\n\n\t/**\n\t * Checks if this element is similar to other element.\n\t * Both elements should have the same name and attributes to be considered as similar. Two similar elements\n\t * can contain different set of children nodes.\n\t *\n\t * @param {module:engine/view/element~Element} otherElement\n\t * @returns {Boolean}\n\t */\n\tisSimilar( otherElement ) {\n\t\tif ( !( otherElement instanceof Element ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If exactly the same Element is provided - return true immediately.\n\t\tif ( this === otherElement ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check element name.\n\t\tif ( this.name != otherElement.name ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check number of attributes, classes and styles.\n\t\tif ( this._attrs.size !== otherElement._attrs.size || this._classes.size !== otherElement._classes.size ||\n\t\t\tthis._styles.size !== otherElement._styles.size ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if attributes are the same.\n\t\tfor ( let [ key, value ] of this._attrs ) {\n\t\t\tif ( !otherElement._attrs.has( key ) || otherElement._attrs.get( key ) !== value ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if classes are the same.\n\t\tfor ( let className of this._classes ) {\n\t\t\tif ( !otherElement._classes.has( className ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if styles are the same.\n\t\tfor ( let [ property, value ] of this._styles ) {\n\t\t\tif ( !otherElement._styles.has( property ) || otherElement._styles.get( property ) !== value ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Adds specified class.\n\t *\n\t *\t\telement.addClass( 'foo' ); // Adds 'foo' class.\n\t *\t\telement.addClass( 'foo', 'bar' ); // Adds 'foo' and 'bar' classes.\n\t *\n\t * @param {...String} className\n\t * @fires module:engine/view/node~Node#change\n\t */\n\taddClass( ...className ) {\n\t\tthis._fireChange( 'attributes', this );\n\t\tclassName.forEach( name => this._classes.add( name ) );\n\t}\n\n\t/**\n\t * Removes specified class.\n\t *\n \t *\t\telement.removeClass( 'foo' ); // Removes 'foo' class.\n\t *\t\telement.removeClass( 'foo', 'bar' ); // Removes both 'foo' and 'bar' classes.\n\t *\n\t * @param {...String} className\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveClass( ...className ) {\n\t\tthis._fireChange( 'attributes', this );\n\t\tclassName.forEach( name => this._classes.delete( name ) );\n\t}\n\n\t/**\n\t * Returns true if class is present.\n\t * If more then one class is provided - returns true only when all classes are present.\n\t *\n\t *\t\telement.hasClass( 'foo' ); // Returns true if 'foo' class is present.\n\t *\t\telement.hasClass( 'foo', 'bar' ); // Returns true if 'foo' and 'bar' classes are both present.\n\t *\n\t * @param {...String} className\n\t */\n\thasClass( ...className ) {\n\t\tfor ( let name of className ) {\n\t\t\tif ( !this._classes.has( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns iterator that contains all class names.\n\t *\n\t * @returns {Iterator.}\n\t */\n\tgetClassNames() {\n\t\treturn this._classes.keys();\n\t}\n\n\t/**\n\t * Adds style to the element.\n\t *\n\t *\t\telement.setStyle( 'color', 'red' );\n\t *\t\telement.setStyle( {\n\t *\t\t\tcolor: 'red',\n\t *\t\t\tposition: 'fixed'\n\t *\t\t} );\n\t *\n\t * @param {String|Object} property Property name or object with key - value pairs.\n\t * @param {String} [value] Value to set. This parameter is ignored if object is provided as the first parameter.\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tsetStyle( property, value ) {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tif ( isPlainObject( property ) ) {\n\t\t\tconst keys = Object.keys( property );\n\n\t\t\tfor ( let key of keys ) {\n\t\t\t\tthis._styles.set( key, property[ key ] );\n\t\t\t}\n\t\t} else {\n\t\t\tthis._styles.set( property, value );\n\t\t}\n\t}\n\n\t/**\n\t * Returns style value for given property.\n\t * Undefined is returned if style does not exist.\n\t *\n\t * @param {String} property\n\t * @returns {String|undefined}\n\t */\n\tgetStyle( property ) {\n\t\treturn this._styles.get( property );\n\t}\n\n\t/**\n\t * Returns iterator that contains all style names.\n\t *\n\t * @returns {Iterator.}\n\t */\n\tgetStyleNames() {\n\t\treturn this._styles.keys();\n\t}\n\n\t/**\n\t * Returns true if style keys are present.\n\t * If more then one style property is provided - returns true only when all properties are present.\n\t *\n\t *\t\telement.hasStyle( 'color' ); // Returns true if 'border-top' style is present.\n\t *\t\telement.hasStyle( 'color', 'border-top' ); // Returns true if 'color' and 'border-top' styles are both present.\n\t *\n\t * @param {...String} property\n\t */\n\thasStyle( ...property ) {\n\t\tfor ( let name of property ) {\n\t\t\tif ( !this._styles.has( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Removes specified style.\n\t *\n\t *\t\telement.removeStyle( 'color' ); // Removes 'color' style.\n\t *\t\telement.removeStyle( 'color', 'border-top' ); // Removes both 'color' and 'border-top' styles.\n\t *\n\t * @param {...String} property\n\t * @fires module:engine/view/node~Node#change\n\t */\n\tremoveStyle( ...property ) {\n\t\tthis._fireChange( 'attributes', this );\n\t\tproperty.forEach( name => this._styles.delete( name ) );\n\t}\n\n\t/**\n\t * Returns ancestor element that match specified pattern.\n\t * Provided patterns should be compatible with {@link module:engine/view/matcher~Matcher Matcher} as it is used internally.\n\t *\n\t * @see module:engine/view/matcher~Matcher\n\t * @param {Object|String|RegExp|Function} patterns Patterns used to match correct ancestor.\n\t * See {@link module:engine/view/matcher~Matcher}.\n\t * @returns {module:engine/view/element~Element|null} Found element or `null` if no matching ancestor was found.\n\t */\n\tfindAncestor( ...patterns ) {\n\t\tconst matcher = new Matcher( ...patterns );\n\t\tlet parent = this.parent;\n\n\t\twhile ( parent ) {\n\t\t\tif ( matcher.match( parent ) ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets a custom property. Unlike attributes, custom properties are not rendered to the DOM,\n\t * so they can be used to add special data to elements.\n\t *\n\t * @param {String|Symbol} key\n\t * @param {*} value\n\t */\n\tsetCustomProperty( key, value ) {\n\t\tthis._customProperties.set( key, value );\n\t}\n\n\t/**\n\t * Returns the custom property value for the given key.\n\t *\n\t * @param {String|Symbol} key\n\t * @returns {*}\n\t */\n\tgetCustomProperty( key ) {\n\t\treturn this._customProperties.get( key );\n\t}\n\n\t/**\n\t * Removes the custom property stored under the given key.\n\t *\n\t * @param {String|Symbol} key\n\t * @returns {Boolean} Returns true if property was removed.\n\t */\n\tremoveCustomProperty( key ) {\n\t\treturn this._customProperties.delete( key );\n\t}\n\n\t/**\n\t * Returns an iterator which iterates over this element's custom properties.\n\t * Iterator provides [key, value] pair for each stored property.\n\t *\n\t * @returns {Iterable.<*>}\n\t */\n\t*getCustomProperties() {\n\t\tyield* this._customProperties.entries();\n\t}\n\n\t/**\n\t * Returns block {@link module:engine/view/filler filler} offset or `null` if block filler is not needed.\n\t *\n\t * @abstract\n\t * @method module:engine/view/element~Element#getFillerOffset\n\t */\n}\n\n// Parses inline styles and puts property - value pairs into styles map.\n// Styles map is cleared before insertion.\n//\n// @param {Map.} stylesMap Map to insert parsed properties and values.\n// @param {String} stylesString Styles to parse.\nfunction parseInlineStyles( stylesMap, stylesString ) {\n\tconst regex = /\\s*([^:;\\s]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g;\n\tlet matchStyle;\n\tstylesMap.clear();\n\n\twhile ( ( matchStyle = regex.exec( stylesString ) ) !== null ) {\n\t\tstylesMap.set( matchStyle[ 1 ], matchStyle[ 2 ].trim() );\n\t}\n}\n\n// Parses class attribute and puts all classes into classes set.\n// Classes set s cleared before insertion.\n//\n// @param {Set.} classesSet Set to insert parsed classes.\n// @param {String} classesString String with classes to parse.\nfunction parseClasses( classesSet, classesString ) {\n\tconst classArray = classesString.split( /\\s+/ );\n\tclassesSet.clear();\n\tclassArray.forEach( name => classesSet.add( name ) );\n}\n\n// Converts strings to Text and non-iterables to arrays.\n//\n// @param {String|module:engine/view/node~Node|Iterable.}\n// @return {Iterable.}\nfunction normalize( nodes ) {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes ).map( ( node ) => typeof node == 'string' ? new Text( node ) : node );\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/view/element.js\n// module id = 21\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * Set of utils related to keyboard support.\n *\n * @module utils/keyboard\n */\n\nimport CKEditorError from './ckeditorerror';\nimport env from './env';\n\n/**\n * Object with `keyName => keyCode` pairs for a set of known keys.\n *\n * Contains:\n *\n * * `a-z`,\n * * `0-9`,\n * * `f1-f12`,\n * * `arrow(left|up|right|bottom)`,\n * * `backspace`, `delete`, `enter`, `esc`, `tab`,\n * * `ctrl`, `cmd`, `shift`, `alt`.\n */\nexport const keyCodes = generateKnownKeyCodes();\n\n/**\n * Converts a key name or a {@link module:utils/keyboard~KeystrokeInfo keystroke info} into a key code.\n *\n * Note: Key names are matched with {@link module:utils/keyboard~keyCodes} in a case-insensitive way.\n *\n * @param {String|module:utils/keyboard~KeystrokeInfo} Key name (see {@link module:utils/keyboard~keyCodes})\n * or a keystroke data object.\n * @returns {Number} Key or keystroke code.\n */\nexport function getCode( key ) {\n\tlet keyCode;\n\n\tif ( typeof key == 'string' ) {\n\t\tkeyCode = keyCodes[ key.toLowerCase() ];\n\n\t\tif ( !keyCode ) {\n\t\t\t/**\n\t\t\t * Unknown key name. Only key names contained by the {@link module:utils/keyboard~keyCodes} can be used.\n\t\t\t *\n\t\t\t * @errror keyboard-unknown-key\n\t\t\t * @param {String} key\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'keyboard-unknown-key: Unknown key name.', { key } );\n\t\t}\n\t} else {\n\t\tkeyCode = key.keyCode +\n\t\t\t( key.altKey ? keyCodes.alt : 0 ) +\n\t\t\t( key.ctrlKey ? keyCodes.ctrl : 0 ) +\n\t\t\t( key.shiftKey ? keyCodes.shift : 0 );\n\t}\n\n\treturn keyCode;\n}\n\n/**\n * Parses keystroke and returns a keystroke code that will match the code returned by\n * link {@link module:utils/keyboard.getCode} for a corresponding {@link module:utils/keyboard~KeystrokeInfo keystroke info}.\n *\n * The keystroke can be passed in two formats:\n *\n * * as a single string – e.g. `ctrl + A`,\n * * as an array of {@link module:utils/keyboard~keyCodes known key names} and key codes – e.g.:\n * * `[ 'ctrl', 32 ]` (ctrl + space),\n * * `[ 'ctrl', 'a' ]` (ctrl + A).\n *\n * Note: Key names are matched with {@link module:utils/keyboard~keyCodes} in a case-insensitive way.\n *\n * Note: Only keystrokes with a single non-modifier key are supported (e.g. `ctrl+A` is OK, but `ctrl+A+B` is not).\n *\n * @param {String|Array.} keystroke Keystroke definition.\n * @returns {Number} Keystroke code.\n */\nexport function parseKeystroke( keystroke ) {\n\tif ( typeof keystroke == 'string' ) {\n\t\tkeystroke = splitKeystrokeText( keystroke );\n\t}\n\n\treturn keystroke\n\t\t.map( key => ( typeof key == 'string' ) ? getCode( key ) : key )\n\t\t.reduce( ( key, sum ) => sum + key, 0 );\n}\n\n/**\n * It translates any keystroke string text like `\"CTRL+A\"` to an\n * environment–specific keystroke, i.e. `\"⌘A\"` on Mac OSX.\n *\n * @param {String} keystroke Keystroke text.\n * @returns {String} Keystroke text specific for the environment.\n */\nexport function getEnvKeystrokeText( keystroke ) {\n\tconst split = splitKeystrokeText( keystroke );\n\n\tif ( env.mac ) {\n\t\tif ( split[ 0 ].toLowerCase() == 'ctrl' ) {\n\t\t\treturn '⌘' + ( split[ 1 ] || '' );\n\t\t}\n\t}\n\n\treturn keystroke;\n}\n\nfunction generateKnownKeyCodes() {\n\tconst keyCodes = {\n\t\tarrowleft: 37,\n\t\tarrowup: 38,\n\t\tarrowright: 39,\n\t\tarrowdown: 40,\n\t\tbackspace: 8,\n\t\tdelete: 46,\n\t\tenter: 13,\n\t\tesc: 27,\n\t\ttab: 9,\n\n\t\t// The idea about these numbers is that they do not collide with any real key codes, so we can use them\n\t\t// like bit masks.\n\t\tctrl: 0x110000,\n\t\t// Has the same code as ctrl, because their behaviour should be unified across the editor.\n\t\t// See http://ckeditor.github.io/editor-recommendations/general-policies#ctrl-vs-cmd\n\t\tcmd: 0x110000,\n\t\tshift: 0x220000,\n\t\talt: 0x440000\n\t};\n\n\t// a-z\n\tfor ( let code = 65; code <= 90; code++ ) {\n\t\tconst letter = String.fromCharCode( code );\n\n\t\tkeyCodes[ letter.toLowerCase() ] = code;\n\t}\n\n\t// 0-9\n\tfor ( let code = 48; code <= 57; code++ ) {\n\t\tkeyCodes[ code - 48 ] = code;\n\t}\n\n\t// F1-F12\n\tfor ( let code = 112; code <= 123; code++ ) {\n\t\tkeyCodes[ 'f' + ( code - 111 ) ] = code;\n\t}\n\n\treturn keyCodes;\n}\n\nfunction splitKeystrokeText( keystroke ) {\n\treturn keystroke.split( /\\s*\\+\\s*/ );\n}\n\n/**\n * Information about a keystroke.\n *\n * @interface module:utils/keyboard~KeystrokeInfo\n */\n\n/**\n * The [key code](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode).\n *\n * @member {Number} module:utils/keyboard~KeystrokeInfo#keyCode\n */\n\n/**\n * Whether the Alt modifier was pressed.\n *\n * @member {Bolean} module:utils/keyboard~KeystrokeInfo#altKey\n */\n\n/**\n * Whether the Ctrl or Cmd modifier was pressed.\n *\n * @member {Bolean} module:utils/keyboard~KeystrokeInfo#ctrlKey\n */\n\n/**\n * Whether the Shift modifier was pressed.\n *\n * @member {Bolean} module:utils/keyboard~KeystrokeInfo#shiftKey\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/keyboard.js\n// module id = 22\n// module chunks = 0","import arrayPush from './_arrayPush';\nimport isFlattenable from './_isFlattenable';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/_baseFlatten.js\n// module id = 23\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/text\n */\n\nimport Node from './node';\n\n/**\n * Model text node. Type of {@link module:engine/model/node~Node node} that contains {@link module:engine/model/text~Text#data text data}.\n *\n * **Important:** see {@link module:engine/model/node~Node} to read about restrictions using `Text` and `Node` API.\n *\n * **Note:** keep in mind that `Text` instances might indirectly got removed from model tree when model is changed.\n * This happens when {@link module:engine/model/writer~writer model writer} is used to change model and the text node is merged with\n * another text node. Then, both text nodes are removed and a new text node is inserted into the model. Because of\n * this behavior, keeping references to `Text` is not recommended. Instead, consider creating\n * {@link module:engine/model/liveposition~LivePosition live position} placed before the text node.\n */\nexport default class Text extends Node {\n\t/**\n\t * Creates a text node.\n\t *\n\t * @param {String} data Node's text.\n\t * @param {Object} [attrs] Node's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t */\n\tconstructor( data, attrs ) {\n\t\tsuper( attrs );\n\n\t\t/**\n\t\t * Text data contained in this text node.\n\t\t *\n\t\t * @type {String}\n\t\t */\n\t\tthis.data = data || '';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tget offsetSize() {\n\t\treturn this.data.length;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tis( type ) {\n\t\treturn type == 'text';\n\t}\n\n\t/**\n\t * Creates a copy of this text node and returns it. Created text node has same text data and attributes as original text node.\n\t */\n\tclone() {\n\t\treturn new Text( this.data, this.getAttributes() );\n\t}\n\n\t/**\n\t * Converts `Text` instance to plain object and returns it.\n\t *\n\t * @returns {Object} `Text` instance converted to plain object.\n\t */\n\ttoJSON() {\n\t\tlet json = super.toJSON();\n\n\t\tjson.data = this.data;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates a `Text` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param {Object} json Plain object to be converted to `Text`.\n\t * @returns {module:engine/model/text~Text} `Text` instance created using given plain object.\n\t */\n\tstatic fromJSON( json ) {\n\t\treturn new Text( json.data, json.attributes );\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/text.js\n// module id = 24\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/position\n */\n\nimport TreeWalker from './treewalker';\n\nimport compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport EditableElement from './editableelement';\n\n/**\n * Position in the tree. Position is always located before or after a node.\n */\nexport default class Position {\n\t/**\n\t * Creates a position.\n\t *\n\t * @param {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment} parent Position parent.\n\t * @param {Number} offset Position offset.\n\t */\n\tconstructor( parent, offset ) {\n\t\t/**\n\t\t * Position parent.\n\t\t *\n\t\t * @member {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment}\n\t\t * module:engine/view/position~Position#parent\n\t\t */\n\t\tthis.parent = parent;\n\n\t\t/**\n\t\t * Position offset.\n\t\t *\n\t\t * @member {Number} module:engine/view/position~Position#offset\n\t\t */\n\t\tthis.offset = offset;\n\t}\n\n\t/**\n\t * Node directly after the position. Equals `null` when there is no node after position or position is located\n\t * inside text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/view/node~Node|null}\n\t */\n\tget nodeAfter() {\n\t\tif ( this.parent.is( 'text' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.parent.getChild( this.offset ) || null;\n\t}\n\n\t/**\n\t * Node directly before the position. Equals `null` when there is no node before position or position is located\n\t * inside text node.\n\t *\n\t * @readonly\n\t * @type {module:engine/view/node~Node|null}\n\t */\n\tget nodeBefore() {\n\t\tif ( this.parent.is( 'text' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.parent.getChild( this.offset - 1 ) || null;\n\t}\n\n\t/**\n\t * Is `true` if position is at the beginning of its {@link module:engine/view/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtStart() {\n\t\treturn this.offset === 0;\n\t}\n\n\t/**\n\t * Is `true` if position is at the end of its {@link module:engine/view/position~Position#parent parent}, `false` otherwise.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tget isAtEnd() {\n\t\tconst endOffset = this.parent.is( 'text' ) ? this.parent.data.length : this.parent.childCount;\n\n\t\treturn this.offset === endOffset;\n\t}\n\n\t/**\n\t * Position's root, that is the root of the position's parent element.\n\t *\n\t * @readonly\n\t * @type {module:engine/view/node~Node|module:engine/view/documentfragment~DocumentFragment}\n\t */\n\tget root() {\n\t\treturn this.parent.root;\n\t}\n\n\t/**\n\t * {@link module:engine/view/editableelement~EditableElement EditableElement} instance that contains this position, or `null` if\n\t * position is not inside an editable element.\n\t *\n\t * @type {module:engine/view/editableelement~EditableElement|null}\n\t */\n\tget editableElement() {\n\t\tlet editable = this.parent;\n\n\t\twhile ( !( editable instanceof EditableElement ) ) {\n\t\t\tif ( editable.parent ) {\n\t\t\t\teditable = editable.parent;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn editable;\n\t}\n\n\t/**\n\t * Returns a new instance of Position with offset incremented by `shift` value.\n\t *\n\t * @param {Number} shift How position offset should get changed. Accepts negative values.\n\t * @returns {module:engine/view/position~Position} Shifted position.\n\t */\n\tgetShiftedBy( shift ) {\n\t\tlet shifted = Position.createFromPosition( this );\n\n\t\tlet offset = shifted.offset + shift;\n\t\tshifted.offset = offset < 0 ? 0 : offset;\n\n\t\treturn shifted;\n\t}\n\n\t/**\n\t * Gets the farthest position which matches the callback using\n\t * {@link module:engine/view/treewalker~TreeWalker TreeWalker}.\n\t *\n\t * For example:\n\t *\n\t * \t\tgetLastMatchingPosition( value => value.type == 'text' ); //

{}foo

->

foo[]

\n\t * \t\tgetLastMatchingPosition( value => value.type == 'text', { direction: 'backward' } ); //

foo[]

->

{}foo

\n\t * \t\tgetLastMatchingPosition( value => false ); // Do not move the position.\n\t *\n\t * @param {Function} skip Callback function. Gets {@link module:engine/view/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t * @param {Object} options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t *\n\t * @returns {module:engine/view/position~Position} The position after the last item which matches the `skip` callback test.\n\t */\n\tgetLastMatchingPosition( skip, options = {} ) {\n\t\toptions.startPosition = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\t\ttreeWalker.skip( skip );\n\n\t\treturn treeWalker.position;\n\t}\n\n\t/**\n\t * Returns ancestors array of this position, that is this position's parent and it's ancestors.\n\t *\n\t * @returns {Array} Array with ancestors.\n\t */\n\tgetAncestors() {\n\t\tif ( this.parent.is( 'documentFragment' ) ) {\n\t\t\treturn [ this.parent ];\n\t\t} else {\n\t\t\treturn this.parent.getAncestors( { includeNode: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Checks whether this position equals given position.\n\t *\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} True if positions are same.\n\t */\n\tisEqual( otherPosition ) {\n\t\treturn ( this.parent == otherPosition.parent && this.offset == otherPosition.offset );\n\t}\n\n\t/**\n\t * Checks whether this position is located before given position. When method returns `false` it does not mean that\n\t * this position is after give one. Two positions may be located inside separate roots and in that situation this\n\t * method will still return `false`.\n\t *\n\t * @see module:engine/view/position~Position#isAfter\n\t * @see module:engine/view/position~Position#compareWith\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} Returns `true` if this position is before given position.\n\t */\n\tisBefore( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'before';\n\t}\n\n\t/**\n\t * Checks whether this position is located after given position. When method returns `false` it does not mean that\n\t * this position is before give one. Two positions may be located inside separate roots and in that situation this\n\t * method will still return `false`.\n\t *\n\t * @see module:engine/view/position~Position#isBefore\n\t * @see module:engine/view/position~Position#compareWith\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {Boolean} Returns `true` if this position is after given position.\n\t */\n\tisAfter( otherPosition ) {\n\t\treturn this.compareWith( otherPosition ) == 'after';\n\t}\n\n\t/**\n\t * Checks whether this position is before, after or in same position that other position. Two positions may be also\n\t * different when they are located in separate roots.\n\t *\n\t * @param {module:engine/view/position~Position} otherPosition Position to compare with.\n\t * @returns {module:engine/view/position~PositionRelation}\n\t */\n\tcompareWith( otherPosition ) {\n\t\tif ( this.isEqual( otherPosition ) ) {\n\t\t\treturn 'same';\n\t\t}\n\n\t\t// If positions have same parent.\n\t\tif ( this.parent === otherPosition.parent ) {\n\t\t\treturn this.offset - otherPosition.offset < 0 ? 'before' : 'after';\n\t\t}\n\n\t\t// Get path from root to position's parent element.\n\t\tconst path = this.getAncestors();\n\t\tconst otherPath = otherPosition.getAncestors();\n\n\t\t// Compare both path arrays to find common ancestor.\n\t\tconst result = compareArrays( path, otherPath );\n\n\t\tlet commonAncestorIndex;\n\n\t\tswitch ( result ) {\n\t\t\tcase 0:\n\t\t\t\t// No common ancestors found.\n\t\t\t\treturn 'different';\n\n\t\t\tcase 'prefix':\n\t\t\t\tcommonAncestorIndex = path.length - 1;\n\t\t\t\tbreak;\n\n\t\t\tcase 'extension':\n\t\t\t\tcommonAncestorIndex = otherPath.length - 1;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tcommonAncestorIndex = result - 1;\n\t\t}\n\n\t\t// Common ancestor of two positions.\n\t\tconst commonAncestor = path[ commonAncestorIndex ];\n\t\tconst nextAncestor1 = path[ commonAncestorIndex + 1 ];\n\t\tconst nextAncestor2 = otherPath[ commonAncestorIndex + 1 ];\n\n\t\t// Check if common ancestor is not one of the parents.\n\t\tif ( commonAncestor === this.parent ) {\n\t\t\tconst index = this.offset - nextAncestor2.index;\n\n\t\t\treturn index <= 0 ? 'before' : 'after';\n\t\t} else if ( commonAncestor === otherPosition.parent ) {\n\t\t\tconst index = nextAncestor1.index - otherPosition.offset;\n\n\t\t\treturn index < 0 ? 'before' : 'after';\n\t\t}\n\n\t\tconst index = nextAncestor1.index - nextAncestor2.index;\n\n\t\t// Compare indexes of next ancestors inside common one.\n\t\treturn index < 0 ? 'before' : 'after';\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/view/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/view/item~Item view item} and `'before'` or `'after'` (sets position before or after given view item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link module:engine/view/position~Position.createBefore},\n\t * * {@link module:engine/view/position~Position.createAfter},\n\t * * {@link module:engine/view/position~Position.createFromPosition}.\n\t *\n\t * @param {module:engine/view/item~Item|module:engine/model/position~Position} itemOrPosition\n\t * @param {Number|'end'|'before'|'after'} [offset=0] Offset or one of the flags. Used only when\n\t * first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tstatic createAt( itemOrPosition, offset ) {\n\t\tif ( itemOrPosition instanceof Position ) {\n\t\t\treturn this.createFromPosition( itemOrPosition );\n\t\t} else {\n\t\t\tlet node = itemOrPosition;\n\n\t\t\tif ( offset == 'end' ) {\n\t\t\t\toffset = node.is( 'text' ) ? node.data.length : node.childCount;\n\t\t\t} else if ( offset == 'before' ) {\n\t\t\t\treturn this.createBefore( node );\n\t\t\t} else if ( offset == 'after' ) {\n\t\t\t\treturn this.createAfter( node );\n\t\t\t} else if ( !offset ) {\n\t\t\t\toffset = 0;\n\t\t\t}\n\n\t\t\treturn new Position( node, offset );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new position after given view item.\n\t *\n\t * @param {module:engine/view/item~Item} item View item after which the position should be located.\n\t * @returns {module:engine/view/position~Position}\n\t */\n\tstatic createAfter( item ) {\n\t\t// TextProxy is not a instance of Node so we need do handle it in specific way.\n\t\tif ( item.is( 'textProxy' ) ) {\n\t\t\treturn new Position( item.textNode, item.offsetInText + item.data.length );\n\t\t}\n\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make a position after a root.\n\t\t\t *\n\t\t\t * @error position-after-root\n\t\t\t * @param {module:engine/view/node~Node} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-position-after-root: You can not make position after root.', { root: item } );\n\t\t}\n\n\t\treturn new Position( item.parent, item.index + 1 );\n\t}\n\n\t/**\n\t * Creates a new position before given view item.\n\t *\n\t * @param {module:engine/view/item~Item} item View item before which the position should be located.\n\t * @returns {module:engine/view/position~Position}\n\t */\n\tstatic createBefore( item ) {\n\t\t// TextProxy is not a instance of Node so we need do handle it in specific way.\n\t\tif ( item.is( 'textProxy' ) ) {\n\t\t\treturn new Position( item.textNode, item.offsetInText );\n\t\t}\n\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You cannot make a position before a root.\n\t\t\t *\n\t\t\t * @error position-before-root\n\t\t\t * @param {module:engine/view/node~Node} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-position-before-root: You can not make position before root.', { root: item } );\n\t\t}\n\n\t\treturn new Position( item.parent, item.index );\n\t}\n\n\t/**\n\t * Creates and returns a new instance of `Position`, which is equal to the passed position.\n\t *\n\t * @param {module:engine/view/position~Position} position Position to be cloned.\n\t * @returns {module:engine/view/position~Position}\n\t */\n\tstatic createFromPosition( position ) {\n\t\treturn new this( position.parent, position.offset );\n\t}\n}\n\n/**\n * A flag indicating whether this position is `'before'` or `'after'` or `'same'` as given position.\n * If positions are in different roots `'different'` flag is returned.\n *\n * @typedef {String} module:engine/view/position~PositionRelation\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/view/position.js\n// module id = 25\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module ui/button/buttonview\n */\n\nimport View from '../view';\nimport Template from '../template';\nimport IconView from '../icon/iconview';\n\nimport { getEnvKeystrokeText } from '@ckeditor/ckeditor5-utils/src/keyboard';\n\n/**\n * The button view class.\n *\n * @extends module:ui/view~View\n */\nexport default class ButtonView extends View {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale ) {\n\t\tsuper( locale );\n\n\t\t/**\n\t\t * The label of the button view visible to the user.\n\t\t *\n\t\t * @observable\n\t\t * @member {String} #label\n\t\t */\n\t\tthis.set( 'label' );\n\n\t\t/**\n\t\t * (Optional) The keystroke associated with the button, i.e. CTRL+B,\n\t\t * in the string format compatible with {@link module:utils/keyboard}.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #keystroke\n\t\t */\n\t\tthis.set( 'keystroke' );\n\n\t\t/**\n\t\t * (Optional) Tooltip of the button, i.e. displayed when hovering the button with the mouse cursor.\n\t\t *\n\t\t * * If defined as a `Boolean` (e.g. `true`), then combination of `label` and `keystroke` will be set as a tooltip.\n\t\t * * If defined as a `String`, tooltip will equal the exact text of that `String`.\n\t\t * * If defined as a `Function`, `label` and `keystroke` will be passed to that function, which is to return\n\t\t * a string with the tooltip text.\n\t\t *\n\t\t *\t\tconst view = new ButtonView( locale );\n\t\t *\t\tview.tooltip = ( label, keystroke ) => `A tooltip for ${ label } and ${ keystroke }.`\n\t\t *\n\t\t * @observable\n\t\t * @default false\n\t\t * @member {Boolean|String|Function} #tooltip\n\t\t */\n\t\tthis.set( 'tooltip' );\n\n\t\t/**\n\t\t * The HTML type of the button. Default `button`.\n\t\t *\n\t\t * @observable\n\t\t * @member {'button'|'submit'|'reset'|'menu'} #type\n\t\t */\n\t\tthis.set( 'type', 'button' );\n\n\t\t/**\n\t\t * Controls whether the button view is \"on\", e.g. some feature which it represents\n\t\t * is currently enabled.\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isOn\n\t\t */\n\t\tthis.set( 'isOn', false );\n\n\t\t/**\n\t\t * Controls whether the button view is enabled (can be clicked).\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #isEnabled\n\t\t */\n\t\tthis.set( 'isEnabled', true );\n\n\t\t/**\n\t\t * (Optional) Whether the label of the button is hidden (e.g. button with icon only).\n\t\t *\n\t\t * @observable\n\t\t * @member {Boolean} #withText\n\t\t */\n\t\tthis.set( 'withText', false );\n\n\t\t/**\n\t\t * (Optional) Source of the icon. See {@link module:ui/icon/iconview~IconView#content}.\n\t\t *\n\t\t * @observable\n\t\t * @member {String} #icon\n\t\t */\n\t\tthis.set( 'icon' );\n\n\t\t/**\n\t\t * Controls the `tabindex` attribute of the button.\n\t\t *\n\t\t * @observable\n\t\t * @default -1\n\t\t * @member {String} #tabindex\n\t\t */\n\t\tthis.set( 'tabindex', -1 );\n\n\t\t/**\n\t\t * Tooltip of the button bound to the template.\n\t\t *\n\t\t * @see #tooltip\n\t\t * @see #_getTooltipString\n\t\t * @private\n\t\t * @observable\n\t\t * @member {Boolean} #_tooltipString\n\t\t */\n\t\tthis.bind( '_tooltipString' ).to(\n\t\t\tthis, 'tooltip',\n\t\t\tthis, 'label',\n\t\t\tthis, 'keystroke',\n\t\t\tthis._getTooltipString.bind( this )\n\t\t);\n\n\t\t/**\n\t\t * Icon of the button view.\n\t\t *\n\t\t * @readonly\n\t\t * @member {module:ui/icon/iconview~IconView} #iconView\n\t\t */\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.template = new Template( {\n\t\t\ttag: 'button',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-button',\n\t\t\t\t\tbind.if( '_tooltipString', 'ck-tooltip_s' ),\n\t\t\t\t\tbind.to( 'isEnabled', value => value ? 'ck-enabled' : 'ck-disabled' ),\n\t\t\t\t\tbind.to( 'isOn', value => value ? 'ck-on' : 'ck-off' ),\n\t\t\t\t\tbind.if( 'withText', 'ck-button_with-text' )\n\t\t\t\t],\n\t\t\t\ttype: bind.to( 'type', value => value ? value : 'button' ),\n\t\t\t\t'data-ck-tooltip': [\n\t\t\t\t\tbind.to( '_tooltipString' )\n\t\t\t\t],\n\t\t\t\ttabindex: bind.to( 'tabindex' )\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'span',\n\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [ 'ck-button__label' ]\n\t\t\t\t\t},\n\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: bind.to( 'label' )\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\n\t\t\ton: {\n\t\t\t\tmousedown: bind.to( evt => {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t} ),\n\n\t\t\t\tclick: bind.to( evt => {\n\t\t\t\t\t// We can't make the button disabled using the disabled attribute, because it won't be focusable.\n\t\t\t\t\t// Though, shouldn't this condition be moved to the button controller?\n\t\t\t\t\tif ( this.isEnabled ) {\n\t\t\t\t\t\tthis.fire( 'execute' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Prevent the default when button is disabled, to block e.g.\n\t\t\t\t\t\t// automatic form submitting. See ckeditor/ckeditor5-link#74.\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Fired when the button view is clicked. It won't be fired when the button is disabled.\n\t\t *\n\t\t * @event #execute\n\t\t */\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tlet promise = Promise.resolve();\n\n\t\tif ( this.icon && !this.iconView ) {\n\t\t\tconst iconView = this.iconView = new IconView();\n\n\t\t\ticonView.bind( 'content' ).to( this, 'icon' );\n\n\t\t\tthis.element.insertBefore( iconView.element, this.element.firstChild );\n\n\t\t\t// Make sure the icon view will be destroyed along with button.\n\t\t\tpromise = promise.then( () => this.addChildren( iconView ) );\n\t\t}\n\n\t\treturn promise.then( () => super.init() );\n\t}\n\n\t/**\n\t * Focuses the button.\n\t */\n\tfocus() {\n\t\tthis.element.focus();\n\t}\n\n\t/**\n\t * Gets value for the `data-ck-tooltip` attribute from the combination of\n\t * {@link #tooltip}, {@link #label} and {@link #keystroke} attributes.\n\t *\n\t * @private\n\t * @see #tooltip\n\t * @see #_tooltipString\n\t * @param {Boolean|String|Function} tooltip Button tooltip.\n\t * @param {String} label Button label.\n\t * @param {String} keystroke Button keystroke.\n\t * @returns {String}\n\t */\n\t_getTooltipString( tooltip, label, keystroke ) {\n\t\tif ( tooltip ) {\n\t\t\tif ( typeof tooltip == 'string' ) {\n\t\t\t\treturn tooltip;\n\t\t\t} else {\n\t\t\t\tif ( keystroke ) {\n\t\t\t\t\tkeystroke = getEnvKeystrokeText( keystroke );\n\t\t\t\t}\n\n\t\t\t\tif ( tooltip instanceof Function ) {\n\t\t\t\t\treturn tooltip( label, keystroke );\n\t\t\t\t} else if ( tooltip === true ) {\n\t\t\t\t\treturn `${ label }${ keystroke ? ` (${ keystroke })` : '' }`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-ui/src/button/buttonview.js\n// module id = 26\n// module chunks = 0","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/_arrayMap.js\n// module id = 27\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/model/operation/moveoperation\n */\n\nimport Operation from './operation';\nimport Position from '../position';\nimport Range from '../range';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';\nimport writer from './../writer';\n\n/**\n * Operation to move a range of {@link module:engine/model/item~Item model items}\n * to given {@link module:engine/model/position~Position target position}.\n */\nexport default class MoveOperation extends Operation {\n\t/**\n\t * Creates a move operation.\n\t *\n\t * @param {module:engine/model/position~Position} sourcePosition\n\t * Position before the first {@link module:engine/model/item~Item model item} to move.\n\t * @param {Number} howMany Offset size of moved range. Moved range will start from `sourcePosition` and end at\n\t * `sourcePosition` with offset shifted by `howMany`.\n\t * @param {module:engine/model/position~Position} targetPosition Position at which moved nodes will be inserted.\n\t * @param {Number} baseVersion {@link module:engine/model/document~Document#version} on which operation can be applied.\n\t */\n\tconstructor( sourcePosition, howMany, targetPosition, baseVersion ) {\n\t\tsuper( baseVersion );\n\n\t\t/**\n\t\t * Position before the first {@link module:engine/model/item~Item model item} to move.\n\t\t *\n\t\t * @member {module:engine/model/position~Position} module:engine/model/operation/moveoperation~MoveOperation#sourcePosition\n\t\t */\n\t\tthis.sourcePosition = Position.createFromPosition( sourcePosition );\n\n\t\t/**\n\t\t * Offset size of moved range.\n\t\t *\n\t\t * @member {Number} module:engine/model/operation/moveoperation~MoveOperation#howMany\n\t\t */\n\t\tthis.howMany = howMany;\n\n\t\t/**\n\t\t * Position at which moved nodes will be inserted.\n\t\t *\n\t\t * @member {module:engine/model/position~Position} module:engine/model/operation/moveoperation~MoveOperation#targetPosition\n\t\t */\n\t\tthis.targetPosition = Position.createFromPosition( targetPosition );\n\n\t\t/**\n\t\t * Defines whether `MoveOperation` is sticky. If `MoveOperation` is sticky, during\n\t\t * {@link module:engine/model/operation/transform~transform operational transformation} if there will be an operation that\n\t\t * inserts some nodes at the position equal to the boundary of this `MoveOperation`, that operation will\n\t\t * get their insertion path updated to the position where this `MoveOperation` moves the range.\n\t\t *\n\t\t * @member {Boolean} module:engine/model/operation/moveoperation~MoveOperation#isSticky\n\t\t */\n\t\tthis.isSticky = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tget type() {\n\t\treturn 'move';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @returns {module:engine/model/operation/moveoperation~MoveOperation}\n\t */\n\tclone() {\n\t\tconst op = new this.constructor( this.sourcePosition, this.howMany, this.targetPosition, this.baseVersion );\n\t\top.isSticky = this.isSticky;\n\n\t\treturn op;\n\t}\n\n\t/**\n\t * Returns the start position of the moved range after it got moved. This may be different than\n\t * {@link module:engine/model/operation/moveoperation~MoveOperation#targetPosition} in some cases, i.e. when a range is moved\n\t * inside the same parent but {@link module:engine/model/operation/moveoperation~MoveOperation#targetPosition targetPosition}\n\t * is after {@link module:engine/model/operation/moveoperation~MoveOperation#sourcePosition sourcePosition}.\n\t *\n\t *\t\t vv vv\n\t *\t\tabcdefg ===> adefbcg\n\t *\t\t ^ ^\n\t *\t\t targetPos\tmovedRangeStart\n\t *\t\t offset 6\toffset 4\n\t *\n\t * @returns {module:engine/model/position~Position}\n\t */\n\tgetMovedRangeStart() {\n\t\treturn this.targetPosition._getTransformedByDeletion( this.sourcePosition, this.howMany );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @returns {module:engine/model/operation/moveoperation~MoveOperation}\n\t */\n\tgetReversed() {\n\t\tlet newTargetPosition = this.sourcePosition._getTransformedByInsertion( this.targetPosition, this.howMany );\n\n\t\tconst op = new this.constructor( this.getMovedRangeStart(), this.howMany, newTargetPosition, this.baseVersion + 1 );\n\t\top.isSticky = this.isSticky;\n\n\t\treturn op;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\t_execute() {\n\t\tlet sourceElement = this.sourcePosition.parent;\n\t\tlet targetElement = this.targetPosition.parent;\n\t\tlet sourceOffset = this.sourcePosition.offset;\n\t\tlet targetOffset = this.targetPosition.offset;\n\n\t\t// Validate whether move operation has correct parameters.\n\t\t// Validation is pretty complex but move operation is one of the core ways to manipulate the document state.\n\t\t// We expect that many errors might be connected with one of scenarios described below.\n\t\tif ( !sourceElement || !targetElement ) {\n\t\t\t/**\n\t\t\t * Source position or target position is invalid.\n\t\t\t *\n\t\t\t * @error move-operation-position-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-position-invalid: Source position or target position is invalid.'\n\t\t\t);\n\t\t} else if ( sourceOffset + this.howMany > sourceElement.maxOffset ) {\n\t\t\t/**\n\t\t\t * The nodes which should be moved do not exist.\n\t\t\t *\n\t\t\t * @error move-operation-nodes-do-not-exist\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-nodes-do-not-exist: The nodes which should be moved do not exist.'\n\t\t\t);\n\t\t} else if ( sourceElement === targetElement && sourceOffset < targetOffset && targetOffset < sourceOffset + this.howMany ) {\n\t\t\t/**\n\t\t\t * Trying to move a range of nodes into the middle of that range.\n\t\t\t *\n\t\t\t * @error move-operation-range-into-itself\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-range-into-itself: Trying to move a range of nodes to the inside of that range.'\n\t\t\t);\n\t\t} else if ( this.sourcePosition.root == this.targetPosition.root ) {\n\t\t\tif ( compareArrays( this.sourcePosition.getParentPath(), this.targetPosition.getParentPath() ) == 'prefix' ) {\n\t\t\t\tlet i = this.sourcePosition.path.length - 1;\n\n\t\t\t\tif ( this.targetPosition.path[ i ] >= sourceOffset && this.targetPosition.path[ i ] < sourceOffset + this.howMany ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Trying to move a range of nodes into one of nodes from that range.\n\t\t\t\t\t *\n\t\t\t\t\t * @error move-operation-node-into-itself\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t\t'move-operation-node-into-itself: Trying to move a range of nodes into one of nodes from that range.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst range = writer.move( Range.createFromPositionAndShift( this.sourcePosition, this.howMany ), this.targetPosition );\n\n\t\treturn {\n\t\t\tsourcePosition: this.sourcePosition,\n\t\t\trange: range\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get className() {\n\t\treturn 'engine.model.operation.MoveOperation';\n\t}\n\n\t/**\n\t * Creates `MoveOperation` object from deserilized object, i.e. from parsed JSON string.\n\t *\n\t * @param {Object} json Deserialized JSON object.\n\t * @param {module:engine/model/document~Document} document Document on which this operation will be applied.\n\t * @returns {module:engine/model/operation/moveoperation~MoveOperation}\n\t */\n\tstatic fromJSON( json, document ) {\n\t\tlet sourcePosition = Position.fromJSON( json.sourcePosition, document );\n\t\tlet targetPosition = Position.fromJSON( json.targetPosition, document );\n\n\t\tconst move = new this( sourcePosition, json.howMany, targetPosition, json.baseVersion );\n\n\t\tif ( json.isSticky ) {\n\t\t\tmove.isSticky = true;\n\t\t}\n\n\t\treturn move;\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/model/operation/moveoperation.js\n// module id = 28\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module engine/view/text\n */\n\nimport Node from './node';\n\n/**\n * Tree view text node.\n *\n * @extends module:engine/view/node~Node\n */\nexport default class Text extends Node {\n\t/**\n\t * Creates a tree view text node.\n\t *\n\t * @param {String} data Text.\n\t */\n\tconstructor( data ) {\n\t\tsuper();\n\n\t\t/**\n\t\t * The text content.\n\t\t *\n\t\t * Setting the data fires the {@link module:engine/view/node~Node#event:change:text change event}.\n\t\t *\n\t\t * @private\n\t\t * @member {String} module:engine/view/text~Text#_data\n\t\t */\n\t\tthis._data = data;\n\t}\n\n\t/**\n\t * Clones this node.\n\t *\n\t * @returns {module:engine/view/text~Text} Text node that is a clone of this node.\n\t */\n\tclone() {\n\t\treturn new Text( this.data );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tis( type ) {\n\t\treturn type == 'text';\n\t}\n\n\t/**\n\t * The text content.\n\t *\n\t * Setting the data fires the {@link module:engine/view/node~Node#event:change:text change event}.\n\t */\n\tget data() {\n\t\treturn this._data;\n\t}\n\n\tset data( data ) {\n\t\tthis._fireChange( 'text', this );\n\n\t\tthis._data = data;\n\t}\n\n\t/**\n\t * Checks if this text node is similar to other text node.\n\t * Both nodes should have the same data to be considered as similar.\n\t *\n\t * @param {module:engine/view/text~Text} otherNode Node to check if it is same as this node.\n\t * @returns {Boolean}\n\t */\n\tisSimilar( otherNode ) {\n\t\tif ( !( otherNode instanceof Text ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this === otherNode || this.data === otherNode.data;\n\t}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-engine/src/view/text.js\n// module id = 29\n// module chunks = 0","import checkGlobal from './_checkGlobal';\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\nexport default root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/lib/lodash/_root.js\n// module id = 30\n// module chunks = 0","/**\n * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n\n/**\n * @module utils/observablemixin\n */\n\nimport EmitterMixin from './emittermixin';\nimport CKEditorError from './ckeditorerror';\nimport extend from './lib/lodash/extend';\nimport isObject from './lib/lodash/isObject';\n\nconst attributesSymbol = Symbol( 'attributes' );\nconst boundObservablesSymbol = Symbol( 'boundObservables' );\nconst boundAttributesSymbol = Symbol( 'boundAttributes' );\n\n/**\n * Mixin that injects the \"observable attributes\" and data binding functionality.\n * Used mainly in the {@link module:ui/model~Model} class.\n *\n * @mixin ObservableMixin\n * @mixes module:utils/emittermixin~EmitterMixin\n * @implements module:utils/observablemixin~Observable\n */\nconst ObservableMixin = {\n\t/**\n\t * Creates and sets the value of an observable attribute of this object. Such an attribute becomes a part\n\t * of the state and is be observable.\n\t *\n\t * It accepts also a single object literal containing key/value pairs with attributes to be set.\n\t *\n\t * This method throws the observable-set-cannot-override error if the observable instance already\n\t * have a property with a given attribute name. This prevents from mistakenly overriding existing\n\t * properties and methods, but means that `foo.set( 'bar', 1 )` may be slightly slower than `foo.bar = 1`.\n\t *\n\t * @method #set\n\t * @param {String} name The attributes name.\n\t * @param {*} value The attributes value.\n\t */\n\tset( name, value ) {\n\t\t// If the first parameter is an Object, iterate over its properties.\n\t\tif ( isObject( name ) ) {\n\t\t\tObject.keys( name ).forEach( ( attr ) => {\n\t\t\t\tthis.set( attr, name[ attr ] );\n\t\t\t}, this );\n\n\t\t\treturn;\n\t\t}\n\n\t\tinitObservable( this );\n\n\t\tconst attributes = this[ attributesSymbol ];\n\n\t\tif ( ( name in this ) && !attributes.has( name ) ) {\n\t\t\t/**\n\t\t\t * Cannot override an existing property.\n\t\t\t *\n\t\t\t * This error is thrown when trying to {@link ~Observable#set set} an attribute with\n\t\t\t * a name of an already existing property. For example:\n\t\t\t *\n\t\t\t *\t\tlet observable = new Model();\n\t\t\t *\t\tobservable.property = 1;\n\t\t\t *\t\tobservable.set( 'property', 2 );\t\t// throws\n\t\t\t *\n\t\t\t *\t\tobservable.set( 'attr', 1 );\n\t\t\t *\t\tobservable.set( 'attr', 2 );\t\t\t// ok, because this is an existing attribute.\n\t\t\t *\n\t\t\t * @error observable-set-cannot-override\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-set-cannot-override: Cannot override an existing property.' );\n\t\t}\n\n\t\tObject.defineProperty( this, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget() {\n\t\t\t\treturn attributes.get( name );\n\t\t\t},\n\n\t\t\tset( value ) {\n\t\t\t\tconst oldValue = attributes.get( name );\n\n\t\t\t\t// Allow undefined as an initial value like A.define( 'x', undefined ) (#132).\n\t\t\t\t// Note: When attributes map has no such own property, then its value is undefined.\n\t\t\t\tif ( oldValue !== value || !attributes.has( name ) ) {\n\t\t\t\t\tattributes.set( name, value );\n\t\t\t\t\tthis.fire( 'change:' + name, name, value, oldValue );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tthis[ name ] = value;\n\t},\n\n\t/**\n\t * Binds observable attributes to another objects implementing {@link ~ObservableMixin}\n\t * interface (like {@link module:ui/model~Model}).\n\t *\n\t * Once bound, the observable will immediately share the current state of attributes\n\t * of the observable it is bound to and react to the changes to these attributes\n\t * in the future.\n\t *\n\t * **Note**: To release the binding use {@link module:utils/observablemixin~ObservableMixin#unbind}.\n\t *\n\t *\t\tA.bind( 'a' ).to( B );\n\t *\t\tA.bind( 'a' ).to( B, 'b' );\n\t *\t\tA.bind( 'a', 'b' ).to( B, 'c', 'd' );\n\t *\t\tA.bind( 'a' ).to( B, 'b', C, 'd', ( b, d ) => b + d );\n\t *\n\t * @method #bind\n\t * @param {...String} bindAttrs Observable attributes that will be bound to another observable(s).\n\t * @returns {module:utils/observablemixin~BindChain}\n\t */\n\tbind( ...bindAttrs ) {\n\t\tif ( !bindAttrs.length || !isStringArray( bindAttrs ) ) {\n\t\t\t/**\n\t\t\t * All attributes must be strings.\n\t\t\t *\n\t\t\t * @error observable-bind-wrong-attrs\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-bind-wrong-attrs: All attributes must be strings.' );\n\t\t}\n\n\t\tif ( ( new Set( bindAttrs ) ).size !== bindAttrs.length ) {\n\t\t\t/**\n\t\t\t * Attributes must be unique.\n\t\t\t *\n\t\t\t * @error observable-bind-duplicate-attrs\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-bind-duplicate-attrs: Attributes must be unique.' );\n\t\t}\n\n\t\tinitObservable( this );\n\n\t\tconst boundAttributes = this[ boundAttributesSymbol ];\n\n\t\tbindAttrs.forEach( attrName => {\n\t\t\tif ( boundAttributes.has( attrName ) ) {\n\t\t\t\t/**\n\t\t\t\t * Cannot bind the same attribute more that once.\n\t\t\t\t *\n\t\t\t\t * @error observable-bind-rebind\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'observable-bind-rebind: Cannot bind the same attribute more that once.' );\n\t\t\t}\n\t\t} );\n\n\t\tconst bindings = new Map();\n\n\t\t/**\n\t\t * @typedef Binding\n\t\t * @type Object\n\t\t * @property {Array} attr Attribute which is bound.\n\t\t * @property {Array} to Array of observable–attribute components of the binding (`{ observable: ..., attr: .. }`).\n\t\t * @property {Array} callback A function which processes `to` components.\n\t\t */\n\t\tbindAttrs.forEach( a => {\n\t\t\tconst binding = { attr: a, to: [] };\n\n\t\t\tboundAttributes.set( a, binding );\n\t\t\tbindings.set( a, binding );\n\t\t} );\n\n\t\t/**\n\t\t * @typedef BindChain\n\t\t * @type Object\n\t\t * @property {Function} to See {@link ~ObservableMixin#_bindTo}.\n\t\t * @property {module:utils/observablemixin~Observable} _observable The observable which initializes the binding.\n\t\t * @property {Array} _bindAttrs Array of `_observable` attributes to be bound.\n\t\t * @property {Array} _to Array of `to()` observable–attributes (`{ observable: toObservable, attrs: ...toAttrs }`).\n\t\t * @property {Map} _bindings Stores bindings to be kept in\n\t\t * {@link ~ObservableMixin#_boundAttributes}/{@link ~ObservableMixin#_boundObservables}\n\t\t * initiated in this binding chain.\n\t\t */\n\t\treturn {\n\t\t\tto: bindTo,\n\n\t\t\t_observable: this,\n\t\t\t_bindAttrs: bindAttrs,\n\t\t\t_to: [],\n\t\t\t_bindings: bindings\n\t\t};\n\t},\n\n\t/**\n\t * Removes the binding created with {@link ~ObservableMixin#bind}.\n\t *\n\t *\t\tA.unbind( 'a' );\n\t *\t\tA.unbind();\n\t *\n\t * @method #unbind\n\t * @param {...String} [unbindAttrs] Observable attributes to be unbound. All the bindings will\n\t * be released if no attributes provided.\n\t */\n\tunbind( ...unbindAttrs ) {\n\t\t// Nothing to do here if not inited yet.\n\t\tif ( !( attributesSymbol in this ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst boundAttributes = this[ boundAttributesSymbol ];\n\t\tconst boundObservables = this[ boundObservablesSymbol ];\n\n\t\tif ( unbindAttrs.length ) {\n\t\t\tif ( !isStringArray( unbindAttrs ) ) {\n\t\t\t\t/**\n\t\t\t\t * Attributes must be strings.\n\t\t\t\t *\n\t\t\t\t * @error observable-unbind-wrong-attrs\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'observable-unbind-wrong-attrs: Attributes must be strings.' );\n\t\t\t}\n\n\t\t\tunbindAttrs.forEach( attrName => {\n\t\t\t\tconst binding = boundAttributes.get( attrName );\n\t\t\t\tlet toObservable, toAttr, toAttrs, toAttrBindings;\n\n\t\t\t\tbinding.to.forEach( to => {\n\t\t\t\t\t// TODO: ES6 destructuring.\n\t\t\t\t\ttoObservable = to[ 0 ];\n\t\t\t\t\ttoAttr = to[ 1 ];\n\t\t\t\t\ttoAttrs = boundObservables.get( toObservable );\n\t\t\t\t\ttoAttrBindings = toAttrs[ toAttr ];\n\n\t\t\t\t\ttoAttrBindings.delete( binding );\n\n\t\t\t\t\tif ( !toAttrBindings.size ) {\n\t\t\t\t\t\tdelete toAttrs[ toAttr ];\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !Object.keys( toAttrs ).length ) {\n\t\t\t\t\t\tboundObservables.delete( toObservable );\n\t\t\t\t\t\tthis.stopListening( toObservable, 'change' );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tboundAttributes.delete( attrName );\n\t\t\t} );\n\t\t} else {\n\t\t\tboundObservables.forEach( ( bindings, boundObservable ) => {\n\t\t\t\tthis.stopListening( boundObservable, 'change' );\n\t\t\t} );\n\n\t\t\tboundObservables.clear();\n\t\t\tboundAttributes.clear();\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t * @member ~ObservableMixin#_boundAttributes\n\t */\n\n\t/**\n\t * @private\n\t * @member ~ObservableMixin#_boundObservables\n\t */\n\n\t/**\n\t * @private\n\t * @member ~ObservableMixin#_bindTo\n\t */\n};\n\nexport default ObservableMixin;\n\n// Init symbol properties needed to for the observable mechanism to work.\n//\n// @private\n// @param {module:utils/observablemixin~ObservableMixin} observable\nfunction initObservable( observable ) {\n\t// Do nothing if already inited.\n\tif ( attributesSymbol in observable ) {\n\t\treturn;\n\t}\n\n\t// The internal hash containing the observable's state.\n\t//\n\t// @private\n\t// @type {Map}\n\tObject.defineProperty( observable, attributesSymbol, {\n\t\tvalue: new Map()\n\t} );\n\n\t// Map containing bindings to external observables. It shares the binding objects\n\t// (`{ observable: A, attr: 'a', to: ... }`) with {@link module:utils/observablemixin~ObservableMixin#_boundAttributes} and\n\t// it is used to observe external observables to update own attributes accordingly.\n\t// See {@link module:utils/observablemixin~ObservableMixin#bind}.\n\t//\n\t//\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n\t//\t\tconsole.log( A._boundObservables );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\tB: {\n\t//\t\t\t\t\tx: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\t\t\t{ observable: A, attr: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\ty: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t}\n\t//\t\t\t} )\n\t//\n\t//\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n\t//\t\tconsole.log( A._boundObservables );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\tB: {\n\t//\t\t\t\t\tx: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\t\t\t{ observable: A, attr: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\ty: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\tz: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t},\n\t//\t\t\t\tC: {\n\t//\t\t\t\t\tw: Set( [\n\t//\t\t\t\t\t\t{ observable: A, attr: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t}\n\t//\t\t\t} )\n\t//\n\t// @private\n\t// @type {Map}\n\tObject.defineProperty( observable, boundObservablesSymbol, {\n\t\tvalue: new Map()\n\t} );\n\n\t// Object that stores which attributes of this observable are bound and how. It shares\n\t// the binding objects (`{ observable: A, attr: 'a', to: ... }`) with {@link utils.ObservableMixin#_boundObservables}.\n\t// This data structure is a reverse of {@link utils.ObservableMixin#_boundObservables} and it is helpful for\n\t// {@link utils.ObservableMixin#unbind}.\n\t//\n\t// See {@link utils.ObservableMixin#bind}.\n\t//\n\t//\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n\t//\t\tconsole.log( A._boundAttributes );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\ta: { observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\tb: { observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\tc: { observable: A, attr: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t} )\n\t//\n\t//\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n\t//\t\tconsole.log( A._boundAttributes );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\ta: { observable: A, attr: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\tb: { observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\tc: { observable: A, attr: 'c', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\td: { observable: A, attr: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t} )\n\t//\n\t// @private\n\t// @type {Map}\n\tObject.defineProperty( observable, boundAttributesSymbol, {\n\t\tvalue: new Map()\n\t} );\n}\n\n// A chaining for {@link module:utils/observablemixin~ObservableMixin#bind} providing `.to()` interface.\n//\n// @private\n// @param {...[Observable|String|Function]} args Arguments of the `.to( args )` binding.\nfunction bindTo( ...args ) {\n\t/* jshint validthis: true */\n\tconst parsedArgs = parseBindToArgs( ...args );\n\tconst bindingsKeys = Array.from( this._bindings.keys() );\n\tconst numberOfBindings = bindingsKeys.length;\n\n\t// Eliminate A.bind( 'x' ).to( B, C )\n\tif ( !parsedArgs.callback && parsedArgs.to.length > 1 ) {\n\t\t/**\n\t\t * Binding multiple observables only possible with callback.\n\t\t *\n\t\t * @error observable-bind-no-callback\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-no-callback: Binding multiple observables only possible with callback.' ) ;\n\t}\n\n\t// Eliminate A.bind( 'x', 'y' ).to( B, callback )\n\tif ( numberOfBindings > 1 && parsedArgs.callback ) {\n\t\t/**\n\t\t * Cannot bind multiple attributes and use a callback in one binding.\n\t\t *\n\t\t * @error observable-bind-to-extra-callback\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-extra-callback: Cannot bind multiple attributes and use a callback in one binding.' ) ;\n\t}\n\n\tparsedArgs.to.forEach( to => {\n\t\t// Eliminate A.bind( 'x', 'y' ).to( B, 'a' )\n\t\tif ( to.attrs.length && to.attrs.length !== numberOfBindings ) {\n\t\t\t/**\n\t\t\t * The number of attributes must match.\n\t\t\t *\n\t\t\t * @error observable-bind-to-attrs-length\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-bind-to-attrs-length: The number of attributes must match.' );\n\t\t}\n\n\t\t// When no to.attrs specified, observing source attributes instead i.e.\n\t\t// A.bind( 'x', 'y' ).to( B ) -> Observe B.x and B.y\n\t\tif ( !to.attrs.length ) {\n\t\t\tto.attrs = this._bindAttrs;\n\t\t}\n\t} );\n\n\tthis._to = parsedArgs.to;\n\n\t// Fill {@link BindChain#_bindings} with callback. When the callback is set there's only one binding.\n\tif ( parsedArgs.callback ) {\n\t\tthis._bindings.get( bindingsKeys[ 0 ] ).callback = parsedArgs.callback;\n\t}\n\n\tattachBindToListeners( this._observable, this._to );\n\n\t// Update observable._boundAttributes and observable._boundObservables.\n\tupdateBindToBound( this );\n\n\t// Set initial values of bound attributes.\n\tthis._bindAttrs.forEach( attrName => {\n\t\tupdateBoundObservableAttr( this._observable, attrName );\n\t} );\n}\n\n// Check if all entries of the array are of `String` type.\n//\n// @private\n// @param {Array} arr An array to be checked.\n// @returns {Boolean}\nfunction isStringArray( arr ) {\n\treturn arr.every( a => typeof a == 'string' );\n}\n\n// Parses and validates {@link Observable#bind}`.to( args )` arguments and returns\n// an object with a parsed structure. For example\n//\n//\t\tA.bind( 'x' ).to( B, 'a', C, 'b', call );\n//\n// becomes\n//\n//\t\t{\n//\t\t\tto: [\n//\t\t\t\t{ observable: B, attrs: [ 'a' ] },\n//\t\t\t\t{ observable: C, attrs: [ 'b' ] },\n//\t\t\t],\n//\t\t\tcallback: call\n// \t\t}\n//\n// @private\n// @param {...*} args Arguments of {@link Observable#bind}`.to( args )`.\n// @returns {Object}\nfunction parseBindToArgs( ...args ) {\n\t// Eliminate A.bind( 'x' ).to()\n\tif ( !args.length ) {\n\t\t/**\n\t\t * Invalid argument syntax in `to()`.\n\t\t *\n\t\t * @error observable-bind-to-parse-error\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-parse-error: Invalid argument syntax in `to()`.' );\n\t}\n\n\tconst parsed = { to: [] };\n\tlet lastObservable;\n\n\tif ( typeof args[ args.length - 1 ] == 'function' ) {\n\t\tparsed.callback = args.pop();\n\t}\n\n\targs.forEach( a => {\n\t\tif ( typeof a == 'string' ) {\n\t\t\tlastObservable.attrs.push( a );\n\t\t} else if ( typeof a == 'object' ) {\n\t\t\tlastObservable = { observable: a, attrs: [] };\n\t\t\tparsed.to.push( lastObservable );\n\t\t} else {\n\t\t\tthrow new CKEditorError( 'observable-bind-to-parse-error: Invalid argument syntax in `to()`.' );\n\t\t}\n\t} );\n\n\treturn parsed;\n}\n\n// Synchronizes {@link module:utils/observablemixin#_boundObservables} with {@link Binding}.\n//\n// @private\n// @param {Binding} binding A binding to store in {@link Observable#_boundObservables}.\n// @param {Observable} toObservable A observable, which is a new component of `binding`.\n// @param {String} toAttrName A name of `toObservable`'s attribute, a new component of the `binding`.\nfunction updateBoundObservables( observable, binding, toObservable, toAttrName ) {\n\tconst boundObservables = observable[ boundObservablesSymbol ];\n\tconst bindingsToObservable = boundObservables.get( toObservable );\n\tconst bindings = bindingsToObservable || {};\n\n\tif ( !bindings[ toAttrName ] ) {\n\t\tbindings[ toAttrName ] = new Set();\n\t}\n\n\t// Pass the binding to a corresponding Set in `observable._boundObservables`.\n\tbindings[ toAttrName ].add( binding );\n\n\tif ( !bindingsToObservable ) {\n\t\tboundObservables.set( toObservable, bindings );\n\t}\n}\n\n// Synchronizes {@link Observable#_boundAttributes} and {@link Observable#_boundObservables}\n// with {@link BindChain}.\n//\n// Assuming the following binding being created\n//\n// \t\tA.bind( 'a', 'b' ).to( B, 'x', 'y' );\n//\n// the following bindings were initialized by {@link Observable#bind} in {@link BindChain#_bindings}:\n//\n// \t\t{\n// \t\t\ta: { observable: A, attr: 'a', to: [] },\n// \t\t\tb: { observable: A, attr: 'b', to: [] },\n// \t\t}\n//\n// Iterate over all bindings in this chain and fill their `to` properties with\n// corresponding to( ... ) arguments (components of the binding), so\n//\n// \t\t{\n// \t\t\ta: { observable: A, attr: 'a', to: [ B, 'x' ] },\n// \t\t\tb: { observable: A, attr: 'b', to: [ B, 'y' ] },\n// \t\t}\n//\n// Then update the structure of {@link Observable#_boundObservables} with updated\n// binding, so it becomes:\n//\n// \t\tMap( {\n// \t\t\tB: {\n// \t\t\t\tx: Set( [\n// \t\t\t\t\t{ observable: A, attr: 'a', to: [ [ B, 'x' ] ] }\n// \t\t\t\t] ),\n// \t\t\t\ty: Set( [\n// \t\t\t\t\t{ observable: A, attr: 'b', to: [ [ B, 'y' ] ] },\n// \t\t\t\t] )\n//\t\t\t}\n// \t\t} )\n//\n// @private\n// @param {BindChain} chain The binding initialized by {@link Observable#bind}.\nfunction updateBindToBound( chain ) {\n\tlet toAttr;\n\n\tchain._bindings.forEach( ( binding, attrName ) => {\n\t\t// Note: For a binding without a callback, this will run only once\n\t\t// like in A.bind( 'x', 'y' ).to( B, 'a', 'b' )\n\t\t// TODO: ES6 destructuring.\n\t\tchain._to.forEach( to => {\n\t\t\ttoAttr = to.attrs[ binding.callback ? 0 : chain._bindAttrs.indexOf( attrName ) ];\n\n\t\t\tbinding.to.push( [ to.observable, toAttr ] );\n\t\t\tupdateBoundObservables( chain._observable, binding, to.observable, toAttr );\n\t\t} );\n\t} );\n}\n\n// Updates an attribute of a {@link Observable} with a value\n// determined by an entry in {@link Observable#_boundAttributes}.\n//\n// @private\n// @param {Observable} observable A observable which attribute is to be updated.\n// @param {String} attrName An attribute to be updated.\nfunction updateBoundObservableAttr( observable, attrName ) {\n\tconst boundAttributes = observable[ boundAttributesSymbol ];\n\tconst binding = boundAttributes.get( attrName );\n\tlet attrValue;\n\n\t// When a binding with callback is created like\n\t//\n\t// \t\tA.bind( 'a' ).to( B, 'b', C, 'c', callback );\n\t//\n\t// collect B.b and C.c, then pass them to callback to set A.a.\n\tif ( binding.callback ) {\n\t\tattrValue = binding.callback.apply( observable, binding.to.map( to => to[ 0 ][ to[ 1 ] ] ) );\n\t} else {\n\t\tattrValue = binding.to[ 0 ];\n\t\tattrValue = attrValue[ 0 ][ attrValue[ 1 ] ];\n\t}\n\n\tif ( observable.hasOwnProperty( attrName ) ) {\n\t\tobservable[ attrName ] = attrValue;\n\t} else {\n\t\tobservable.set( attrName, attrValue );\n\t}\n}\n\n// Starts listening to changes in {@link BindChain._to} observables to update\n// {@link BindChain._observable} {@link BindChain._bindAttrs}. Also sets the\n// initial state of {@link BindChain._observable}.\n//\n// @private\n// @param {BindChain} chain The chain initialized by {@link Observable#bind}.\nfunction attachBindToListeners( observable, toBindings ) {\n\ttoBindings.forEach( to => {\n\t\tconst boundObservables = observable[ boundObservablesSymbol ];\n\t\tlet bindings;\n\n\t\t// If there's already a chain between the observables (`observable` listens to\n\t\t// `to.observable`), there's no need to create another `change` event listener.\n\t\tif ( !boundObservables.get( to.observable ) ) {\n\t\t\tobservable.listenTo( to.observable, 'change', ( evt, attrName ) => {\n\t\t\t\tbindings = boundObservables.get( to.observable )[ attrName ];\n\n\t\t\t\t// Note: to.observable will fire for any attribute change, react\n\t\t\t\t// to changes of attributes which are bound only.\n\t\t\t\tif ( bindings ) {\n\t\t\t\t\tbindings.forEach( binding => {\n\t\t\t\t\t\tupdateBoundObservableAttr( observable, binding.attr );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n}\n\nextend( ObservableMixin, EmitterMixin );\n\n/**\n * Fired when an attribute changed value.\n *\n * @event module:utils/observablemixin~ObservableMixin#change:{attribute}\n * @param {String} name The attribute name.\n * @param {*} value The new attribute value.\n * @param {*} oldValue The previous attribute value.\n */\n\n/**\n * Interface representing classes which mix in {@link module:utils/observablemixin~ObservableMixin}.\n *\n * @interface Observable\n */\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../ckeditor5-utils/src/observablemixin.js\n// module id = 31\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap) {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n var base64 = new Buffer(JSON.stringify(sourceMap)).toString('base64');\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n return '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 32\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\t// Test for IE <= 9 as proposed by Browserhacks\n\t\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t\t// Tests for existence of standard globals is to allow style-loader \n\t\t// to operate correctly into non-standard environments\n\t\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\t\treturn window && document && document.all && !window.atob;\n\t}),\n\tgetElement = (function(fn) {\n\t\tvar memo = {};\n\t\treturn function(selector) {\n\t\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\t\tmemo[selector] = fn.call(this, selector);\n\t\t\t}\n\t\t\treturn memo[selector]\n\t\t};\n\t})(function (styleTarget) {\n\t\treturn document.querySelector(styleTarget)\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [],\n\tfixUrls = require(\"./fixUrls\");\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of