collaborative
Version:
JavaScript library to build applications and web-services with collaborative access to the data (live data editing).
76 lines (75 loc) • 35.8 kB
JavaScript
(function(){for(var q,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},r="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ba=["Object","is"],ca=0;ca<ba.length-1;ca++){var da=ba[ca];da in r||(r[da]={});r=r[da]}var ea=ba[ba.length-1],fa=r[ea],ga=fa?fa:function(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b};ga!=fa&&null!=ga&&aa(r,ea,{configurable:!0,writable:!0,value:ga});
var t=this;function z(a){return void 0!==a}function D(a,b,c){a=a.split(".");c=c||t;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&z(b)?c[d]=b:c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}}
function E(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function H(a){return"string"==typeof a}function ha(a){return"number"==typeof a}function J(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}var ia="closure_uid_"+(1E9*Math.random()>>>0),ja=0;function ka(a,b,c){return a.call.apply(a.bind,arguments)}
function la(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function K(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?K=ka:K=la;return K.apply(null,arguments)}var ma=Date.now||function(){return+new Date};
function na(a,b){function c(){}c.prototype=b.prototype;a.pa=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.oa=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};function oa(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};var pa=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(H(a))return H(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},qa=Array.prototype.forEach?function(a,b,c){Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=H(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)},ra=Array.prototype.filter?function(a,b,c){return Array.prototype.filter.call(a,
b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,h=H(a)?a.split(""):a,g=0;g<d;g++)if(g in h){var k=h[g];b.call(c,k,g,a)&&(e[f++]=k)}return e},sa=Array.prototype.map?function(a,b,c){return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=H(a)?a.split(""):a,h=0;h<d;h++)h in f&&(e[h]=b.call(c,f[h],h,a));return e};function ta(a){return Array.prototype.concat.apply([],arguments)}
function L(a,b,c){return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};function ua(){}
function va(a,b,c){if(null==b)c.push("null");else{if("object"==typeof b){if("array"==E(b)){var d=b;b=d.length;c.push("[");for(var e="",f=0;f<b;f++)c.push(e),va(a,d[f],c),e=",";c.push("]");return}if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();else{c.push("{");e="";for(d in b)Object.prototype.hasOwnProperty.call(b,d)&&(f=b[d],"function"!=typeof f&&(c.push(e),wa(d,c),c.push(":"),va(a,f,c),e=","));c.push("}");return}}switch(typeof b){case "string":wa(b,c);break;case "number":c.push(isFinite(b)&&
!isNaN(b)?String(b):"null");break;case "boolean":c.push(String(b));break;case "function":c.push("null");break;default:throw Error("Unknown type: "+typeof b);}}}var xa={'"':'\\"',"\\":"\\\\","/":"\\/","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\u000b"},ya=/\uffff/.test("")?/[\\\"\x00-\x1f\x7f-\uffff]/g:/[\\\"\x00-\x1f\x7f-\xff]/g;
function wa(a,b){b.push('"',a.replace(ya,function(a){var b=xa[a];b||(b="\\u"+(a.charCodeAt(0)|65536).toString(16).substr(1),xa[a]=b);return b}),'"')};function za(a){if(t.JSON)try{return t.JSON.stringify(a)}catch(c){}var b=[];va(new ua,a,b);return b.join("")};function Aa(a,b){for(var c in a)if(b.call(void 0,a[c],c,a))return!0;return!1}function Ba(a,b){for(var c in a)if(!b.call(void 0,a[c],c,a))return!1;return!0}function Ca(a){var b=E(a);if("object"==b||"array"==b){if("function"==E(a.clone))return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=Ca(a[c]);return b}return a}var Da="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
function Ea(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<Da.length;f++)c=Da[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};var M={};D("VERSION","0.0.1.258",M);function N(a,b,c,d,e){return{siteId:a,seqId:b,context:c,invCount:d||0,load:e||null}}function Fa(){return{vector:{},size:0}}function Ga(a,b){var c=a.vector[b];c||(c=a.vector[b]=Ha(),a.size++);return c}function Ha(a,b,c){return{seqId:a||0,invCluster:b||{},invClusterSize:c||0}}function Ia(a,b){var c=a.vector[b];return c?c.seqId:0}
function O(a,b,c,d){if(H(b)){var e=b;c=c||0;b=d||0}else e=b.siteId,c=b.seqId,b=b.invCount;a=Ga(a,e);a.seqId=Math.max(c,a.seqId);b&&(e=a.invCluster[c],e||(e=0,a.invClusterSize++),a.invCluster[c]=Math.max(b,e))}
function Ja(a,b,c){if(H(b)){var d=b;c=c||0;b=0}else d=b.siteId,c=b.seqId,b=b.invCount;if(a.vector[d])if(1<c||b){a=Ga(a,d);d=c;1<b&&(a.invCluster[c]>=b&&(a.invCluster[c]=b-1),d++);for(;d<=a.seqId;d++)d in a.invCluster&&(delete a.invCluster[d],a.invClusterSize--);a.seqId=Math.min(a.seqId,b?c:c-1)}else delete a.vector[d],a.size--}
function P(a){var b=Fa(),c;for(c in a.vector){var d=a.vector[c],e=d.invCluster,f={},h;for(h in e)f[h]=e[+h];b.vector[c]=Ha(d.seqId,f,d.invClusterSize)}b.size=a.size;return b}function Ka(a,b){var c=b.seqId,d=a.vector[b.siteId];return!!(d&&d.seqId>=c&&(d.invCluster[c]||0)>=b.invCount)}
function La(a,b){if(a.size<b.size)return!1;for(var c in b.vector){var d=a.vector[c],e=b.vector[c];if(!d||d.seqId<e.seqId||d.invClusterSize<e.invClusterSize)return!1;var d=d.invCluster,e=e.invCluster,f;for(f in e)if((d[+f]||0)<e[+f])return!1}return!0}function Ma(a){return Q(a)&&0<a}
function Na(a){var b=0;return J(a)&&Q(a.size)&&J(a.vector)&&Ba(a.vector,function(a){b++;var c=0;return J(a)&&Q(a.seqId)&&0<a.seqId&&Q(a.invClusterSize)&&J(a.invCluster)&&Ba(a.invCluster,function(b,d){c++;return Q(b)&&Q(d)&&0<d&&d<=a.seqId})&&c==a.invClusterSize})&&b==a.size}function Q(a){return(ha(a)||H(a))&&!isNaN(a)}t.performance&&"function"==E(t.performance.now)&&K(t.performance.now,t.performance);
function Oa(a,b,c,d){var e=a.load,f=b.load;if(!e||!f)return e;c=d[e.type<<c|f.type];if(!c)throw Error(Pa);return c(a,b)}function Qa(a,b){var c=a.load;if(!c)return c;c=b[c.type];if(!c)throw Error(Ra);return c(a)}function Sa(a,b,c,d){if(b)if("array"==E(b))for(var e=0;e<b.length;e++)a=Ta(a,b[e],c,d);else a=Ta(a,b,c,d);return a}function Ta(a,b,c,d){var e=b.load;if(e){d=d[e.type];if(!d)throw Error(Ua);a=d(a,b,c)}return a}
var Pa="Wrong operations in transformation function",Ra="Wrong operations passed to an inversion function",Ua="Wrong operations passed to an exec function";function Va(a,b){return oa.apply(null,arguments)}D("getUid",function(a){return[a.siteId,a.seqId,a.invCount].join("|")},M);D("canApply",function(a,b){b||(b=Fa());var c=a.siteId,d=a.seqId,e=a.invCount,f=Ia(b,c);if(e){if(f=f>=d)c=b.vector[c],f=(c&&c.invCluster[d]||0)==e-1;d=f}else d=f==d-1;return d&&La(b,a.context)},M);
D("seen",function(a,b){return Ka(b||Fa(),a)},M);D("enumerate",function(a,b){for(var c=ta.apply(null,L(arguments,1)),d=0;d<c.length;d++){var e=c[d],e=N(e.siteId,e.seqId,e.context,e.invCount,e.load);e.execOrder=a++;c[d]=e}return c},M);function Wa(a){this.c=a||100;this.a=this.b=0;this.f=[]}Wa.prototype.push=function(a){this.f[(this.b+this.a)%this.c]=a;this.a<this.c?this.a++:this.b++};Wa.prototype.pop=function(){if(this.a){var a=this.f[(this.b+this.a-1)%this.c];this.a--}return a};Wa.prototype.get=function(a){var b;0<=a&&a<this.a&&(b=this.f[(this.b+this.a-a-1)%this.c]);return b};function Xa(a){this.b=0;this.c=a||100;this.a=[]}Xa.prototype.add=function(a){var b=this.a[this.b];this.a[this.b]=a;this.b=(this.b+1)%this.c;return b};Xa.prototype.get=function(a){a=Ya(this,a);return this.a[a]};Xa.prototype.set=function(a,b){a=Ya(this,a);this.a[a]=b};function Ya(a,b){if(b>=a.a.length)throw Error("Out of bounds exception");return a.a.length<a.c?b:(a.b+Number(b))%a.c};function Za(a,b,c){this.h=b;this.f=a;this.a={};this.b=[];this.c=[];if(c){a=c.vector;for(var d in a)c=a[d],$a(this,d,c.seqId,c.invCluster)}b&&$a(this,b)}
function ab(a,b){var c=a.c[a.a[b.siteId]],d=a.f,e=a.a,f,h=+b.seqId,g=+b.invCount,k=+b.execOrder||NaN,l=h-c.h-1,m=c.f[h]||0;if(h==c.b+1){var n=!g;var p=!n}else c.b>=h?(n=m+1==g,p=m>=g&&!!k):n=p=!1;if(!n&&!p)throw Error("Сломались seqIdы");if(0>l)for(l=~l,c.a||(c.a=[]),m=c.a,f=m.length;f<l;f++)m[f]=null;else m=c.g;if(p&&(f=bb(c,h,g),!isNaN(f)&&f!=k))throw Error("Passed operation is already stored with different execution order");p=m[l];p||(d=g%2?d(b):b.load,f=b.context,g&&(f=P(f),Ja(f,c.c,h)),p=m[l]=
{load:d,context:cb(f,e),cache:null,B:g?NaN:k});if(g){p.m||(p.m=[]);for(f=p.m.length;f<g-1;f++)p.m[f]=NaN;p.m[g-1]=k}else p.B=k;n&&(g?c.f[h]=g:c.b=h)}Za.prototype.g=function(a){var b=a.context.vector,c;for(c in b)$a(this,c);$a(this,a.siteId);ab(this,a)};
function db(a,b,c){b=b.vector;c=c.vector;for(var d=[],e=0;e<a.b.length;e++){var f=a.b[e],h=a.c[e],g=b[f];if(g){var k=g.seqId;var l=g.invCluster}else k=0,l={};if(g=c[f]){var m=g.seqId;var n=g.invCluster}else m=0,n={};a:{var g=void 0,p=d,x=a.f,y=a.b,B=a.h==f;for(g in n){g=+g;f=n[g];var I=(l[g]||0)+1;if(g<=k&&f>=I&&!eb(h,p,g,I,f,x,y,B)){g=!1;break a}}for(g=k+1;g<=m;g++)if(f=n[g]||0,!eb(h,p,g,0,f,x,y,B)){g=!1;break a}g=!0}if(!g)return null}d.sort(fb);return d}
Za.prototype.cache=function(a,b){var c=a.siteId;$a(this,c);$a(this,b);return this.c[this.a[c]].cache(a,b,this.a)};function $a(a,b,c,d){b in a.a||(a.a[b]=a.b.length,a.b.push(b),a.c.push(new gb(b,c,d)))}function fb(a,b){var c=a.execOrder,d=b.execOrder,e=a.siteId,f=a.seqId,h=b.siteId,g=b.seqId;return Ma(c)?Ma(d)?c-d:-1:Ma(d)?1:e==h?f==g?a.invCount-b.invCount:f-g:Ka(b.context,a)?-1:Ka(a.context,b)?1:e<h?-1:1}
function gb(a,b,c){this.c=a;this.b=b||0;this.f={};if(c)for(var d in c)this.f[d]=c[+d];this.h=this.b;this.g=[];this.a=null}
gb.prototype.get=function(a,b,c,d,e){var f=hb(this,a);if(f){for(var h=this.c,g=f.context,k=Fa(),l=0;l<g.length;l++){var m=e[l],n=g[l],p={},x=0;if(ha(n))var y=n;else{y=n[0];for(var B=1;B<n.length;B+=2)p[n[B]]=n[B+1],x++}y&&(k.vector[m]=Ha(y,p,x),k.size++)}e=N(h,a,k,0,f.load)}else e=null;e&&(c?(e.load=null,e.doUndoPair=!0):b&1&&(e.load=d(e)),(e.invCount=b)&&O(e.context,this.c,a,b-1),e.execOrder=bb(this,a,b));return e};function bb(a,b,c){return(a=hb(a,b))?c?a.m&&a.m[c-1]||NaN:a.B:NaN}
gb.prototype.cache=function(a,b,c){var d=hb(this,a.seqId);if(d){d.cache||(d.cache=[]);b=c[b];if(d.cache.length<b)for(var e=d.cache.length;e<b;e++)d.cache.push(null);d.cache[b]||(d.cache[b]=new Xa(10));d.cache[b].add({load:a.load,Y:!!(a.invCount&1),context:cb(a.context,c)})}return!!d};function hb(a,b){var c=b-a.h-1;if(0>c){c=~c;var d=a.a;if(!d)return null}else d=a.g;return d.length>c?d[c]:null}
function cb(a,b){var c=[],d;for(d in b)c.push(0);var e=a.vector;for(d in e){var f=e[d];var h=f.seqId;if(f.invClusterSize){h=[h];var f=f.invCluster,g;for(g in f)h.push(+g,+f[+g])}c[b[d]]=h}return c}function eb(a,b,c,d,e,f,h,g){a=(e=a.get(c,e,!!((e-d)%2),f,h))?e.execOrder=bb(a,c,d):NaN;if(g||!isNaN(a))b.push(e);else return!1;return!0};function R(a,b,c,d,e,f){if(!(this instanceof R))return new R(a,b,c,d,e,f);this.f=c||null;this.o=a;this.i=b;this.c=+d||0;this.a=e||Fa();this.j=!0;this.h=new Wa(f);this.g=new Wa(f);this.b=new Za(b,this.f,this.a);if(!Na(this.a))throw Error("Passed value is not a valid context object");a=0;b=this.a.vector;for(var h in b){c=b[h];a+=+c.seqId;c=c.invCluster;for(var g in c)a+=+c[+g]}if(a!=this.c)throw Error("Last executed operation order and initial context ops count do not match");return this}q=R.prototype;
q.R=function(a){if(!this.f)throw Error("To be able to commit operations, clv.Document must be created with a siteId");a="array"==E(a)?sa(a,this.H,this):[this.H(a)];var b=ra(a,this.v);this.h.push(L(a,0));var c=this.g;c.a=c.b=c.f.length=0;return{toSend:a,toExec:b,missing:!1}};
q.N=function(a){var b=ta(a),c,d=this.c+1;a=[];var e=[],f=[];for(c=0;c<b.length;c++){var h=b[c];if(!(J(h)&&H(h.siteId)&&Q(h.seqId)&&0<h.seqId&&Q(h.invCount)&&Na(h.context)))throw Error(Va("Passed value is not a valid operation object\nPassed: %s\nSee valid format at: %s",za(h),"http://?????"));if(!Ma(h.execOrder))throw Error("Operation passed to update lacks valid execOrder property");var g=+h.execOrder;if(g>d)throw Error("Operations enumeration order is broken");var k=Ka(this.a,h),l=h.siteId==this.f;
if(g==d){if(k)if(l)e.push(h);else throw a=Error,g=Va("Пришла операция, согласно контексту ее выполнили, согласно execOrder нет, где-то хуйня\nНужно посоветовать проверить что в конструктор документа передаетсяexecOrder и contextExec order: %s\nContext: %s\nOperation: %s",g.toString(),za(this.a),za(h)),a(g);else{if(l)throw Error("A collision in site ids detected");a.push(ib(h))}d++}else if(k)f.push(h);else throw Error("Пришла операция. согласно экзек ордеру она уже выполнена, согласно контексту нет, хуйня");
}qa(f,this.b.g,this.b);qa(e,this.ja,this);h=[];b=!0;for(c=0;c<a.length;c++){g=a[c];if(!La(this.a,g.context))throw Error("CC3 fails - an operation cannot be executed on the document");this.b.g(g);b=jb(this,g,db(this.b,g.context,this.a));if(!b)break;O(this.a,g);this.c=Math.max(this.c,g.execOrder);this.v(g)&&h.push(g)}a=b?h:null;return{toExec:a||[],missing:!a}};q.K=function(){return!!this.h.a};q.la=function(a){return kb(this,this.h,this.g,!a)};q.J=function(){return!!this.g.a};
q.da=function(a){return kb(this,this.g,this.h,!a)};q.T=function(){return this.f};q.L=function(){return P(this.a)};q.M=function(){return this.c};q.W=function(){return this.j};q.ia=function(a){this.j=!!a;return this};q.H=function(a){var b=this.f,c=P(this.a);a=N(b,Ia(c,b)+1,c,0,null!=a?a:null);O(this.a,a);ab(this.b,a);return a};q.v=function(a){return null!=a.load};function ib(a){var b=N(a.siteId,a.seqId,P(a.context),a.invCount,a.load);if(a=a.execOrder)b.execOrder=a;return b}
q.ja=function(a){ab(this.b,a);this.c=Math.max(this.c,a.execOrder)};
function kb(a,b,c,d){var e,f=[],h=[],g=!0;for(d=d?f:h;g&&!d.length&&(e=b.pop());){var k=a;for(var l=e,m=[],n=l.length;n--;){var p=l[n],x=N(p.siteId,p.seqId,P(p.context),p.invCount+1,k.i(p));O(x.context,p);m.push(x)}k=m;c.push(k);for(l=0;l<k.length;l++){m=k[l];ab(a.b,m);n=N(m.siteId,m.seqId,P(m.context),m.invCount,m.load);g=jb(a,n,db(a.b,n.context,a.a));if(!g)break;O(a.a,n);a.v(n)&&h.push(n);f.push(m)}}return{toSend:f,toExec:h,missing:!g}}
function jb(a,b,c){if(c&&c.length&&b.invCount){var d=c;if(d&&d.length){b.load=a.i(b);b.invCount--;Ja(b.context,b);c=[];for(var e=[],f=0;f<d.length;f++){var h=d[f];Ka(b.context,h)||Ka(h.context,b)?e.push(d[f]):c.push(d[f])}d=!0;c.length&&(d=jb(a,b,c));O(b.context,b);b.load=a.i(b);b.invCount++;c=d?e:null}else c=d}if(c&&c.length)for(e=0;e<c.length;e++){d=c[e];if(d.doUndoPair)O(b.context,d);else{var g=a.b;a:{var f=void 0,h=g.c[g.a[d.siteId]],k=d.seqId,l=d.invCount,m=b.context,n=g.b,p=hb(h,k);if(p&&p.cache&&
(f=p.cache[g.a[b.siteId]]))for(g=0,p=f.a.length;g<p;g++){var x=f.get(g);b:{var y=n.length;if(!x||l&1^+x.Y||m.size>y)y=!1;else{for(var B=x.context,I=0,u=0;u<y;u++){var v=B[u]||0;if(v){I++;var w=m.vector[n[u]];if(ha(v)){var F=v;var G=0}else F=v[0],G=(v.length-1)/2;if(!w||w.seqId!=F||w.invClusterSize!=G){y=!1;break b}if(G)for(w=w.invCluster,F=v.length,G=1;G<F;G+=2)if((w[+v[G]]||0)!=v[G+1]){y=!1;break b}}}y=I!=m.size?!1:!0}}if(y){f=N(h.c,k,P(m),l,x.load);break a}}f=null}if(f)d=f;else if(!jb(a,d,db(a.b,
d.context,b.context)))return!1;f=lb(a,b,d);h=lb(a,d,b);b.load=f;d.load=h;a.b.cache(d,b.siteId)}a.b.cache(b,d.siteId)}return!!c}function lb(a,b,c){var d=b.load;null!=b.load&&null!=c.load&&(d=a.o(b,c));O(b.context,c);return d}var T=R.prototype;T.commit=T.R;T.update=T.N;T.canUndo=T.K;T.undo=T.la;T.canRedo=T.J;T.redo=T.da;T.getUndoOneOpAtATime=T.W;T.setUndoOneOpAtATime=T.ia;T.getSiteId=T.T;T.getContext=T.L;T.getExecOrder=T.M;D("Document",R,M);function mb(a,b){return{type:0,at:a,value:b}}function nb(a,b){return{type:1,at:a,value:b}}function ob(a,b,c){return{type:2,at:a,value:b,was:c}}function pb(a,b){return{type:3,from:a,to:b}}function qb(a,b){return Oa(a,b,2,rb)}function sb(a){return Qa(a,tb)}
var rb=[function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load},function(a){return a.load}],tb=[function(a){return nb(L(a.load.at,0),Ca(a.load.value))},
function(a){return mb(L(a.load.at,0),Ca(a.load.value))},function(a){return ob(L(a.load.at,0),Ca(a.load.was),Ca(a.load.value))},function(a){return pb(L(a.load.to,0),L(a.load.from,0))}],vb=[function(a,b){var c=b.load,d=c.at,e=c.value,c=ub(a,d),f=E(c.parent),h=d[d.length-1];if("object"==f){if(z(c.value))throw Error("Incorrect Insert operation: key already exists in object");c.parent[h]=e}else if("array"==f)if(d=c.parent.length,0<=h&&h<=d)h==d?c.parent.push(e):h?c.parent.splice(h,0,e):c.parent.unshift(e);
else throw Error("Incorrect Insert operation: index out of range");else if("string"==f)e=c.parent.substring(0,h)+e+c.parent.substring(h),z(c.l)?c.l[d[d.length-2]]=e:a=e;else{if(z(c.value))throw Error("Incorrect Insert operation: use Replace to set root object");throw Error("Incorrect Insert operation: cannot insert a value into a parent that is not an Object, Array, or String");}return a},function(a,b){var c=b.load,d=c.at,e=ub(a,d),f=E(e.parent),h=d[d.length-1];if("object"==f){if(!z(e.value))throw Error("Incorrect Remove operation: key doesn't exist in object");
delete e.parent[h]}else if("array"==f)if(d=e.parent.length,0<=h&&h<d)h==d-1?e.parent.pop():h?e.parent.splice(h,1):e.parent.shift();else throw Error("Incorrect Remove operation: index out of range");else if("string"==f)h=e.parent.substring(0,h)+e.parent.substring(h+c.value.length),z(e.l)?e.l[d[d.length-2]]=h:a=h;else{if(z(e.value))throw Error("Incorrect Remove operation: use Replace to set root object");throw Error("Incorrect Remove operation: cannot remove a key from a parent that is not an Object, Array, or String");
}return a},function(a,b){var c=b.load,d=c.at,e=c.value,f=ub(a,d),h=E(f.parent),g=d[d.length-1];if("object"==h){if(!z(f.value))throw Error("Incorrect Replace operation: key doesn't exist in object");f.parent[g]=e}else if("array"==h)if(d=f.parent.length,0<=g&&g<=d)f.parent[g]=e;else throw Error("Incorrect Replace operation: index out of range");else if("string"==h)e=f.parent.substring(0,g)+e+f.parent.substring(g+c.was.length),z(f.l)?f.l[d[d.length-2]]=e:a=e;else if(z(f.value))a=e;else throw Error("Incorrect Replace operation: cannot set a key value of a parent that is not an Object, Array, or String");
return a},function(a){return a}],wb=[function(a){return L(a,0)},function(a){return L(a,0)},function(a){return L(a,0)},function(a){return L(a,0)}];function ub(a,b){var c=b.length-2;if(-2==c)c=a;else{if(-1==c)var d=a;else{var e=a;for(d=0;z(e)&&d<c;d++)e=J(e)?e[b[d]]:void 0;d=J(e)?e[b[c]]:void 0}c=J(d)?d[b[c+1]]:void 0}return{l:e,parent:d,value:c}}var U={};D("insert",mb,U);D("remove",nb,U);D("replace",ob,U);D("move",pb,U);D("transform",qb,U);D("invert",sb,U);
D("exec",function(a,b){return Sa(a,b,"",vb)},U);D("moveCursor",function(a,b,c){return Sa(a,b,c,wb)},U);D("OpType.INSERT",0,U);D("OpType.REMOVE",1,U);D("OpType.REPLACE",2,U);D("OpType.MOVE",3,U);D("json",U,M);function xb(a,b,c,d){if(!(this instanceof xb))return new xb(a,b,c,d);R.call(this,qb,sb,a,b,c,d);return this}na(xb,R);D("json.Document",xb,M);function yb(){0!=zb&&(this[ia]||(this[ia]=++ja));this.D=this.D;this.ma=this.ma}var zb=0;yb.prototype.D=!1;function Ab(a,b){this.type=a;this.b=this.a=b;this.fa=!0};var Bb="closure_listenable_"+(1E6*Math.random()|0),Cb=0;function Db(a,b,c,d,e){this.listener=a;this.a=null;this.src=b;this.type=c;this.capture=!!d;this.w=e;this.key=++Cb;this.s=this.u=!1}function Eb(a){a.s=!0;a.listener=null;a.a=null;a.src=null;a.w=null};function Fb(a){this.src=a;this.a={};this.b=0}Fb.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.a[f];a||(a=this.a[f]=[],this.b++);var h=Gb(a,b,d,e);-1<h?(b=a[h],c||(b.u=!1)):(b=new Db(b,this.src,f,!!d,e),b.u=c,a.push(b));return b};function Hb(a,b){var c=b.type;if(!(c in a.a))return!1;var d=a.a[c],e=pa(d,b),f;(f=0<=e)&&Array.prototype.splice.call(d,e,1);f&&(Eb(b),a.a[c].length||(delete a.a[c],a.b--));return f}
function Ib(a,b,c){var d=z(b),e=d?b.toString():"",f=z(c);return Aa(a.a,function(a){for(var b=0;b<a.length;++b)if(!(d&&a[b].type!=e||f&&a[b].capture!=c))return!0;return!1})}function Gb(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e];if(!f.s&&f.listener==b&&f.capture==!!c&&f.w==d)return e}return-1};var Jb="closure_lm_"+(1E6*Math.random()|0),Kb={},Lb=0;function Mb(a,b,c,d,e){if("array"==E(b))for(var f=0;f<b.length;f++)Mb(a,b[f],c,d,e);else(c=Nb(c),a&&a[Bb])?a.I(b,c,d,e):a&&(a=Ob(a))&&(b=a.a[b.toString()],a=-1,b&&(a=Gb(b,c,!!d,e)),c=-1<a?b[a]:null)&&(ha(c)||!c||c.s||((d=c.src)&&d[Bb]?d.A(c):(e=c.type,b=c.a,d.removeEventListener?d.removeEventListener(e,b,c.capture):d.detachEvent&&d.detachEvent(e in Kb?Kb[e]:Kb[e]="on"+e,b),Lb--,(e=Ob(d))?(Hb(e,c),e.b||(e.src=null,d[Jb]=null)):Eb(c))))}
function Ob(a){a=a[Jb];return a instanceof Fb?a:null}var Pb="__closure_events_fn_"+(1E9*Math.random()>>>0);function Nb(a){if("function"==E(a))return a;a[Pb]||(a[Pb]=function(b){return a.handleEvent(b)});return a[Pb]};function V(){yb.call(this);this.b=new Fb(this);this.ka=this}na(V,yb);V.prototype[Bb]=!0;q=V.prototype;q.removeEventListener=function(a,b,c,d){Mb(this,a,b,c,d)};function Qb(a,b){var c=a.ka,d=b,e=d.type||d;if(H(d))d=new Ab(d,c);else if(d instanceof Ab)d.a=d.a||c;else{var f=d,d=new Ab(e,c);Ea(d,f)}c=d.b=c;Rb(c,e,!0,d);Rb(c,e,!1,d)}q.C=function(a,b,c,d){return this.b.add(String(a),b,!1,c,d)};q.aa=function(a,b,c,d){return this.b.add(String(a),b,!0,c,d)};
q.I=function(a,b,c,d){var e=this.b;a=String(a).toString();if(a in e.a){var f=e.a[a];b=Gb(f,b,c,d);-1<b?(Eb(f[b]),Array.prototype.splice.call(f,b,1),f.length||(delete e.a[a],e.b--),e=!0):e=!1}else e=!1;return e};q.A=function(a){return Hb(this.b,a)};q.ea=function(a){if(this.b){var b=this.b;a=a&&a.toString();var c=0,d;for(d in b.a)if(!a||d==a){for(var e=b.a[d],f=0;f<e.length;f++)++c,Eb(e[f]);delete b.a[d];b.b--}b=c}else b=0;return b};
function Rb(a,b,c,d){b=a.b.a[String(b)];if(!b)return!0;b=b.concat();for(var e=!0,f=0;f<b.length;++f){var h=b[f];if(h&&!h.s&&h.capture==c){var g=h.listener,k=h.w||h.src;h.u&&a.A(h);e=!1!==g.call(k,d)&&e}}return e&&0!=d.fa}q.X=function(a,b){return Ib(this.b,z(a)?String(a):void 0,b)};function Sb(a,b){V.call(this);this.g=a||1;this.c=b||t;this.h=K(this.j,this);this.i=ma()}na(Sb,V);Sb.prototype.f=!1;Sb.prototype.a=null;Sb.prototype.j=function(){if(this.f){var a=ma()-this.i;0<a&&a<.8*this.g?this.a=this.c.setTimeout(this.h,this.g-a):(this.a&&(this.c.clearTimeout(this.a),this.a=null),Qb(this,"tick"),this.f&&(this.a=this.c.setTimeout(this.h,this.g),this.i=ma()))}};Sb.prototype.start=function(){this.f=!0;this.a||(this.a=this.c.setTimeout(this.h,this.g),this.i=ma())};function Tb(a){V.call(this);this.i=!0;this.o=this.g=Ub;this.na=a||null;this.c=[];this.h=0;this.f=null;this.j=200;this.G=1E3;this.a={totalRequestsSent:0,successfulRequests:0,failedRequests:0,completeRequests:0,emptyRequestsSent:0,loadedRequestsSent:0,totalUpdatesSent:0,deliveredUpdates:0,lostUpdates:0,reQueuedUpdates:0,receivedUpdates:0}}na(Tb,V);var Ub="complete";q=Tb.prototype;
q.start=function(a){if(!this.F)throw Error("Sending function is not set");z(a)&&(this.G=a);this.f||(this.f=new Sb(this.G,this.na),this.f.C("tick",this.ca,!1,this),this.f.start())};q.P=function(){if(this.f){var a=this.f;a.f=!1;a.a&&(a.c.clearTimeout(a.a),a.a=null)}};q.O=function(a,b){this.h=Math.max(a,this.h);this.c.push.apply(this.c,b);this.f||this.start()};q.ga=function(a){this.j=a};q.S=function(){return this.j};
q.ca=function(){if(this.g===Ub){var a=this.c.splice(0,Math.min(this.c.length,this.j)),b=a.length;if(b){var c="sending";var d={type:"before-send-updates",value:a}}else c="requesting-updates",d={type:"before-request-updates"};Qb(this,d);Vb(this,c);c=K(this.ba,this,a);this.F(this.h,a,c);this.a.totalRequestsSent++;this.a.totalUpdatesSent+=b;b?this.a.loadedRequestsSent++:this.a.emptyRequestsSent++}};
q.ba=function(a,b,c,d){this.a.completeRequests++;b?(this.a.successfulRequests++,a&&a.length&&(this.a.deliveredUpdates+=a.length,Qb(this,{type:"updates-delivered",value:a})),d&&d.length&&(this.a.receivedUpdates+=d.length,Qb(this,{type:"updates-received",value:d})),z(c)&&Q(c)&&(this.h=c)):(this.a.failedRequests++,this.a.lostUpdates+=a.length,this.a.reQueuedUpdates+=a.length,this.c=a.concat(this.c));this.i=b;Vb(this,Ub)};q.ha=function(a){this.F=a};q.Z=function(){return this.i};
q.$=function(){return!this.c.length&&"sending"!==this.g&&"sending"!==this.o&&this.i};q.V=function(){return this.g};function Vb(a,b){a.o=a.g;a.g=b;Qb(a,{type:"status-changed",status:a.g,prevStatus:a.o})}q.U=function(){return this.a};var W=Tb.prototype;W.start=W.start;W.stop=W.P;W.send=W.O;W.isOnline=W.Z;W.isUpToDate=W.$;W.getStatus=W.V;W.getStat=W.U;W.setSendingFn=W.ha;W.getMaxUpdatesCount=W.S;W.setMaxUpdatesCount=W.ga;W.hasListener=W.X;W.listen=W.C;W.listenOnce=W.aa;W.unlisten=W.I;
W.unlistenByKey=W.A;W.removeAllListeners=W.ea;D("net.Http",Tb,M);function Wb(){}function Xb(a,b,c,d){if(b==c)return[[0,b]];"undefined"==typeof d&&(d=!0);var e=Yb(b,c),f=b.substring(0,e);b=b.substring(e);c=c.substring(e);var e=Zb(b,c),h=b.substring(b.length-e);b=b.substring(0,b.length-e);c=c.substring(0,c.length-e);b=$b(a,b,c,d);f&&b.unshift([0,f]);h&&b.push([0,h]);ac(a,b);return b}
function $b(a,b,c,d){if(!b)return[[1,c]];if(!c)return[[-1,b]];var e=b.length>c.length?b:c;var f=b.length>c.length?c:b,h=e.indexOf(f);if(-1!=h){var g=[[1,e.substring(0,h)],[0,f],[1,e.substring(h+f.length)]];b.length>c.length&&(g[0][0]=g[2][0]=-1);return g}if(e=bc(b,c)){c=e[1];var k=e[3];b=e[4];g=Xb(a,e[0],e[2],d);a=Xb(a,c,k,d);return g.concat([[0,b]],a)}d&&(100>b.length||100>c.length)&&(d=!1);d&&(k=cc(b,c),b=k[0],c=k[1],k=k[2]);a:{e=b;var f=c,l=(new Date).getTime()+1E3,h=e.length,m=f.length,n=h+m-
1,p=64<n,x=[],y=[],B={},I={};B[1]=0;I[1]=0;for(var u,v,w={},F=!1,G=!!w.hasOwnProperty,S=(h+m)%2,C=0;C<n&&!((new Date).getTime()>l);C++){x[C]={};for(var A=-C;A<=C;A+=2){u=A==-C||A!=C&&B[A-1]<B[A+1]?B[A+1]:B[A-1]+1;v=u-A;p&&(g=u+","+v,S&&(G?w.hasOwnProperty(g):void 0!==w[g])&&(F=!0),S||(w[g]=C));for(;!F&&u<h&&v<m&&e.charAt(u)==f.charAt(v);)u++,v++,p&&(g=u+","+v,S&&(G?w.hasOwnProperty(g):void 0!==w[g])&&(F=!0),S||(w[g]=C));B[A]=u;x[C][u+","+v]=!0;if(u==h&&v==m){g=dc(x,e,f);break a}if(F){y=y.slice(0,
w[g]+1);g=dc(x,e.substring(0,u),f.substring(0,v));g=g.concat(ec(y,e.substring(u),f.substring(v)));break a}}if(p)for(y[C]={},A=-C;A<=C;A+=2){u=A==-C||A!=C&&I[A-1]<I[A+1]?I[A+1]:I[A-1]+1;v=u-A;g=h-u+","+(m-v);!S&&(G?w.hasOwnProperty(g):void 0!==w[g])&&(F=!0);for(S&&(w[g]=C);!F&&u<h&&v<m&&e.charAt(h-u-1)==f.charAt(m-v-1);)u++,v++,g=h-u+","+(m-v),!S&&(G?w.hasOwnProperty(g):void 0!==w[g])&&(F=!0),S&&(w[g]=C);I[A]=u;y[C][u+","+v]=!0;if(F){x=x.slice(0,w[g]+1);g=dc(x,e.substring(0,h-u),f.substring(0,m-v));
g=g.concat(ec(y,e.substring(h-u),f.substring(m-v)));break a}}}g=null}g||(g=[[-1,b],[1,c]]);if(d){d=g;b=k;for(c=0;c<d.length;c++){k=d[c][1];e=[];for(f=0;f<k.length;f++)e[f]=b[k.charCodeAt(f)];d[c][1]=e.join("")}fc(a,g);g.push([0,""]);c=b=d=0;for(k=e="";d<g.length;){switch(g[d][0]){case 1:c++;k+=g[d][1];break;case -1:b++;e+=g[d][1];break;case 0:if(1<=b&&1<=c){k=Xb(a,e,k,!1);g.splice(d-b-c,b+c);d=d-b-c;for(b=k.length-1;0<=b;b--)g.splice(d,0,k[b]);d+=k.length}b=c=0;k=e=""}d++}g.pop()}return g}
function cc(a,b){function c(a){for(var b="",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf("\n",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1),c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]="";var f=c(a),h=c(b);return[f,h,d]}
function dc(a,b,c){for(var d=[],e=b.length,f=c.length,h=null,g=a.length-2;0<=g;g--)for(;;)if(a[g].hasOwnProperty?a[g].hasOwnProperty(e-1+","+f):void 0!==a[g][e-1+","+f]){e--; -1===h?d[0][1]=b.charAt(e)+d[0][1]:d.unshift([-1,b.charAt(e)]);h=-1;break}else if(a[g].hasOwnProperty?a[g].hasOwnProperty(e+","+(f-1)):void 0!==a[g][e+","+(f-1)]){f--;1===h?d[0][1]=c.charAt(f)+d[0][1]:d.unshift([1,c.charAt(f)]);h=1;break}else{e--;f--;if(b.charAt(e)!=c.charAt(f))throw Error("No diagonal. Can't happen. (diff_path1)");
0===h?d[0][1]=b.charAt(e)+d[0][1]:d.unshift([0,b.charAt(e)]);h=0}return d}
function ec(a,b,c){for(var d=[],e=0,f=b.length,h=c.length,g=null,k=a.length-2;0<=k;k--)for(;;)if(a[k].hasOwnProperty?a[k].hasOwnProperty(f-1+","+h):void 0!==a[k][f-1+","+h]){f--; -1===g?d[e-1][1]+=b.charAt(b.length-f-1):d[e++]=[-1,b.charAt(b.length-f-1)];g=-1;break}else if(a[k].hasOwnProperty?a[k].hasOwnProperty(f+","+(h-1)):void 0!==a[k][f+","+(h-1)]){h--;1===g?d[e-1][1]+=c.charAt(c.length-h-1):d[e++]=[1,c.charAt(c.length-h-1)];g=1;break}else{f--;h--;if(b.charAt(b.length-f-1)!=c.charAt(c.length-
h-1))throw Error("No diagonal. Can't happen. (diff_path2)");0===g?d[e-1][1]+=b.charAt(b.length-f-1):d[e++]=[0,b.charAt(b.length-f-1)];g=0}return d}function Yb(a,b){if(!a||!b||a.charCodeAt(0)!==b.charCodeAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e}
function Zb(a,b){if(!a||!b||a.charCodeAt(a.length-1)!==b.charCodeAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e}
function bc(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,f="",h,g,k,m;-1!=(e=b.indexOf(d,e+1));){var l=Yb(a.substring(c),b.substring(e)),w=Zb(a.substring(0,c),b.substring(0,e));f.length<w+l&&(f=b.substring(e-w,e)+b.substring(e,e+l),h=a.substring(0,c-w),g=a.substring(c+l),k=b.substring(0,e-w),m=b.substring(e+l))}return f.length>=a.length/2?[h,g,k,m,f]:null}var d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(10>d.length||1>e.length)return null;var f=c(d,e,Math.ceil(d.length/
4)),d=c(d,e,Math.ceil(d.length/2)),h;if(f||d)d?h=f?f[4].length>d[4].length?f:d:d:h=f;else return null;if(a.length>b.length){f=h[0];d=h[1];e=h[2];var g=h[3]}else e=h[0],g=h[1],f=h[2],d=h[3];return[f,d,e,g,h[4]]}function fc(a,b){for(var c=!1,d=[],e=0,f=null,h=0,g=0,k=0;h<b.length;)0==b[h][0]?(d[e++]=h,g=k,k=0,f=b[h][1]):(k+=b[h][1].length,null!==f&&f.length<=g&&f.length<=k&&(b.splice(d[e-1],0,[-1,f]),b[d[e-1]+1][0]=1,e--,e--,h=0<e?d[e-1]:-1,k=g=0,f=null,c=!0)),h++;c&&ac(a,b);gc(b)}
function gc(a){function b(a,b){if(!a||!b)return 5;var g=0;if(a.charAt(a.length-1).match(c)||b.charAt(0).match(c))if(g++,a.charAt(a.length-1).match(d)||b.charAt(0).match(d))if(g++,a.charAt(a.length-1).match(e)||b.charAt(0).match(e))g++,(a.match(f)||b.match(h))&&g++;return g}for(var c=/[^a-zA-Z0-9]/,d=/\s/,e=/[\r\n]/,f=/\n\r?\n$/,h=/^\r?\n\r?\n/,g=1;g<a.length-1;){if(0==a[g-1][0]&&0==a[g+1][0]){var k=a[g-1][1],l=a[g][1],m=a[g+1][1],n=Zb(k,l);if(n)var p=l.substring(l.length-n),k=k.substring(0,k.length-
n),l=p+l.substring(0,l.length-n),m=p+m;for(var n=k,p=l,x=m,y=b(k,l)+b(l,m);l.charAt(0)===m.charAt(0);){var k=k+l.charAt(0),l=l.substring(1)+m.charAt(0),m=m.substring(1),B=b(k,l)+b(l,m);B>=y&&(y=B,n=k,p=l,x=m)}a[g-1][1]!=n&&(n?a[g-1][1]=n:(a.splice(g-1,1),g--),a[g][1]=p,x?a[g+1][1]=x:(a.splice(g+1,1),g--))}g++}}
function ac(a,b){b.push([0,""]);for(var c=0,d=0,e=0,f="",h="",g;c<b.length;)switch(b[c][0]){case 1:e++;h+=b[c][1];c++;break;case -1:d++;f+=b[c][1];c++;break;case 0:if(d||e){if(d&&e){if(g=Yb(h,f))0<c-d-e&&0==b[c-d-e-1][0]?b[c-d-e-1][1]+=h.substring(0,g):(b.splice(0,0,[0,h.substring(0,g)]),c++),h=h.substring(g),f=f.substring(g);if(g=Zb(h,f))b[c][1]=h.substring(h.length-g)+b[c][1],h=h.substring(0,h.length-g),f=f.substring(0,f.length-g)}d?e?b.splice(c-d-e,d+e,[-1,f],[1,h]):b.splice(c-d-e,d+e,[-1,f]):
b.splice(c-d-e,d+e,[1,h]);c=c-d-e+(d?1:0)+(e?1:0)+1}else c&&0==b[c-1][0]?(b[c-1][1]+=b[c][1],b.splice(c,1)):c++;d=e=0;h=f=""}""===b[b.length-1][1]&&b.pop();d=!1;for(c=1;c<b.length-1;)0==b[c-1][0]&&0==b[c+1][0]&&(b[c][1].substring(b[c][1].length-b[c-1][1].length)==b[c-1][1]?(b[c][1]=b[c-1][1]+b[c][1].substring(0,b[c][1].length-b[c-1][1].length),b[c+1][1]=b[c-1][1]+b[c+1][1],b.splice(c-1,1),d=!0):b[c][1].substring(0,b[c+1][1].length)==b[c+1][1]&&(b[c-1][1]+=b[c+1][1],b[c][1]=b[c][1].substring(b[c+1][1].length)+
b[c+1][1],b.splice(c+1,1),d=!0)),c++;d&&ac(a,b)};function X(a,b){return{type:0,at:a,value:b}}function Y(a,b){return{type:1,at:a,value:b}}function hc(a,b){return Oa(a,b,1,ic)}function jc(a){return Qa(a,kc)}
var ic=[function(a,b){var c=a.load,d=c.at,c=c.value,e=b.load,f=e.at,e=e.value.length;return c=d>f||d==f&&a.siteId>b.siteId?X(d+e,c):X(d,c)},function(a,b){var c=a.load,d=c.at,e=c.value,f=b.load,h=f.at,f=f.value.length;d>h+f?c=X(d-f,c.value):d>=h?c=null:c=X(d,e);return c},function(a,b){var c=a.load,d=c.at,c=c.value,e=c.length,f=b.load,h=f.at,f=f.value,g=f.length;d>h?c=Y(d+g,c):(d+e>=h&&(c=c.substring(0,h-d)+f+c.substring(h-d)),c=Y(d,c));return c},function(a,b){var c=a.load,d=c.at,c=c.value,e=d+c.length-
1,f=b.load,h=f.at,f=f.value.length,g=h+f-1,k=Math.max(h,d),l=Math.min(g,e);k<=l?k==d&&l==e?c=null:(c=c.substring(0,k-d)+c.substring(l+1-d),c=Y(Math.min(d,h),c)):c=d>g?Y(d-f,c):Y(d,c);return c}],kc=[function(a){return Y(a.load.at,a.load.value)},function(a){return X(a.load.at,a.load.value)}],lc=[function(a,b){var c=b.load,d=c.at;return a.substring(0,d)+c.value+a.substring(d)},function(a,b){var c=b.load,d=c.at;return a.substring(0,d)+a.substring(d+c.value.length)}],mc=[function(a,b,c){var d=b.load,e=
d.at,d=d.value.length;return a>e||a==e&&b.siteId<c?a+d:a},function(a,b){var c=b.load,d=c.at,c=c.value.length;return a>d?Math.max(d,a-c):a}],Z={};D("insert",X,Z);D("remove",Y,Z);D("transform",hc,Z);D("invert",jc,Z);D("exec",function(a,b){return Sa(a,b,"",lc)},Z);D("moveCursor",function(a,b,c){return Sa(a,b,c,mc)},Z);
D("genOps",function(a,b){var c=new Wb,d=Xb(c,a,b);fc(c,d);for(var c=0,e=[],f,h=0;h<d.length;h++){var g=d[h];f=g[0];var k=g[1],g=k.length;f?(-1==f?f=Y(c,k):(f=X(c,k),c+=g),e.push(f)):c+=g}return e},Z);D("OpType.INSERT",0,Z);D("OpType.REMOVE",1,Z);D("string",Z,M);function nc(a,b,c,d){if(!(this instanceof nc))return new nc(a,b,c,d);R.call(this,hc,jc,a,b,c,d);return this}na(nc,R);D("string.Document",nc,M);D("collaborative",M,void 0);D("clv",M,void 0);}).call(this);