require.def("preview/ref",["core/lib"],function(a){var b={resolveJson:function(b,c){function n(o,p,q,r,s){var t,u,v=d in o?o[d]:q;v!==undefined&&(v=(e+v).replace(k,"$2$3"));var w=s||o;if(v!==undefined){f&&(o.__id=v),c.schemas&&!(o instanceof Array)&&(u=v.match(/^(.+\/)[^\.\[]*$/))&&(r=c.schemas[u[1]]);if(g[v]&&o instanceof Array==g[v]instanceof Array)w=g[v],delete w.$ref,t=!0;else{var x=r&&r.prototype;x&&(m.prototype=x,w=new m)}g[v]=w,h&&(h[v]=c.time)}var y=r&&r.properties,z=o.length;for(var A in o){if(A==z)break;if(o.hasOwnProperty(A)){u=o[A];var B=y&&y[A];if(B&&B.format=="date-time"&&typeof u=="string")u=a.fromISOString(u);else if(typeof u=="object"&&u&&!(u instanceof Date)){i=u.$ref;if(i){delete o[A];var C=i.replace(/(#)([^\.\[])/,"$1.$2").match(/(^([^\[]*\/)?[^#\.\[]*)#?([\.\[].*)?/);if(i=C[1]=="$"||C[1]=="this"||C[1]==""?b:g[(e+C[1]).replace(k,"$2$3")])C[3]&&C[3].replace(/(\[([^\]]+)\])|(\.?([^\.\[]+))/g,function(a,b,c,d,e){i=i&&i[c?c.replace(/[\"\'\\]/,""):e]});if(i)u=i;else if(p)u=n(u,!1,u.$ref,B),u._loadObject=c.loader;else{var D;D||j.push(w),D=!0}}else p||(u=n(u,j==o,v&&l(v,A),B,w!=o&&typeof w[A]=="object"&&w[A]))}o[A]=u;if(w!=o&&!w.__isDirty){var E=w[A];w[A]=u,t&&u!==E&&!w._loadObject&&!(u instanceof Date&&E instanceof Date&&u.getTime()==E.getTime())&&(typeof u!="function"||typeof E!="function"||u.toString()!=E.toString())&&g.onUpdate&&g.onUpdate(w,A,E,u)}}}if(t){for(A in w)if(!w.__isDirty&&w.hasOwnProperty(A)&&!o.hasOwnProperty(A)&&A!="__id"&&A!="__clientId"&&!(w instanceof Array&&isNaN(A))){g.onUpdate&&A!="_loadObject"&&A!="_idAttr"&&g.onUpdate(w,A,w[A],undefined),delete w[A];while(w instanceof Array&&w.length&&w[w.length-1]===undefined)w.length--}}else g.onLoad&&g.onLoad(w);return w}c=c||{};var d=c.idAttribute||"id",e=c.idPrefix||"",f=c.assignAbsoluteIds,g=c.index||{},h=c.timeStamps,i,j=[],k=/^(.*\/)?(\w+:\/\/)|[^\/\.]+\/\.\.\/|^.*\/(\/)/,l=this._addProp,m=function(){};b&&typeof b=="object"&&(b=n(b,!1,c.defaultId),n(j,!1));return b},_addProp:function(a,b){return a+(a.match(/#/)?a.length==1?"":".":"#")+b}};return b})