﻿// Copyright (c) Microsoft.  All rights reserved.
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
// files (the "Software"), to deal  in the Software without restriction, including without limitation the rights  to use, copy,
// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

(function(c,b){if(!c.datajs)c.datajs={};if(!c.OData)c.OData={};var M=c.datajs,d=c.OData,f={batch:"batch",complexType:"complex",entry:"entry",feedOrLinks:"feedOrLinks",primitiveType:"primitive",svcDoc:"service document",unknown:"unknown",none:"none"},l={complex:"complex",deferred:"deferred",inline:"inline",primitive:"primitive",none:"none"},B=function(a){return a!==null&&a!==b},Zd=function(b,d){var a,c;for(a=0,c=b.length;a<c;a++)if(b[a]===d)return true;return false},e=function(a){if(arguments.length===1){c.setTimeout(a);return}var b=Array.prototype.slice.call(arguments,1);c.setTimeout(function(){a.apply(this,b)},0)},Lb=function(a){return a.__edmType==="Edm.DateTimeOffset"||!a.__edmType&&a.__offset},cb=function(a){var f=Lb(a),d=Db(a.__offset);if(f&&d!=="Z"){a=new Date(a.valueOf());var c=ac(d),i=a.getUTCHours()+c.d*c.h,h=a.getMinutes()+c.d*c.m;a.setUTCHours(i,h)}else if(!f)d="";var e=a.getUTCFullYear(),j=a.getUTCMonth()+1,g="";if(e<=0){e=-(e-1);g="-"}var b=a.getUTCMilliseconds();if(b===0)b="";else b="."+s(b.toString(),3);return g+s(e,4)+"-"+s(j,2)+"-"+s(a.getUTCDate(),2)+"T"+s(a.getUTCHours(),2)+":"+s(a.getUTCMinutes(),2)+":"+s(a.getUTCSeconds(),2)+b+d},s=function(b,c){var a=b.toString(10);while(a.length<c)a="0"+a;return a},Db=function(a){return!a||a==="Z"||a==="+00:00"||a==="-00:00"?"Z":a},xd=function(a,g,c,f,d,e){return d.request(a,function(d){try{d.headers&&gb(d.headers);d.data===b&&f.read(d,e)}catch(h){if(h.request===b)h.request=a;if(h.response===b)h.response=d;c(h)}g(d.data,d)},c)},w=function(a){return Object.prototype.toString.call(a)==="[object Array]"},rc=function(a){return Object.prototype.toString.call(a)==="[object Date]"},Fb=function(d,a,e){if(!d||!a)return null;if(w(a)){var b,f,c;for(b=0,f=a.length;b<f;b++){c=eb(d,a[b],e);if(c)return c}}else return eb(d,a,e)},Jb=function(b,a){return Fb(b,a,"complexType")},I=function(b,a){return Fb(b,a,"entityType")},eb=function(d,b,i){if(!b)return null;var a,e;if(b.dataServices){var g,f;g=b.dataServices.schema;for(a=0,e=g.length;a<e;a++){f=eb(d,g[a],i);if(f)return f}}else{var h=b["namespace"];if(d.indexOf(h)!==0)return null;if(d.charAt(h.length)!==".")return null;var j=d.substr(h.length+1),c=b[i];if(c)for(a=0,e=c.length;a<e;a++)if(c[a].name===j)return c[a]}return null},zd={accept:"Accept","content-type":"Content-Type",dataserviceversion:"DataServiceVersion",maxdataserviceversion:"MaxDataServiceVersion"},gb=function(a){for(var c in a){var d=c.toLowerCase(),b=zd[d];if(b&&d!==b){var e=a[c];delete a[c];a[b]=e}}},Ob=function(a,c){return a!==b?a:c},g=function(a){return parseInt(a,10)},ac=function(a){var b=a.substring(0,1);b=b==="+"?1:-1;var d=g(a.substring(1)),c=g(a.substring(a.indexOf(":")+1));return{d:b,h:d,m:c}},z=function(a){switch(typeof a){case"object":return!a?f.none:w(a)||w(a.results)?f.feedOrLinks:a.__metadata&&a.__metadata.uri!==b?f.entry:w(a.EntitySets)?f.svcDoc:w(a.__batchRequests)?f.batch:rc(a)?f.primitiveType:f.complexType;case"string":case"number":case"boolean":return f.primitiveType;default:return f.unknown}},Xb=function(a,c,d){if(!a.method)a.method="GET";if(!a.headers)a.headers={};else gb(a.headers);if(a.headers.Accept===b)a.headers.Accept=c.accept;B(a.data)&&a.body===b&&c.write(a,d)},ud=function(a){switch(z(a)){case f.complexType:return a.__deferred&&a.__deferred.uri?l.deferred:l.complex;case f.feedOrLinks:case f.entry:return l.inline;case f.primitiveType:return l.primitive;default:return l.none}},r=function(a){throw a;},T=function(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")},be=/^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#:]+)?(\?[^#]*)?(#.*)?/,gc=["scheme","authority","path","query","fragment"],lc=function(e){var b={isAbsolute:false};if(e){var c=be.exec(e);if(c){var a,d;for(a=0,d=gc.length;a<d;a++)if(c[a+1])b[gc[a]]=c[a+1]}if(b.scheme)b.isAbsolute=true}return b},p=function(e,f){if(!f)return e;var b=lc(e);if(b.isAbsolute)return e;var c=lc(f),a={},d;if(b.authority){a.authority=b.authority;d=b.path;a.query=b.query}else{if(!b.path){d=c.path;a.query=b.query||c.query}else{if(b.path.charAt(0)==="/")d=b.path;else d=Oc(b.path,c.path);a.query=b.query}a.authority=c.authority}a.path=Zc(d);a.scheme=c.scheme;a.fragment=b.fragment;return"".concat(a.scheme||"",a.authority||"",a.path||"",a.query||"",a.fragment||"")},Oc=function(d,b){var a="/",c;if(b){c=b.lastIndexOf("/");a=b.substring(0,c);if(a.charAt(a.length-1)!=="/")a=a+"/"}return a+d},Zc=function(a){var b="",d="",c;while(a)if(a.indexOf("..")===0||a.indexOf(".")===0)a=a.replace(/^\.\.?\/?/g,"");else if(a.indexOf("/..")===0){a=a.replace(/^\/\..\/?/g,"/");c=b.lastIndexOf("/");if(c===-1)b="";else b=b.substring(0,c)}else if(a.indexOf("/.")===0)a=a.replace(/^\/\.\/?/g,"/");else{d=a;c=a.indexOf("/",1);if(c!==-1)d=a.substring(0,c);b=b+d;a=a.replace(d,"")}return b},Y=0,Kd=function(a){return a.method&&a.method!=="GET"?false:true},Nc=function(){if(c.XMLHttpRequest)return new c.XMLHttpRequest;var a;if(c.ActiveXObject)try{return new c.ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(d){try{return new c.ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(b){a=b}}else a={message:"XMLHttpRequest not supported"};throw a;},yd=function(a){return a.indexOf("http://")===0||a.indexOf("https://")===0||a.indexOf("file://")===0},Pd=function(a){if(!yd(a))return true;var b=c.location.protocol+"//"+c.location.host+"/";return a.indexOf(b)===0?true:false},vd=function(d,a){try{delete c[a]}catch(e){c[a]=b;if(d===Y-1)Y-=1}},Uc=function(f,e){var b=f.getAllResponseHeaders().split(/\r?\n/),a,d;for(a=0,d=b.length;a<d;a++)if(b[a]){var c=b[a].split(": ");e[c[0]]=c[1]}};d.defaultHttpClient={callbackParameterName:"$callback",formatQueryString:"$format=json",enableJsonpCallback:false,request:function(d,i,h){var k={},a=null,o=false;k.abort=function(){if(!a)return;o=true;a.abort();a=null;h({message:"Request aborted"})};var e,b=d.requestUri;if(!this.enableJsonpCallback||Pd(b)){a=Nc();a.onreadystatechange=function(){if(a===null||a.readyState!==4)return;var e=a.statusText,c=a.status;if(c===1223){c=204;e="No Content"}var g=[];Uc(a,g);var f={requestUri:b,statusCode:c,statusText:e,headers:g,body:a.responseText};a=null;if(c>=200&&c<=299)i(f);else h({message:"HTTP request failed",request:d,response:f})};a.open(d.method||"GET",b,true);if(d.headers)for(e in d.headers)a.setRequestHeader(e,d.headers[e]);if(d.timeoutMS){a.timeout=d.timeoutMS;a.ontimeout=function(){if(a){a=null;h({message:"Request timed out"})}}}a.send(d.body)}else{if(!Kd(d))throw{message:"Request is not local and cannot be done through JSONP."};var m=Y;Y+=1;var n=m.toString();e="handleJSONP_"+n;c[e]=function(a){vd(e,m);i({body:a,statusCode:200,headers:{"Content-Type":"application/json"}})};var g=document.createElement("SCRIPT");g.setAttribute("type","text/javascript");var f=this.callbackParameterName+"="+e;if(this.formatQueryString)f+="&"+this.formatQueryString;var j=b.indexOf("?");if(j===-1)b=b+"?"+f;else if(j===b.length-1)b=b+f;else b=b+"&"+f;g.setAttribute("src",b);var l=document.getElementsByTagName("HEAD")[0];l.appendChild(g);l=g=null}return k}};var A=function(f){if(!f)return null;var b=f.split(";"),d={},a,e;for(a=1,e=b.length;a<e;a++){var c=b[a].split("=");d[T(c[0])]=c[1]}return{mediaType:T(b[0]),properties:d}},Sc=function(a){if(!a)return b;var d=a.mediaType,c;for(c in a.properties)d+=";"+c+"="+a.properties[c];return d},zb=function(b,a,c,d){return{contentType:b,dataServiceVersion:a,metadata:c,handler:d}},Kb=function(b,c,d){if(!b)return;var a=b.headers;if(!a[c])a[c]=d},Gc=function(a,b){if(!a.dataServiceVersion)a.dataServiceVersion=b},tb=function(c,d){var a=c.headers;return a&&a[d]||b},Vb=function(a){return A(tb(a,"Content-Type"))},Cb=function(a){return tb(a,"DataServiceVersion")},Wb=function(a,b){return a.accept.indexOf(b.mediaType)>=0},Md=function(c,h,a,e){if(!a||!a.headers)return false;var f=Vb(a),i=Cb(a)||"",g=a.body;if(!B(g))return false;if(Wb(c,f)){var d=zb(f,i,e?e.metadata:null,c);d.response=a;a.data=h(c,g,d);return a.data!==b}return false},Ed=function(d,g,a,f){if(!a||!a.headers)return false;var e=Vb(a),h=Cb(a);if(!e||Wb(d,e)){var c=zb(e,h,f?f.metadata:null,d);c.request=a;a.body=g(d,a.data,c);if(a.body!==b){Kb(a,"DataServiceVersion",c.dataServiceVersion||"1.0");Kb(a,"Content-Type",Sc(c.contentType));return true}}return false},C=function(c,b,d,a){return{accept:d,maxDataServiceVersion:a,read:function(a,b){return Md(this,c,a,b)},write:function(c,a){return Ed(this,b,c,a)}}},Xd=function(b,a){return a},Cd=function(c,a){return B(a)?a.toString():b};d.textHandler=C(Xd,Cd,"text/plain","2.0");var S="application/xml",sc="http://",Z=sc+"www.w3.org/",N=sc+"schemas.microsoft.com/ado/",X=N+"2007/08/dataservices",V=Z+"2000/xmlns/",pb=Z+"XML/1998/namespace",qc=N+"2007/06/edmx",fe=N+"2008/09/edm",de=N+"2006/04/edm",ee=N+"2007/05/edm",h=Z+"2005/Atom",L=Z+"2007/app",v=X,j=X+"/metadata",fb=X+"/related/",ic=X+"/scheme",vc=function(a){var b=/(^\s)|(\s$)/;return b.test(a)},Id=function(d,g){var h="<c>"+g+"</c>",e=a.parse(h,null),f=d.ownerDocument,c=e.domNode;if("importNode"in f)c=f.importNode(e.domNode,true);var b=c.firstChild;while(b){d.appendChild(b);b=b.nextSibling}},Q=function(c,b,a){try{c.setProperty(b,a)}catch(d){}},Qb=function(){var b,a;if(c.ActiveXObject)try{a=new ActiveXObject("Msxml2.DOMDocument.6.0");a.async=false;return a}catch(e){try{a=new ActiveXObject("Msxml2.DOMDocument.3.0");a.async=false;Q(a,"ProhibitDTD",true);Q(a,"MaxElementDepth",256);Q(a,"AllowDocumentFunction",false);Q(a,"AllowXsltScript",false);return a}catch(d){b=d}}else{if(c.DOMParser)return new c.DOMParser;b={message:"XML DOM parser not supported"}}throw b;},x=function(c,e,f){var d;if(c.getElementsByTagNameNS){d=c.getElementsByTagNameNS(e,f);if(d.length!==0)return d[0]}else{var b=c.firstChild;while(b){if(b.nodeType===1&&a.localName(b)===f&&b.namespaceURI===e)return b;b=b.nextSibling}}return null},a={addNamespaceAttribute:function(c,d,e){var b=c.ownerDocument,a;if(b.createAttributeNS)a=b.createAttributeNS(V,d);else a=b.createNode(2,d,V);a.nodeValue=e;c.setAttributeNode(a)},appendPreserving:function(a,b){if(vc(b)){var d=this.newDomAttribute(a,"space",pb,"xml");d.value="preserve"}var c=a.ownerDocument.createTextNode(b);a.appendChild(c)},attributes:function(f,e){var b,c=f.domNode,a,d;for(a=0,d=c.attributes.length;a<d;a++){b=c.attributes.item(a);e(this._wrapNode(b))}},attribute:function(b,a,c){return this._attribute(b.domNode,a,c)},attributeNode:function(d,b,c){var a=d.attributes;return a.getNamedItemNS?a.getNamedItemNS(c,b):a.getQualifiedItem(b,c)},childElements:function(c,d){var a=c.domNode.firstChild,b;while(a!==null){if(a.nodeType===1){b=p(this._baseURI(a),c.baseURI);d(this._wrapNode(a,b))}a=a.nextSibling}},firstElement:function(c){var a=c.domNode.firstChild,b;while(a!==null){if(a.nodeType===1){b=p(this._baseURI(a),c.baseURI);return this._wrapNode(a,b)}a=a.nextSibling}return null},innerText:function(e){var c=e.text;if(c!==b)return c;c="";var a=e.firstChild;if(a)do{if(a.nodeType===3||a.nodeType===4)c+=a.nodeValue;var d=a.firstChild;if(!d)while(a!==e){d=a.nextSibling;if(d){a=d;break}else a=a.parentNode}else a=d}while(a!==e);return c},localName:function(a){return a.localName?a.localName:a.baseName},newDocument:function(d,b){var a;if(c.ActiveXObject){a=Qb();a.documentElement=a.createNode(1,d,b)}else if(c.document.implementation&&c.document.implementation.createDocument)a=c.document.implementation.createDocument(b,d,null);var e=a.createProcessingInstruction("xml","version='1.0' encoding='utf-8'");a.insertBefore(e,a.documentElement);return this._wrapNode(a.documentElement)},newDomAttribute:function(d,c,g,f){var e=d.ownerDocument,a;c=f?f+":"+c:c;if(e.createAttributeNS){a=e.createAttributeNS(g,c);d.setAttributeNodeNS(a)}else{a=e.createNode(2,c,g||b);d.setAttributeNode(a)}return a},newDomElement:function(f,a,g,e){var d=f.ownerDocument,c;a=e?e+":"+a:a;if(d.createElementNS)c=d.createElementNS(g,a);else c=d.createNode(1,a,g||b);f.appendChild(c);return c},newElement:function(d,g,e,f){var c=d.domNode.ownerDocument,a;if(c.createElementNS)a=c.createElementNS(e,g);else a=c.createNode(1,g,e||b);f&&this.appendPreserving(a,f);d.domNode.appendChild(a);return this._wrapNode(a)},newAttribute:function(c,g,e,f){var d=c.domNode.ownerDocument,a;if(d.createAttributeNS){a=d.createAttributeNS(e,g);a.value=f;c.domNode.setAttributeNodeNS(a)}else{a=d.createNode(2,g,e||b);a.value=f;c.domNode.setAttributeNode(a)}return this._wrapNode(a)},qualifyXmlTagName:function(b,a){return a?a+":"+b:b},parse:function(d,c){var a=this._parse(d),b=p(this._baseURI(a),c);return this._wrapNode(a,b)},serialize:function(a){var b=a.domNode.ownerDocument;return this.serializeNode(b)},serializeChildren:function(d){var b=d.childNodes,a,e=b.length;if(e===0)return"";var c=d.ownerDocument.createDocumentFragment();for(a=0;a<e;a++)c.appendChild(b[a].cloneNode(true));return this.serializeNode(c)},serializeNode:function(a){var d=a.xml;if(d!==b)return d;if(c.XMLSerializer){var e=new c.XMLSerializer;return e.serializeToString(a)}throw{message:"XML serialization unsupported"};},_attribute:function(a,b,c){if(a.getAttributeNS)return a.getAttributeNS(c||null,b);var d=a.attributes.getQualifiedItem(b,c);return d?d.value:null},_baseURI:function(a){return this._attribute(a,"base",pb)},_parse:function(b){var a=Qb();if(a.parseFromString)a=a.parseFromString(b,"text/xml");else{a.loadXML(b);if(a.parseError.errorCode!==0)throw{message:a.parseError.reason,errorXmlText:b,srcText:a.parseError.srcText};}return a.documentElement},_wrapNode:function(a,d){var b=a.namespaceURI,c=a.nodeName;if(!b)if(a.nodeType===2&&(c==="xmlns"||c.indexOf("xmlns:",0)===0))b=V;else b=null;return{baseURI:d,domNode:a,localName:this.localName(a),nsURI:b}}},Qc=function(a){if(a.nsURI===v)switch(a.localName){case"links":return Wd(a);case"uri":return pc(a)}return b},Wd=function(c){var b=[];a.childElements(c,function(a){if(a.localName==="uri"&&a.nsURI===v){var c=pc(a);b.push(c)}});return{results:b}},pc=function(b){return{uri:a.innerText(b.domNode)}},Lc=function(a){if(z(a)===f.complexType&&!a.__metadata&&a.hasOwnProperty("uri"))return ce(a)},ce=function(b){var c=hd(null,"uri",v);b.uri&&a.appendPreserving(c.domNode,b.uri);return c},hd=function(b,d,c){return b?a.newElement(b,d,c):a.newDocument(d,c)},Yd=function(d,c){if(c){var b=a.parse(c);if(b)return Qc(b)}},Dd=function(h,g,c){var f=c.contentType=c.contentType||A(S),d=b;if(f&&f.mediaType===S){var e=Lc(g);if(e)d=a.serialize(e)}return d};d.xmlHandler=C(Yd,Dd,S,"2.0");d.xml=a;var Pb=["application/atom+xml","application/atomsvc+xml","application/xml"],Zb=Pb[0],Ud=a.qualifyXmlTagName("inline","m"),Bd=a.qualifyXmlTagName("properties","m"),Jc=a.qualifyXmlTagName("type","m"),Ic=a.qualifyXmlTagName("null","m"),Hc=[h,L,pb,V],Bc={SyndicationAuthorEmail:"author/email",SyndicationAuthorName:"author/name",SyndicationAuthorUri:"author/uri",SyndicationContributorEmail:"contributor/email",SyndicationContributorName:"contributor/name",SyndicationContributorUri:"contributor/uri",SyndicationPublished:"published",SyndicationRights:"rights",SyndicationSummary:"summary",SyndicationTitle:"title",SyndicationUpdated:"updated"},R=function(a){return!Zd(Hc,a)},D=function(a){return a},Vd=function(a){return a==="true"},nd=/^(-?\d{4,})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(.*)$/,vb=function(m,h){var a=nd.exec(m),d=a?Db(a[8]):null;if(!a||!h&&d!=="Z")throw{message:"Invalid date/time value"};var f=g(a[1]);if(f<=0)f++;var b=a[7];if(!b)b=0;else{if(b.length>4)throw{message:"Cannot parse date/time value to given precision."};while(b.length<4)b+="0";b=g(b.substring(1))}var k=g(a[4]),j=g(a[5]),l=g(a[6]);if(d!=="Z"){var e=ac(d),i=-e.d;k+=e.h*i;j+=e.m*i}var c=new Date;c.setUTCFullYear(f,g(a[2])-1,g(a[3]));c.setUTCHours(k,j,l,b);if(isNaN(c.valueOf()))throw{message:"Invalid date/time value"};if(h){c.__edmType="Edm.DateTimeOffset";c.__offset=d}return c},Ad=function(a){return vb(a,false)},Tc=function(a){return vb(a,true)},mc=function(){throw{message:"Edm.Time not supported"};},Ab={"Edm.Boolean":Vd,"Edm.Binary":D,"Edm.DateTime":Ad,"Edm.DateTimeOffset":Tc,"Edm.Time":mc,"Edm.Decimal":D,"Edm.Guid":D,"Edm.String":D,"Edm.Byte":g,"Edm.Double":parseFloat,"Edm.Single":parseFloat,"Edm.Int16":g,"Edm.Int32":g,"Edm.Int64":D,"Edm.SByte":g},m=function(a){return a.toString()},Od=mc,Dc={"Edm.Binary":m,"Edm.Boolean":m,"Edm.Byte":m,"Edm.DateTime":cb,"Edm.DateTimeOffset":cb,"Edm.Decimal":m,"Edm.Double":m,"Edm.Guid":m,"Edm.Int16":m,"Edm.Int32":m,"Edm.Int64":m,"Edm.SByte":m,"Edm.Single":m,"Edm.String":m,"Edm.Time":Od},hb=function(a){return a&&Ab[a]!==b},sb=function(a,b){if(a!==null&&b){var c=Ab[b];if(c)a=c(a)}return a},ub=function(a,b){if(a!==null&&b){if(rc(a))b=Lb(a)?"Edm.DateTimeOffset":"Edm.DateTime";var c=Dc[b];if(c)a=c(a)}return a},Mb=function(a,b){if(a.nsURI===h)switch(a.localName){case"feed":return Fd(a,b);case"entry":return bc(a,b)}if(a.nsURI===L&&a.localName==="service")return Cc(a)},Fd=function(d,e){var b={},c={results:[],__metadata:b};b.feed_extensions=E(d);a.childElements(d,function(d){switch(d.nsURI){case h:switch(d.localName){case"id":b.uri=p(a.innerText(d.domNode),d.baseURI);b.uri_extensions=E(d);break;case"title":b.title=a.innerText(d.domNode);b.title_extensions=E(d);break;case"entry":var i=bc(d,e);c.results.push(i);break;case"link":id(d,c)}return;case j:if(d.localName==="count"){c.__count=g(a.innerText(d.domNode));return}}var f=G(d);b.feed_extensions.push(f)});return c},id=function(d,c){var a=fc(d),b=c.__metadata;switch(a.rel){case"next":c.__next=a.href;b.next_extensions=a.extensions;break;case"self":b.self=a.href;b.self_extensions=a.extensions}},fc=function(c){var b={extensions:[]},d;a.attributes(c,function(a){if(!a.nsURI)switch(a.localName){case"href":b.href=p(a.domNode.nodeValue,c.baseURI);return;case"type":case"rel":b[a.localName]=a.domNode.nodeValue;return}if(R(a.nsURI)){d=F(a);b.extensions.push(d)}});if(!b.href)throw{error:"href attribute missing on link element",element:c};return b},G=function(b){var c={name:b.localName,namespaceURI:b.nsURI,attributes:E(b),children:[]};a.childElements(b,function(b){var a=G(b);c.children.push(a)});if(c.children.length===0){var d=a.innerText(b.domNode);if(d)c.value=d}return c},E=function(c){var b=[];a.attributes(c,function(a){if(R(a.nsURI)){var c=F(a);b.push(c)}});return b},F=function(a){return{name:a.localName,namespaceURI:a.nsURI,value:a.domNode.nodeValue}},Eb=function(d,a){if(d.indexOf("/")===-1)return a[d];else{var e=d.split("/"),c,f;for(c=0,f=e.length;c<f;c++){if(a===null)return b;a=a[e[c]];if(a===b)return a}return a}},Rc=function(g,a,k,h){var d;if(g.indexOf("/")===-1){a[g]=k;d=g}else{var f=g.split("/"),c,l;for(c=0,l=f.length-1;c<l;c++){var e=a[f[c]];if(e===b){e={};a[f[c]]=e}else if(e===null)return;a=e}d=f[c];a[d]=k}if(h){var j=a.__metadata=a.__metadata||{},i=j.properties=j.properties||{},m=i[d]=i[d]||{};m.type=h}},yb=function(a){return Bc[a]||a},kd=function(g,i,c,h){var e=i.split("/"),d,f;for(d=0,f=e.length;d<f;d++)if(e[d].charAt(0)==="@")return a._attribute(c,e[d].substring(1),g);else{c=x(c,g,e[d]);if(!c)return b}return h?a.serializeChildren(c):a.innerText(c)},od=function(f,h,l,k,j,g){var b=k,e=l.split("/"),c,i;for(c=0,i=e.length;c<i;c++){var d;if(e[c].charAt(0)==="@"){d=a.attributeNode(b,e[c].substring(1),f);if(!d)d=a.newDomAttribute(b,e[c].substring(1),f,h)}else{d=x(b,f,e[c]);if(!d)d=a.newDomElement(b,e[c],f,h)}b=d}if(b.nodeType===2)b.value=g;else if(j){b.setAttribute("type","xhtml");Id(b,g)}else a.appendPreserving(b,g)},rd=function(d){if(d.childNodes.length)return false;var c=d.attributes,e=c.length;if(e===0)return true;for(var a=0;a<e;a++){var b=c[a].nodeName;if(b!=="xmlns"&&b.indexOf("xmlns:")!==0)return false}return true},fd=function(i,m){var b=x(i.domNode,j,"properties");if(!b){var g=x(i.domNode,h,"content");if(g)b=x(g,j,"properties")}if(b){var a=b,e=m.split("/"),d,l;for(d=0,l=e.length-1;d<l;d++){a=x(a,v,e[d]);if(!a)return}var f=x(a,v,e[d]);f&&a.removeChild(f);var c=a;while(c!==b&&rd(c)){var k=c.parentNode;k.removeChild(c);c=k}}},rb=function(a,e,d,m,j,b,n){var f=a["FC_TargetPath"+b],g=yb(f),l=f!==g?h:a["FC_NsUri"+b],i=a["FC_KeepInContent"+b]==="true"?true:false,k=a["FC_ContentKind"+b]==="xhtml",o=a["FC_NsPrefix"+b]||null,c=Eb(e,m);if(!B(c))return;if(!i){Gc(n,"2.0");fd(d,e)}c=ub(c,j);od(l,o,g,d.domNode,k,c)},qb=function(a,g,k,f,e,c){if(a["FC_KeepInContent"+c]==="true")return;if(Eb(g,f)===null)return;var i=a["FC_TargetPath"+c],j=yb(i),l=i!==j?h:a["FC_NsUri"+c],m=a["FC_ContentKind"+c]==="xhtml",d=kd(l,j,k.domNode,m);if(d===b)return;d=sb(d,e);Rc(g,f,d,e)},db=function(h,c,l){var j=l.split("/"),e,k;while(c){var f=c;for(e=0,k=j.length;e<k;e++){var d=f.property;if(!d)break;var a,g,i=false;for(a=0,g=d.length;a<g;a++)if(d[a].name===j[e]){i=true;break}if(!i)break;var b=d[a].type;if(!b||hb(b))return b||null;f=Jb(b,h);if(!f)return null}c=I(c.baseType,h)}return null},Fc=function(l,h,d){if(!d||d.length===0)return;var j=h.__metadata.type;while(j){var a=I(j,d);if(!a)return;var c,b=a.FC_SourcePath;if(b){c=db(d,a,b);qb(a,b,l,h,c,"")}var i=a.property;if(i){var g,n;for(g=0,n=i.length;g<n;g++){var e=i[g],k=0,f="";while(e["FC_TargetPath"+f]){b=e.name;c=e.type;var m=e["FC_SourcePath"+f];if(m){b+="/"+m;c=db(d,a,b)}qb(e,b,l,h,c,f);k++;f="_"+k}}}j=a.baseType}},bc=function(d,e){var b={},c={__metadata:b},f=a.attribute(d,"etag",j);if(f)b.etag=f;a.childElements(d,function(d){if(d.nsURI===h)switch(d.localName){case"id":b.uri=p(a.innerText(d.domNode),d.baseURI);b.uri_extensions=E(d);break;case"category":ed(d,c,b);break;case"content":Pc(d,c);break;case"link":dd(d,c,e)}d.nsURI===j&&d.localName==="properties"&&ab(d,c,b)});Fc(d,c,e);return c},ed=function(d,f,b){var e=a.attribute(d,"scheme"),g=a.attribute(d,"term");if(e===ic){if(f.__metadata.type)throw{message:"Invalid AtomPub document: multiple category elements defining the entry type were encounterd withing an entry",element:d};b.type=g;b.type_extensions=[];var c;a.attributes(d,function(a){if(!a.nsURI){if(a.localName!=="scheme"&&a.localName!=="term"){c=F(a);b.type_extensions.push(c)}}else if(R(a.nsURI)){c=F(a);b.type_extensions.push(c)}})}},Pc=function(b,e){var d=a.attribute(b,"src"),f=a.attribute(b,"type"),c=e.__metadata;if(d){if(!f)throw{message:"Invalid AtomPub document: content element must specify the type attribute if the src attribute is also specified",element:b};c.media_src=p(d,b.baseURI);c.content_type=f}a.childElements(b,function(a){if(d)throw{message:"Invalid AtomPub document: content element must not have child elements if the src attribute is specified",element:b};a.nsURI===j&&a.localName==="properties"&&ab(a,e,c)})},yc=function(b,e,c){c.edit_media=b.href;c.edit_media_extensions=[];var a,d;for(a=0,d=b.extensions.length;a<d;a++)if(b.extensions[a].namespaceURI===j&&b.extensions[a].name==="etag")c.media_etag=b.extensions[a].value;else c.edit_media_extensions.push(b.extensions[a])},dd=function(d,c,e){var a=fc(d),b=c.__metadata;switch(a.rel){case"self":b.self=a.href;b.self_link_extensions=a.extensions;break;case"edit":b.edit=a.href;b.edit_link_extensions=a.extensions;break;case"edit-media":yc(a,c,b);break;default:a.rel.indexOf(fb)===0&&xc(d,a,c,e)}},xc=function(g,e,d,h){var f=e.rel.substring(fb.length),c=b;a.childElements(g,function(b){if(b.nsURI===j&&b.localName==="inline"){var d=a.firstElement(b);if(d)c=Mb(d,h);else c=null}});if(c===b)c={__deferred:{uri:e.href}};d[f]=c;d.__metadata.properties=d.__metadata.properties||{};d.__metadata.properties[f]={extensions:e.extensions}},ab=function(c,d,b){a.childElements(c,function(a){if(a.nsURI===v){b.properties=b.properties||{};Kc(a,d,b.properties)}})},Kc=function(c,i,h){var f=null,d="Edm.String",e=[];a.attributes(c,function(a){if(a.nsURI===j)switch(a.localName){case"null":f=a.domNode.nodeValue;return;case"type":d=a.domNode.nodeValue;return}if(R(a.nsURI)){var b=F(a);e.push(b)}});var b=null,g={type:d,extensions:e};if(f!=="true"){b=a.innerText(c.domNode);if(hb(d))b=sb(b,d);else if(a.firstElement(c)){b={__metadata:{type:d}};ab(c,b,g)}}i[c.localName]=b;h[c.localName]=g},Cc=function(c){var b={workspaces:[],extensions:[]};a.childElements(c,function(a){if(a.nsURI===L&&a.localName==="workspace"){var e=uc(a);b.workspaces.push(e)}else{var d=G(c);b.extensions.push(d)}});if(b.workspaces.length===0)throw{message:"Invalid AtomPub service document: No workspace element found.",element:c};return b},uc=function(c){var b={collections:[],extensions:[]};a.childElements(c,function(d){if(d.nsURI===h){if(d.localName==="title"){if(c.title)throw{message:"Invalid AtomPub service document: workspace has more than one child title element",element:d};b.title=a.innerText(d.domNode)}}else if(d.nsURI===L){if(d.localName==="collection"){var e=tc(d,b);b.collections.push(e)}}else{var f=G(c);b.extensions.push(f)}});b.title=b.title||"";return b},tc=function(c){var b={href:a.attribute(c,"href"),extensions:[]};if(!b.href)throw{message:"Invalid AtomPub service document: collection has no href attribute",element:c};b.href=p(b.href,c.baseURI);a.childElements(c,function(d){if(d.nsURI===h){if(d.localName==="title"){if(b.title)throw{message:"Invalid AtomPub service document: collection has more than one child title element",element:d};b.title=a.innerText(d.domNode)}}else if(d.nsURI!==L){var e=G(c);b.extensions.push(e)}});if(!b.title)throw{message:"Invalid AtomPub service document: collection has no title element",element:c};return b},gd=function(b,c){var a,d=z(b);switch(d){case f.feedOrLinks:a=cc(null,b,c);break;case f.entry:case f.complexType:a=ib(null,b,c)}return a},dc=function(c,d){if(c)return a.newElement(c,d,h);var b=a.newDocument(d,h);a.addNamespaceAttribute(b.domNode,"xmlns:d",v);a.addNamespaceAttribute(b.domNode,"xmlns:m",j);return b},cc=function(g,c,f){var d=dc(g,"feed"),b=w(c)?c:c.results;if(b){var a,e;for(a=0,e=b.length;a<e;a++)ib(d,b[a],f)}return d},ib=function(k,c,e){var b=dc(k,"entry"),i=a.newElement(b,"author",h);a.newElement(i,"name",h);a.newElement(b,"title",h);var d=a.newElement(b,"content",h);a.newAttribute(d,"type",null,"application/xml");var g=a.newElement(d,Bd,j),f=c.__metadata?c.__metadata.properties:null;Ec(b,c.__metadata);wb(b,g,c,f,e);Mc(b,c,e);return b},Mc=function(l,e,i){if(!e.__metadata)return;var h=i.metadata,a=I(e.__metadata.type,h);while(a){var k,c=a.FC_SourcePath;if(c){k=db(h,a,c);rb(a,c,l,e,k,"",i)}var g=a.property;if(g){var f,m;for(f=0,m=g.length;f<m;f++){var b=g[f],j=0,d="";while(b["FC_TargetPath"+d]){c=b.name;if(b["FC_SourcePath"+d])c+="/"+b["FC_SourcePath"+d];rb(b,c,l,e,b.type,d,i);j++;d="_"+j}}}a=I(a.baseType,h)}},Ec=function(c,b){if(b){b.etag&&a.newAttribute(c,"etag",j,b.etag);b.uri&&a.newElement(c,"id",h,b.uri);if(b.type){var d=a.newElement(c,"category",h);a.newAttribute(d,"term",null,b.type);a.newAttribute(d,"scheme",null,ic)}}},ad=function(c,d,e){var b=a.newElement(c,"link",h);a.newAttribute(b,"rel",null,e);a.newAttribute(b,"href",null,d);return b},wb=function(i,g,h,f,e){var a,c,d,b;for(a in h)if(a!=="__metadata"){c=h[a];d=ud(c);switch(d){case l.primitive:case l.complex:b=f?f[a]:null;Bb(g,a,d,c,b,e);break;case l.deferred:case l.inline:wc(i,d,a,c,e);break;case l.none:!(b&&b[a]&&!hb(b[a]))&&Bb(g,a,l.primitive,c,null,e)}}},Bb=function(h,m,k,e,c,i){var g=a.qualifyXmlTagName(m,"d"),d=c&&c.type,b;if(k===l.complex){b=a.newElement(h,g,v);var f;if(c)f=c.properties;wb(null,b,e,f,i)}else b=a.newElement(h,g,v,ub(e,d||"Edm.String"));e===null&&a.newAttribute(b,Ic,j,"true");d&&a.newAttribute(b,Jc,j,d)},wc=function(k,m,n,c,i){var e,d,b;if(m===l.inline){e=c.__metadata?c.__metadata.uri:"";b=z(c);switch(b){case f.entry:d=ib;break;case f.feedOrLinks:b="feed";d=cc;break;default:throw{message:"Invalid payload for inline navigation property: "+b};}}else e=c.__deferred.uri;var o=p(n,fb),g=ad(k,e,o);if(d){var h=a.newElement(g,Ud,j);a.newAttribute(g,"type",null,"application/atom+xml;type="+b);d(h,c,i)}},Nd=function(e,c,d){if(c){var b=a.parse(c);if(b)return Mb(b,d.metadata)}},pd=function(h,g,c){var e=c.contentType=c.contentType||A(Zb),d=b;if(e&&e.mediaType===Zb){var f=gd(g,c);d=a.serialize(f)}return d};d.atomHandler=C(Nd,pd,Pb.join(","),"2.0");var n={elements:{Association:{attributes:["Name"],elements:["End*","ReferentialConstraint"]},AssociationSet:{attributes:["Name","Association"],elements:["End*"]},CollectionType:{attributes:["ElementType","Nullable","DefaultValue","MaxLength","FixedLength","Precision","Scale","Unicode","Collation"]},ComplexType:{attributes:["Name","BaseType","Abstract"],elements:["Property*"]},DefiningExpression:{text:true},Dependent:{attributes:["Role"],elements:["PropertyRef*"]},Documentation:{text:true},End:{attributes:["Type","Role","Multiplicity","EntitySet"],elements:["OnDelete"]},EntityContainer:{attributes:["Name","Extends"],elements:["EntitySet*","AssociationSet*","FunctionImport*"]},EntitySet:{attributes:["Name","EntityType"]},EntityType:{attributes:["Name","BaseType","Abstract","OpenType"],elements:["Key","Property*","NavigationProperty*"]},Function:{attributes:["Name","ReturnType"],elements:["Parameter*","DefiningExpression","ReturnType"]},FunctionImport:{attributes:["Name","ReturnType","EntitySet"],elements:["Parameter*"]},Key:{elements:["PropertyRef*"]},NavigationProperty:{attributes:["Name","Relationship","ToRole","FromRole"]},OnDelete:{attributes:["Action"]},Parameter:{attributes:["Name","Type","Mode","MaxLength","Precision","Scale"]},Principal:{attributes:["Role"],elements:["PropertyRef*"]},Property:{attributes:["Name","Type","Nullable","DefaultValue","MaxLength","FixedLength","Precision","Scale","Unicode","Collation","ConcurrencyMode"]},PropertyRef:{attributes:["Name"]},ReferenceType:{attributes:["Type"]},ReferentialConstraint:{elements:["Principal","Dependent"]},ReturnType:{attributes:["ReturnType"],elements:["CollectionType","ReferenceType","RowType"]},RowType:{elements:["Property*"]},Schema:{attributes:["Namespace","Alias"],elements:["Using*","EntityContainer*","EntityType*","Association*","ComplexType*","Function*"]},TypeRef:{attributes:["Type","Nullable","DefaultValue","MaxLength","FixedLength","Precision","Scale","Unicode","Collation"]},Using:{attributes:["Namespace","Alias"]}}},xb=["m:FC_ContentKind","m:FC_KeepInContent","m:FC_NsPrefix","m:FC_NsUri","m:FC_SourcePath","m:FC_TargetPath"];n.elements.Property.attributes=n.elements.Property.attributes.concat(xb);n.elements.EntityType.attributes=n.elements.EntityType.attributes.concat(xb);n.elements.Edmx={attributes:["Version"],elements:["DataServices"],ns:qc};n.elements.DataServices={elements:["Schema*"],ns:qc};n.elements.EntityContainer.attributes.push("m:IsDefaultEntityContainer");n.elements.Property.attributes.push("m:MimeType");n.elements.FunctionImport.attributes.push("m:HttpMethod");n.elements.EntityType.attributes.push("m:HasStream");n.elements.DataServices.attributes=["m:DataServiceVersion"];var mb=function(a){if(!a)return a;if(a.length>1){var b=a.substr(0,2);return b===b.toUpperCase()?a:a.charAt(0).toLowerCase()+a.substr(1)}return a.charAt(0).toLowerCase()},qd=function(g,e){if(e==="Documentation")return{isArray:true,propertyName:"documentation"};var c=g.elements;if(!c)return null;var b,f;for(b=0,f=c.length;b<f;b++){var a=c[b],d=false;if(a.charAt(a.length-1)==="*"){d=true;a=a.substr(0,a.length-1)}if(e===a){var h=mb(a);return{isArray:d,propertyName:h}}}return null},bb=function(b){if(!b.domNode)b=a._wrapNode(b,"");var p=b.localName,d=n.elements[p];if(!d)return null;if(d.ns){if(b.nsURI!==d.ns)return null}else if(b.nsURI!==fe&&b.nsURI!==de&&b.nsURI!==ee)return null;var c={},i=d.attributes;if(i){var g,o;for(g=0,o=i.length;g<o;g++){var e=i[g],m=e.indexOf(":"),h="";if(m>0){h=j;e=e.substr(m+1)}var f=a.attribute(b,e,h);if(f){c[mb(e)]=f;var l=1;while(1){var k=e+"_"+l;f=a.attribute(b,k,h);if(!f)break;c[mb(k)]=f;l++}}}}a.childElements(b,function(e){var a=qd(d,e.localName);if(a)if(a.isArray){var b=c[a.propertyName];if(!b){b=[];c[a.propertyName]=b}b.push(bb(e))}else c[a.propertyName]=bb(e)});if(d.text)c.text=a.innerText(b);return c},td=function(e,c){var d=a.parse(c);return bb(d)||b};d.metadataHandler=C(td,null,S,"1.0");var jb="application/json",Ac=function(d,g){var b={collections:[]},a,e;for(a=0,e=d.EntitySets.length;a<e;a++){var c=d.EntitySets[a],f={title:c,href:p(c,g)};b.collections.push(f)}return{workspaces:[b]}},Qd=/^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/,md=function(a){var b;if(a<0){b="-";a=-a}else b="+";var c=Math.floor(a/60);a=a-60*c;return b+s(c,2)+":"+s(a,2)},Ib=function(d){var b=d&&Qd.exec(d);if(b){var a=new Date(g(b[1]));if(b[2]){var c=g(b[3]);if(b[2]==="-")c=-c;var e=a.getUTCMinutes();a.setUTCMinutes(e-c);a.__edmType="Edm.DateTimeOffset";a.__offset=md(c)}if(!isNaN(a.valueOf()))return a}},Nb=function(a,f){if(a&&typeof a==="object")for(var d in a){var e=a[d],c=Nb(e,f);c=f(d,c);if(c!==e)if(e===b)delete a[d];else a[d]=c}return a},ae=function(b,a){return a("",Nb(b,a))},Rd=function(f,d,b){var e=b.metadata,a=typeof d==="string"?c.JSON.parse(d):d;a=ae(a,function(l,b){if(b&&typeof b==="object"){var h=b.__metadata&&b.__metadata.type,i=I(h,e)||Jb(h,e),a;if(i){var g=i.property;if(g){var d,k;for(d=0,k=g.length;d<k;d++){var c=g[d];if(c.type==="Edm.DateTime"||c.type==="Edm.DateTimeOffset"){a=b[c.name];if(a){a=Ib(a);if(!a)throw{message:"Invalid date/time value"};b[c.name]=a}}}}}else if(f.recognizeDates)for(var j in b){a=b[j];if(typeof a==="string")b[j]=Ib(a)||a}}return b}).d;a=zc(a,b.dataServiceVersion);a=cd(a,b.response.requestUri);return a},sd=function(j,g,a){var e=b,f=a.contentType=a.contentType||A(jb);if(f&&f.mediaType===jb){var d=a.dataServiceVersion,h=g;if(d&&d!=="1.0")h={results:[g]};var i=Date.prototype.toJSON;try{Date.prototype.toJSON=function(){return cb(this)};e=c.JSON.stringify(h)}finally{Date.prototype.toJSON=i}}return e},cd=function(a,b){return z(a)===f.svcDoc?Ac(a,b):a},zc=function(b,a){if(a&&a.lastIndexOf(";")===a.length-1)a=a.substr(0,a.length-1);if(!a)if(w(b))a="1.0";if(a==="2.0")return b;if(a==="1.0")if(w(b))b={results:b};return b};d.jsonHandler=C(Rd,sd,jb,"2.0");d.jsonHandler.recognizeDates=false;var J="multipart/mixed",Vc=/^HTTP\/1\.\d (\d{3}) (.*)$/i,ob=function(){return Math.floor((1+Math.random())*65536).toString(16).substr(1)},Ub=function(a){return a+ob()+"-"+ob()+"-"+ob()},jc=function(a){return a.handler.partHandler},Rb=function(b){var a=b.boundaries;return a[a.length-1]},Jd=function(d,c,a){var b=a.contentType.properties.boundary;return{__batchResponses:nc(c,{boundaries:[b],handlerContext:a})}},jd=function(d,c,a){var b=a.contentType=a.contentType||A(J);if(b.mediaType===J)return Sd(c,a)},nc=function(b,a){var f="--"+Rb(a);W(b,a,f);U(b,a);var e=[],g;while(g!=="--"&&a.position<b.length){var h=kc(b,a),d=A(h["Content-Type"]);if(d&&d.mediaType===J){a.boundaries.push(d.properties.boundary);e.push({__changeResponses:nc(b,a)});a.boundaries.pop();W(b,a,"--"+Rb(a))}else{if(!d||d.mediaType!=="application/http")throw{message:"invalid MIME part type "};var c=Gd(b,a,f);try{if(c.statusCode>=200&&c.statusCode<=299)jc(a.handlerContext).read(c,a.handlerContext);else c={message:"HTTP request failed",response:c}}catch(i){c=i}e.push(c)}g=b.substr(a.position,2);U(b,a)}return e},kc=function(e,d){var c={},a,b;while(b=U(e,d)){a=b.indexOf(":");if(a!==-1)c[T(b.substring(0,a))]=T(b.substring(a+1))}gb(c);return c},Gd=function(c,a,d){var b=Vc.exec(U(c,a));if(!b)throw{message:"Invalid HTTP response"};return{statusCode:b[1],statusText:b[2],headers:kc(c,a),body:W(c,a,d)}},U=function(b,a){return W(b,a,"\r\n")},W=function(c,b,d){var e=b.position||0,a=c.length;if(d){a=c.indexOf(d,e);if(a===-1)return null;b.position=a+d.length}else b.position=a;return c.substring(e,a)},Sd=function(g,e){var h=z(g);if(h!==f.batch)throw{message:'Serialization of batches of type "'+h+'" is not supported'};var b=Ub("batch_"),d=g.__batchRequests,c="",a,i;for(a=0,i=d.length;a<i;a++)c+=O(b,false)+Yb(d[a],e);c+=O(b,true);var j=e.contentType.properties;j.boundary=b;return c},O=function(b,c){var a="\r\n--"+b;if(c)a+="--";return a+"\r\n"},Yb=function(f,e,h){var d=f.__changeRequests,a;if(w(d)){if(h)throw{message:"Not Supported: change set nested in other change set"};var c=Ub("changeset_");a="Content-Type: "+J+"; boundary="+c+"\r\n";var b,g;for(b=0,g=d.length;b<g;b++)a+=O(c,false)+Yb(d[b],e,true);a+=O(c,true)}else{a="Content-Type: application/http\r\nContent-Transfer-Encoding: binary\r\n\r\n";Xb(f,jc(e),{metadata:e.metadata});a+=Hd(f)}return a},Hd=function(a){var b=(a.method?a.method:"GET")+" "+a.requestUri+" HTTP/1.1\r\n";for(var c in a.headers)if(a.headers[c])b=b+c+": "+a.headers[c]+"\r\n";b+="\r\n";if(a.body)b+=a.body;return b};d.batchHandler=C(Jd,jd,J,"1.0");var oc=[d.jsonHandler,d.atomHandler,d.xmlHandler,d.textHandler],Sb=function(d,c,e){var a,b;for(a=0,b=oc.length;a<b&&!oc[a][d](c,e);a++);if(a===b)throw{message:"no handler for data"};};d.defaultSuccess=function(a){c.alert(a.toString())};d.defaultError=r;d.defaultHandler={read:function(a,b){a&&B(a.body)&&a.headers["Content-Type"]&&Sb("read",a,b)},write:function(b,a){Sb("write",b,a)},accept:"application/atomsvc+xml;q=0.8, application/json;q=0.5, */*;q=0.1"};d.defaultMetadata=[];d.read=function(a,g,h,f,c,e){var b;if(a instanceof String||typeof a==="string")b={requestUri:a};else b=a;return d.request(b,g,h,f,c,e)};d.request=function(h,f,b,a,c,e){if(!f)f=d.defaultSuccess;if(!b)b=d.defaultError;if(!a)a=d.defaultHandler;if(!c)c=d.defaultHttpClient;if(!e)e=d.defaultMetadata;var g={metadata:e};try{Xb(h,a,g);return xd(h,f,b,a,c,g)}catch(i){b(i)}};d.batchHandler.partHandler=d.defaultHandler;var o=c.localStorage,Wc=function(){var a={v:this.valueOf(),t:"[object Date]"};for(var b in this)a[b]=this[b];return a},Xc=function(a){if(a&&a.t==="[object Date]"){var c=new Date(a.v);for(var b in a)if(b!=="t"&&b!=="v")c[b]=a[b];a=c}return a},P=function(a,b){return a.name+"#!#"+b},Hb=function(a,b){return b.replace(a.name+"#!#","")},k=function(a){this.name=a};k.create=function(a){if(k.isSupported())return new k(a);throw{message:"Web Storage not supported by the browser"};};k.isSupported=function(){return o&&true};k.prototype.add=function(b,f,c,a){a=a||this.defaultError;var d=this;this.contains(b,function(g){if(!g)d.addOrUpdate(b,f,c,a);else e(a,{message:"key already exists",key:b})},a)};k.prototype.addOrUpdate=function(g,f,j,a){a=a||this.defaultError;if(g instanceof Array)a({message:"Array of keys not supported"});else{var i=P(this,g),h=Date.prototype.toJSON;try{var d=f;if(d!==b){Date.prototype.toJSON=Wc;d=c.JSON.stringify(f)}o.setItem(i,d);e(j,g,f)}catch(k){e(a,k)}finally{Date.prototype.toJSON=h}}};k.prototype.clear=function(g,a){a=a||this.defaultError;if(f instanceof Array)a({message:"Array of keys not supported"});else try{var d=0,c=o.length;while(c>0&&d<c){var b=o.key(d),f=Hb(this,b);if(b!==f){o.removeItem(b);c=o.length}else d++}e(g)}catch(h){e(a,h)}};k.prototype.close=function(){};k.prototype.contains=function(f,c,a){a=a||this.defaultError;try{var b=P(this,f),d=o.getItem(b);e(c,d!==null)}catch(g){e(a,g)}};k.prototype.defaultError=r;k.prototype.getAllKeys=function(h,b){b=b||this.defaultError;var d=[],a,g;try{for(a=0,g=o.length;a<g;a++){var c=o.key(a),f=Hb(this,c);c!==f&&d.push(f)}e(h,d)}catch(i){e(b,i)}};k.prototype.mechanism="dom";k.prototype.read=function(f,h,d){d=d||this.defaultError;if(f instanceof Array)d({message:"Array of keys not supported"});else try{var g=P(this,f),a=o.getItem(g);if(a!==null&&a!=="undefined")a=c.JSON.parse(a,function(b,a){if(a&&typeof a==="object"&&a.t)a=Xc(a);return a});else a=b;e(h,f,a)}catch(i){e(d,i)}};k.prototype.remove=function(b,d,a){a=a||this.defaultError;if(b instanceof Array)a({message:"Batches not supported"});else try{var c=P(this,b);o.removeItem(c);e(d)}catch(f){e(a,f)}};k.prototype.update=function(b,f,c,a){a=a||this.defaultError;var d=this;this.contains(b,function(g){if(g)d.addOrUpdate(b,f,c,a);else e(a,{message:"key not found",key:b})},a)};var ec=c.mozIndexedDB,u=c.IDBTransaction,kb=c.IDBKeyRange,q=function(b,a){return function(c){if(b)b(c);else a&&a(c)}},t=function(c,e,d,h){var b=c.name,a=c.db,f=q(h,c.defaultError);if(a)d(a.transaction(b,e));else{var g=ec.open("_datajs_"+b);g.onsuccess=function(h){a=c.db=h.target.result;if(!a.objectStoreNames.contains(b)){var g=a.setVersion("1.0");g.onsuccess=function(){a.createObjectStore(b,null,false);d(a.transaction(b,e))};g.onerror=f;g.onblocked=f}else d(a.transaction(b,e))};g.onerror=q(h,this.defaultError)}},i=function(a){this.name=a};i.create=function(a){if(i.isSupported())return new i(a);else throw{message:"IndexedDB is not supported on this browser"};};i.isSupported=function(){return true&&ec};i.prototype.add=function(c,d,e,f){var h=this.name,g=this.defaultError,b=[],a=[];if(c instanceof Array){b=c;a=d}else{b=[c];a=[d]}t(this,u.READ_WRITE,function(j){j.onabort=q(f,g);j.oncomplete=function(){if(c instanceof Array)e(b,a);else e(c,d)};for(var i=0;i<b.length&&i<a.length;i++)j.objectStore(h).add(a[i],b[i])},f)};i.prototype.addOrUpdate=function(c,d,e,f){var h=this.name,g=this.defaultError,b=[],a=[];if(c instanceof Array){b=c;a=d}else{b=[c];a=[d]}t(this,u.READ_WRITE,function(j){j.onabort=q(f,g);j.oncomplete=function(){if(c instanceof Array)e(b,a);else e(c,d)};for(var i=0;i<b.length&&i<a.length;i++)j.objectStore(h).put(a[i],b[i])},f)};i.prototype.clear=function(c,a){var d=this.name,b=this.defaultError;t(this,u.READ_WRITE,function(e){e.onerror=q(a,b);e.oncomplete=function(){c()};e.objectStore(d).clear()},a)};i.prototype.close=function(){if(this.db){this.db.close();this.db=null}};i.prototype.contains=function(f,d,a){var e=this.name,c=this.defaultError;t(this,u.READ_ONLY,function(g){var h=g.objectStore(e).openCursor(kb.only(f));g.oncomplete=function(){d(h.result!==b)};g.onerror=q(a,c)},a)};i.prototype.defaultError=r;i.prototype.getAllKeys=function(c,a){var d=this.name,b=this.defaultError;t(this,u.READ_ONLY,function(e){var g=[];e.oncomplete=function(){c(g)};var f=e.objectStore(d).openCursor();f.onerror=q(a,b);f.onsuccess=function(b){var a=b.target.result;if(a){g.push(a.key);a["continue"].call(a)}}},a)};i.prototype.mechanism="indexeddb";i.prototype.page=function(c,a,b){return new Yc(this,c,a,b)};i.prototype.read=function(b,c,d){var f=this.name,e=this.defaultError,a=b instanceof Array?b:[b];t(this,u.READ_WRITE,function(g){var h=[];g.onerror=q(d,e);g.oncomplete=function(){if(b instanceof Array)c(a,h);else c(a[0],h[0])};for(var i=0;i<a.length;i++){var j=g.objectStore(f),k=j["get"].call(j,a[i]);k.onsuccess=function(a){h.push(a.target.result)}}},d)};i.prototype.remove=function(a,e,b){var f=this.name,d=this.defaultError,c=a instanceof Array?a:[a];t(this,u.READ_WRITE,function(a){a.onerror=q(b,d);a.oncomplete=function(){e()};for(var g=0;g<c.length;g++){var h=a.objectStore(f);h["delete"].call(h,c[g])}},b)};i.prototype.update=function(c,d,e,f){var h=this.name,g=this.defaultError,a=[],b=[];if(c instanceof Array){a=c;b=d}else{a=[c];b=[d]}t(this,u.READ_WRITE,function(j){j.onabort=q(f,g);j.oncomplete=function(){if(c instanceof Array)e(a,b);else e(c,d)};for(var i=0;i<a.length&&i<b.length;i++){var k=j.objectStore(h).openCursor(kb.only(a[i]));k.pair={key:a[i],value:b[i]};k.onsuccess=function(b){var a=b.target.result;if(a)a.update(b.target.pair.value);else j.abort()}}},f)};var Yc=function(c,f,d,e){var a=this;this.keys=[];this.values=[];this.next=function(g,e){var d=a.keys.length>0?a.keys[a.keys.length-1]:b;a.keys=[];a.values=[];t(c,u.READ_ONLY,function(h){var j=c.name,i=h.objectStore(j).openCursor(d?kb.lowerBound(d,true):b);i.onsuccess=function(c){var b=c.target.result;if(b){a.keys.push(b.key);a.values.push(b.value);a.keys.length<f&&b["continue"].call(b)}};i.onerror=q(e,c.defaultError);h.oncomplete=function(){g(a)}},e)};this.next(d,e)},y=function(h){var g=[],c=[],a={};this.name=h;var d=function(a){return a||this.defaultError},f=function(c,d){var a;if(c instanceof Array)a="Array of keys not supported";if(c===b||c===null)a="Invalid key";if(a){e(d,{message:a});return false}return true};this.add=function(c,g,e,b){b=d(b);if(f(c,b))if(!a.hasOwnProperty(c))this.addOrUpdate(c,g,e,b);else b({message:"key already exists",key:c})};this.addOrUpdate=function(i,k,l,j){j=d(j);if(f(i,j)){var h=a[i];if(h===b)if(g.length>0)h=g.splice(0,1);else h=c.length;c[h]=k;a[i]=h;e(l,i,k)}};this.clear=function(b){c=[];a={};g=[];e(b)};this.contains=function(d,c){var b=a.hasOwnProperty(d);e(c,b)};this.getAllKeys=function(c){var b=[];for(var d in a)b.push(d);e(c,b)};this.read=function(g,h,b){b=d(b);if(f(g,b)){var i=a[g];e(h,g,c[i])}};this.remove=function(j,k,i){i=d(i);if(f(j,i)){var h=a[j];if(h!==b){if(h===c.length-1)c.pop();else{c[h]=b;g.push(h)}delete a[j];if(c.length===0)g=[]}e(k)}};this.update=function(c,g,e,b){b=d(b);if(f(c,b))if(a.hasOwnProperty(c))this.addOrUpdate(c,g,e,b);else b({message:"key not found",key:c})}};y.create=function(a){return new y(a)};y.isSupported=function(){return true};y.prototype.close=function(){};y.prototype.defaultError=r;y.prototype.mechanism="memory";var lb=[{name:"indexeddb",factory:i},{name:"dom",factory:k},{name:"memory",factory:y}];M.defaultStoreMechanism="best";M.createStore=function(f,a){var d;if(a===b)a=M.defaultStoreMechanism;var c,g;for(c=0,g=lb.length;c<g&&!d;c++){var e=lb[c].factory;if((a==="best"||a===lb[c].name)&&e.isSupported())d=e.create(f)}if(!d)throw{message:"Failed to create store",name:f,mechanism:a};return d};var bd=function(a,b){var c=a.indexOf("?")>=0?"&":"?";return a+c+b},wd=function(a,d){var b=a.indexOf("?"),c="";if(b>=0){c=a.substr(b);a=a.substr(0,b)}if(a[a.length-1]!=="/")a+="/";return a+d+c},ld=function(a,b){var f=a.i+a.c,g=b.i+b.c,c=a.i>b.i?a.i:b.i,d=f<g?f:g,e;if(d>=c)e={i:c,c:d-c};return e},ge=function(d,c){var e=-1,b=d.indexOf("?");if(b!==-1){var a=d.indexOf("?"+c+"=",b);if(a===-1)a=d.indexOf("&"+c+"=",b);if(a!==-1)e=a+c.length+2}return e},Tb=function(b,d){var a,c;for(a=0,c=b.length;a<c;a++)if(b[a]===d){b.splice(a,1);return true}return false},Ld=function(a,c,b){return function(){a[c].apply(a,arguments);return b}},hc=function(){};hc.prototype={then:function(a,b){if(a)if(!this._done)this._done=[a];else this._done.push(a);if(b)if(!this._fail)this._fail=[b];else this._fail.push(b);return this},resolve:function(){if(this._done){var a,b;for(a=0,b=this._done.length;a<b;a++)this._done[a].apply(null,arguments);delete this._done}},reject:function(){if(this._fail){var a,b;for(a=0,b=this._fail.length;a<b;a++)this._fail[a].apply(null,arguments);delete this._fail}},promise:function(){var a={};a.then=Ld(this,"then",a);return a}};var K=function(){return c.jQuery&&c.jQuery.Deferred?new c.jQuery.Deferred:new hc},nb=function(a,b){for(var c in b)a[c]=b[c];return a},Gb=function(a,c,b){a=Math.floor(a/b)*b;c=Math.ceil((c+1)/b)*b;return{i:a,c:c-a}},H=function(f,e,d,b,c,a){this.i=f;this.c=e;this.d=a?null:[];this.p=d;this.canceled=b;this.pending=c;this.isPrefetch=a};H.prototype.fireResolved=function(){var a=this.p;if(a){this.p=null;a.resolve(this.d)}};H.prototype.fireCanceled=function(){var a=this.p;if(a){this.p=null;a.reject({canceled:true,message:"Operation canceled"})}};var Td=function(v,O){var i=O,A=false,l=0,u=false,f=0,h=0,N=0,j=Ob(v.pageSize,50),C=Ob(v.prefetchSize,this._pageSize),z=p(v.source),t=[],o=[],c,m,n={counts:0,netReads:0,prefetches:0,cacheReads:0},a=this,s;a.onprefetch=v.prefetch;a.onlocaldata=v.localdata;a.stats=n;a.count=function(){var b=K(),c,a=d.read(wd(z,"$count"),function(c){n.counts++;a=null;b.resolve(g(c.toString()))},function(d){a=null;b.reject(nb(d,{canceled:c}))});return nb(b.promise(),{cancel:function(){if(a){c=true;a.abort();a=null}}})};a.destroy=function(){var a=K();if(!A)s=a;else E(a);return a.promise()};a.invalidate=function(){var a=K();return a.promise()};a.invalidateAll=function(){var a=K();return a.promise()};a.readRange=function(b,a){b=g(b);a=g(a);if(b<0||isNaN(b))throw{message:"Invalid index",index:b};if(a<0||isNaN(a))throw{message:"Invalid count",count:a};var d=K(),c=new H(b,a,d,false,0,false);k(c);return nb(d.promise(),{cancel:function(){if(Tb(t,c))c.canceled=true}})};var I=function(a){return f&&a.i+a.c>=f},L=function(a,b){var c=ld(a,b);if(c){var d=c.i-b.i,e=d+(a.c-a.d.length);a.d=a.d.concat(b.d.slice(d,e))}},y=function(a,b){q(a,b);a.fireCanceled();!c&&k()},E=function(a){i.clear(function(){i.close();a.resolve()},function(b){a.reject(b)})},q=function(b,a){if(c===b){c=null;m=null}a&&Tb(a,b)},k=function(a){var d;if(!a){if(!c){if(t.length)m=t;else if(o.length)m=o;else{c=m=null;return}c=m[0]}d=m;a=c}else if(!A){t.push(a);return}if(a.canceled){y(a,d);return}var e=Gb(a.i,a.i+a.c,j),f=function(b){G(b,a,d)};i.contains(e.i,function(c){if(a.canceled){y(a,d);return}if(c)i.read(e.i,function(f,c){if(a.canceled){y(a,d);return}if(c!==b){F(c,a,d);k(!d?a:b)}else D(e.i,a,d)},f);else if(d)D(e.i,a,d);else{t.push(a);k()}},f)},G=function(d,b,e){q(b,e);if(b.p){b.p.reject(d);b.p=null}if(b.isPrefetch&&a.onprefetch)a.onprefetch(d);!c&&k()},F=function(c,b,d){var g=b.isPrefetch;h=Math.max(h,c.i);if(l<=h)l=h+c.d.length;if(!g){L(b,c);if(b.d.length===b.c||b.d.length===f){n.cacheReads++;q(b,d);b.fireResolved();if(!u&&!I(b))(C<0&&o.length===0||C>0)&&o.push(new H(b.i+b.c,j,null,false,C,true))}else b.i=c.i+j}else{var e=b.pending<0;if(!I(b)&&(e||b.pending>b.c))o.push(new H(b.i+b.c,j,null,false,e?-1:b.pending-b.c,true));else a.onprefetch&&d.length===1&&a.onprefetch();q(b,d)}},D=function(e,b,c){var d=b.isPrefetch;M({i:e,c:j},function(f,e){if(e){if(d)n.prefetches++;else n.netReads++;F(e,b,c)}else{q(b,c);if(!d){n.cacheReads++;if(b.canceled){y(b,c);return}b.fireResolved()}else a.onprefetch&&c.length===0&&a.onprefetch()}k()},function(a){G(a,b,c)})},M=function(c,h,f){var j=c.i,i=c.c,g="$skip="+j+"&$top="+i,k=bd(z,g),a,b,e=function(g,c){d.read(g,function(f){if(!a){a=f.results;b=a.length}else{var h=f.results,g=h.length,d,j;for(d=0,j=g;d<j;d++)a.splice(b,0,h[d]);b+=g}var i=f.__next;if(i)e(i,c);else c(a)},f)};e(k,function(a){J(c,a,h,f)})},w=function(b,c){var a={actualCacheSize:l,allDataLocal:u,lastPageIndex:h,pageSize:j,source:z};i.addOrUpdate("settings",a,b,c)},J=function(m,n,k,g){var c=m.i,d=m.c,b=n.length;if(b>0){l+=b;var q={i:c,c:b,d:n,t:N++};i.addOrUpdate(c,q,k,g);w(function(){},g)}else e(k);var o=f;if(b<d)if(b)f=c+b;else if(h){var p=Gb(c,c+d,j);if(h===p.i-d)f=l}if(f-o>0&&l===f){u=true;if(a.onlocaldata){w(function(){},g);a.onlocaldata()}}},x=function(){A=true;u&&a.onlocaldata&&a.onlocaldata();k()};i.read("settings",function(b,a){if(s){E(s);s.then(function(){s=null;x()},r);return}if(B(a))if(j!==a.pageSize||z!==a.source)i.clear(function(){w(x,r)},r);else{l=a.actualCacheSize;u=a.allDataLocal;h=a.lastPafgeInde;x()}else w(x,r)},r);return a};M.createDataCache=function(a){var c=a.pageSize!==b?g(a.pageSize):b;if(c!==b&&(c<=0||isNaN(c)))throw{message:"Invalid pageSize",options:a};var d=M.createStore(a.name,a.mechanism);return new Td(a,d)}})(this)
