let t=0;function e(t){return t}function n(t,n){return null==t?e:"function"==typeof t?void 0!==n?function(){return t.apply(n,arguments)}:t:"object"!=typeof t||Array.isArray(t)?"string"==typeof t?function(e){return null==e?void 0:e[t]}:e:i(t)}function i(t){const e=Object.entries(t);return function(t){if(null==t)return!e.length;const n=Object(t);for(let t=0;t0&&!o.isFunction(e[0])){const r=o.isArray(e[0])?e[0]:e;for(i=0;i":">",'"':""","'":"'","`":"`"};o.escape=function(t){return null==t?"":(""+t).replace(/[&<>"'`]/g,function(t){return l[t]})},o.once=function(t){let e,n=!1;return function(){return n||(n=!0,e=t.apply(this,arguments)),e}},o.defer=function(t,...e){return setTimeout(function(){t.apply(null,e)},0)},o.matches=i,o.iteratee=n,o.property=function(t){return function(e){return null==e?void 0:e[t]}},o.pluck=function(t,e){return o.map(t,o.property(e))},o.each=o.forEach=function(t,e,n){if(null==t)return t;const i=void 0!==n?function(t,i,s){return e.call(n,t,i,s)}:e;if(o.isArray(t))for(let e=0;e=0;r--){const i=s?s[r]:r;n=e(n,t[i],i,t)}return n},o.findIndex=function(t,e,i){e=n(e,i);for(let n=0;n=0;n--)if(e(t[n],n,t))return n;return-1},o.find=o.detect=function(t,e,i){if(e=n(e,i),o.isArray(t)){const n=o.findIndex(t,e);return n>=0?t[n]:void 0}const s=Object.keys(t);for(let n=0;n=0},o.invoke=function(t,e,...n){const i=o.isFunction(e);return o.map(t,function(t){const s=i?e:null==t?void 0:t[e];return null==s?s:s.apply(t,n)})},o.max=function(t,e,i){let s,r,l=-1/0,c=-1/0;if(null==e){const e=o.isArray(t)?t:Object.values(t);for(let t=0;tl&&(l=s)}else e=n(e,i),o.each(t,function(t,n,i){r=e(t,n,i),(r>c||r===-1/0&&l===-1/0)&&(l=t,c=r)});return l},o.min=function(t,e,i){let s,r,l=1/0,c=1/0;if(null==e){const e=o.isArray(t)?t:Object.values(t);for(let t=0;t0;t--){const n=Math.floor(Math.random()*(t+1)),i=e[t];e[t]=e[n],e[n]=i}return e},o.sample=function(t,e){const n=o.isArray(t)?t:Object.values(t);return null==e?n[Math.floor(Math.random()*n.length)]:o.shuffle(n).slice(0,Math.max(0,e))},o.sortBy=function(t,e,i){let s=0;return e=n(e,i),o.pluck(o.map(t,function(t,n,i){return{value:t,index:s++,criteria:e(t,n,i)}}).sort(function(t,e){const n=t.criteria,i=e.criteria;if(n!==i){if(n>i||void 0===n)return 1;if(n{let r,o=0;if(n&&"object"==typeof n){void 0!==i&&"context"in s&&void 0===s.context&&(s.context=i);for(r=Object.keys(n);o{if(n){t[e]??(t[e]=[]);const s=t[e],r=i.context,o=i.ctx,l=i.listening;l&&l.count++,s.push({callback:n,context:r,ctx:r||o,listening:l})}return t},m=(t,e,n,i)=>{try{t.on(e,n,i)}catch(t){return t}};p.off=function(t,e,n){return this._events?(this._events=f(y,this._events,t,e,{context:n,listeners:this._listeners}),this):this},p.stopListening=function(t,e,n){const i=this._listeningTo;if(!i)return this;const s=t?[t._listenId]:Object.keys(i);for(let t=0;t{if(!t)return;const s=i.context,r=i.listeners;let o,l=0;if(e||s||n){for(o=e?[e]:Object.keys(t);l{if(n){const s=t[e]=o.once(function(){i(e,s),n.apply(this,arguments)});s._callback=n}return t};p.trigger=function(t,...e){return this._events?(f(b,this._events,t,void 0,e),this):this};const b=(t,e,n,i)=>{if(t){const n=t[e];let s=t.all;n&&s&&(s=s.slice()),n&&_(n,i),s&&_(s,[e].concat(i))}return t},_=(t,e)=>{let n,i=-1;const s=t.length,r=e[0],o=e[1],l=e[2];switch(e.length){case 0:for(;++i{const i=t.parse?this.parse(n,t):n;if(!this.set(i,t))return!1;e?.call(t.context,this,n,t),this.trigger("sync",this,n,t)},K(this,t),this.sync("read",this,t)}save(t,e,n){let i;null==t||"object"==typeof t?(i=t,n=e):(i={})[t]=e;const s=(n={validate:!0,parse:!0,...n}).wait;if(i&&!s){if(!this.set(i,n))return!1}else if(!this._validate(i,n))return!1;const r=n.success,o=this.attributes;n.success=t=>{this.attributes=o;let e=n.parse?this.parse(t,n):t;if(s&&(e={...i,...e}),e&&!this.set(e,n))return!1;r?.call(n.context,this,t,n),this.trigger("sync",this,t,n)},K(this,n),i&&s&&(this.attributes={...o,...i});const l=this.isNew()?"create":n.patch?"patch":"update";"patch"!==l||n.attrs||(n.attrs=i);const c=this.sync(l,this,n);return this.attributes=o,c}destroy(t){const e=(t={...t||{}}).success,n=t.wait,i=()=>{this.stopListening(),this.trigger("destroy",this,this.collection,t)};t.success=s=>{n&&i(),e?.call(t.context,this,s,t),this.isNew()||this.trigger("sync",this,s,t)};let s=!1;return this.isNew()?o.defer(t.success):(K(this,t),s=this.sync("delete",this,t)),n||i(),s}url(){const t=o.result(this,"urlRoot")||o.result(this.collection,"url")||X();if(this.isNew())return t;const e=this.get(this.idAttribute);return t.replace(/[^\/]$/,"$&/")+encodeURIComponent(e)}parse(t,e){return t}clone(){return new this.constructor(this.attributes)}isNew(){return!this.has(this.idAttribute)}isValid(t){return this._validate({},{...t,validate:!0})}_validate(t,e){if(!e.validate||!this.validate)return!0;t={...this.attributes,...t};const n=this.validationError=this.validate(t,e)||null;return!n||(this.trigger("invalid",this,n,{...e,validationError:n}),!1)}preinitialize(...t){}initialize(...t){}}E.prototype.changed=null,E.prototype.validationError=null,E.prototype.idAttribute="id",E.prototype.cidPrefix="c";const j={add:!0,remove:!0,merge:!0},A={add:!0,remove:!1},k=(t,e,n)=>{n=Math.min(Math.max(n,0),t.length);const i=Array(t.length-n),s=e.length;let r;for(r=0;re.toJSON(t))}sync(...t){return Q.sync.apply(this,t)}add(t,e){return this.set(t,{merge:!1,...e,...A})}remove(t,e={}){e={...e};const n=!Array.isArray(t),i=n?[t]:t.slice(),s=this._removeModels(i,e);return!e.silent&&s.length&&(e.changes={added:[],merged:[],removed:s},this.trigger("update",this,e)),n?s[0]:s}set(t,e){if(null==t)return;(e={...j,...e}).parse&&!this._isModel(t)&&(t=this.parse(t,e)||[]);const n=!Array.isArray(t);t=n?[t]:t.slice();let i=e.at;null!=i&&(i=+i),i>this.length&&(i=this.length),i<0&&(i=i+this.length+1);const s=[],r=[],l=[],c=[],h={},a=!!e.add,u=!!e.merge,d=!!e.remove;let f=!1;const p=null!=this.comparator&&null==i&&!1!==e.sort,g="string"==typeof this.comparator?this.comparator:null;let m,y;for(y=0;yt!==s[e]),this.models.length=0,k(this.models,s,0),this.length=this.models.length):r.length&&(p&&(f=!0),k(this.models,r,null==i?this.length:i),this.length=this.models.length),f&&this.sort({silent:!0}),!e.silent){for(y=0;y{this[t.reset?"reset":"set"](n,t),e?.call(t.context,this,n,t),this.trigger("sync",this,n,t)},K(this,t),this.sync("read",this,t)}create(t,e){const n=(e={...e||{}}).wait,i=this._prepareModel(t,e);if(!i)return!1;n||this.add(i,e);const s=e.success;return e.success=(t,e,i)=>{n&&(t.off("error",this._forwardPristineError,this),this.add(t,i)),s&&s.call(i.context,t,e,i)},n&&i.once("error",this._forwardPristineError,this),i.save(null,e),i}parse(t,e){return t}clone(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})}modelId(t,e){return t[e||this.model.prototype.idAttribute||"id"]}values(){return new R(this,I)}keys(){return new R(this,P)}entries(){return new R(this,T)}_reset(){this.length=0,this.models=[],this._byId={}}_prepareModel(t,e){if(this._isModel(t))return t.collection||(t.collection=this),t;e={...e||{},collection:this};const n=new this.model(t,e);return n.validationError?(this.trigger("invalid",this,n.validationError,{...e,validationError:n.validationError}),!1):n}_removeModels(t,e){const n=[];for(let i=0;i0&&!e.silent&&delete e.index,n}_isModel(t){return t instanceof E}_addReference(t,e){this._byId[t.cid]=t;const n=this.modelId(t.attributes,t.idAttribute);null!=n&&(this._byId[n]=t),t.on("all",this._onModelEvent,this)}_removeReference(t,e){delete this._byId[t.cid];const n=this.modelId(t.attributes,t.idAttribute);null!=n&&delete this._byId[n],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)}_onModelEvent(t,e,n,i){if(e){if(("add"===t||"remove"===t)&&n!==this)return;if("destroy"===t&&this.remove(e,i),"changeId"===t){const t=this.modelId(e.previousAttributes(),e.idAttribute),n=this.modelId(e.attributes,e.idAttribute);null!=t&&delete this._byId[t],null!=n&&(this._byId[n]=e)}}this.trigger.apply(this,arguments)}_forwardPristineError(t,e,n){this.has(t)||this._onModelEvent("error",t,e,n)}preinitialize(...t){}initialize(...t){}}"function"==typeof Symbol&&Symbol.iterator&&(S.prototype[Symbol.iterator]=S.prototype.values);const I=1,P=2,T=3;class R{constructor(t,e){this._collection=t,this._kind=e,this._index=0}next(){if(this._collection){if(this._indext.toJSON());this._reset(),this.add(t,{silent:!0})}}}),Object.defineProperty(S.prototype,"comparator",{configurable:!0,get(){return this._comparator},set(t){this._comparator=t,t&&this.models?.length&&this.sort({silent:!0})}});const C=/^(\S+)\s*(.*)$/,H=["model","collection","el","id","attributes","className","tagName","events"];class N extends O{constructor(t){super(),this._constructing=!0,this.cid=o.uniqueId("view");const e=this,n=new Proxy(this,{defineProperty(t,n,i){if("value"in i){if("el"===n&&"string"==typeof i.value)return e._el=i.value,e.setElement(i.value),!0;if("events"===n)return e._viewEvents=i.value,e._el instanceof Element&&e.delegateEvents(),!0}return Reflect.defineProperty(t,n,i)}});return n.preinitialize.apply(n,arguments),o.extend(n,o.pick(t||{},H)),n._ensureElement(),n.initialize.apply(n,arguments),this._constructing=!1,n}$(t){const e=this.el.querySelectorAll(t);return Q.$?Q.$(Array.from(e)):e}render(){return this}remove(){return this.undelegateEvents(),this._removeElement(),this.stopListening(),this}_removeElement(){o.dom.remove(this.el)}setElement(t){return this.undelegateEvents(),this._setElement(t),this.delegateEvents(),this}_setElement(t){const e=o.dom.query(t);this.el=null!==e?e:"string"!=typeof t?t:null,this.$el=Q.$?Q.$(this.el):this.el}delegateEvents(t){if(t||(t=o.result(this,"events")),!t)return this;this.undelegateEvents();for(const e in t){let n=t[e];if("function"!=typeof n&&(n=this[n]),!n)continue;const i=e.match(C);this.delegate(i[1],i[2],n.bind(this))}return this}delegate(t,e,n){return"string"!=typeof e&&(n=e,e=void 0),o.dom.on(this.el,".delegateEvents"+this.cid,t,e||null,n),this}undelegateEvents(){return this._el&&this._el instanceof Element&&o.dom.off(this._el,".delegateEvents"+this.cid),this}undelegate(t,e,n){return"string"!=typeof e&&(n=e,e=void 0),o.dom.off(this.el,".delegateEvents"+this.cid,t,e||null,n),this}_createElement(t){return document.createElement(t)}_ensureElement(){if(this.el)this.setElement(o.result(this,"el"));else{const t={...o.result(this,"attributes")};this.id&&(t.id=o.result(this,"id")),this.className&&(t.class=o.result(this,"className")),this.setElement(this._createElement(o.result(this,"tagName"))),this._setAttributes(t)}}_setAttributes(t){o.dom.setAttributes(this.el,t)}preinitialize(...t){}initialize(...t){}}Object.defineProperty(N.prototype,"el",{configurable:!0,get(){return this._el},set(t){this._el=t??void 0,!this._constructing&&this.cid&&"string"==typeof t&&this.setElement(t)}}),Object.defineProperty(N.prototype,"events",{configurable:!0,get(){return this._viewEvents},set(t){this._viewEvents=t,!this._constructing&&this._el instanceof Element&&this.delegateEvents()}}),N.prototype.tagName="div";const M=(t,e,n,i)=>{switch(e){case 1:return function(){return t[n](this[i])};case 2:return function(e){return t[n](this[i],e)};case 3:return function(e,s){return t[n](this[i],$(e,this),s)};case 4:return function(e,s,r){return t[n](this[i],$(e,this),s,r)};default:return function(){return t[n](this[i],...arguments)}}},$=(t,e)=>"function"==typeof t?t:o.isObject(t)&&!e._isModel(t)?U(t):"string"==typeof t?e=>e.get(t):t,U=t=>{const e=o.matches(t);return t=>e(t.attributes)};o.each([[S,{forEach:3,each:3,map:3,collect:3,reduce:0,foldl:0,inject:0,reduceRight:0,foldr:0,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3,findIndex:3,findLastIndex:3},"models"],[E,{keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1},"attributes"]],([t,e,n])=>{t.mixin=e=>{const i=o.reduce(o.functions(e),(t,e)=>(t[e]=0,t),{});o.each(i,(i,s)=>{e[s]&&(t.prototype[s]=M(e,i,s,n))})},o.each(e,(e,i)=>{o[i]&&(t.prototype[i]=M(o,e,i,n))})});const z={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"},q=/\((.*?)\)/g,B=/(\(\?)?:\w+/g,F=/\*\w+/g,J=/[\-{}\[\]+?.,\\\^$|#\s]/g;class L extends O{constructor(t={}){super(),this.preinitialize.apply(this,arguments),t.routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)}route(t,e,n){t instanceof RegExp||(t=this._routeToRegExp(t)),"function"==typeof e&&(n=e,e=""),n||(n=this[e]);const i=this;return Q.history.route(t,s=>{const r=i._extractParameters(t,s);!1!==i.execute(n,r,e)&&(i.trigger(`route:${e}`,...r),i.trigger("route",e,r),Q.history.trigger("route",i,e,r))}),this}execute(t,e,n){t&&t.apply(this,e)}navigate(t,e){return Q.history.navigate(t,e),this}_bindRoutes(){if(!this.routes)return;this.routes=o.result(this,"routes");let t,e=o.keys(this.routes);for(;null!=(t=e.pop());)this.route(t,this.routes[t])}_routeToRegExp(t){return t=t.replace(J,"\\$&").replace(q,"(?:$1)?").replace(B,(t,e)=>e?t:"([^/?]+)").replace(F,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")}_extractParameters(t,e){const n=t.exec(e).slice(1);return o.map(n,(t,e)=>e===n.length-1?t||null:t?decodeURIComponent(t):null)}preinitialize(...t){}initialize(...t){}}const W=/^[#\/]|\s+$/g,D=/^\/+|\/+$/g,G=/#.*$/;class V extends O{constructor(){super(),this.handlers=[],this.checkUrl=this.checkUrl.bind(this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)}atRoot(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()}matchRoot(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root}decodeFragment(t){return decodeURI(t.replace(/%25/g,"%2525"))}getSearch(){const t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""}getHash(t){const e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""}getPath(){const t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t}getFragment(t){return null==t&&(t=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),t.replace(W,"")}start(t){if(V.started)throw new Error("Ostov.history has already been started");if(V.started=!0,this.options={root:"/",...this.options,...t},this.root=this.options.root,this._trailingSlash=this.options.trailingSlash,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(D,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){const t=this.root.slice(0,-1)||"/";return this.location.replace(t+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;const t=document.body,e=t.insertBefore(this.iframe,t.firstChild).contentWindow;e.document.open(),e.document.close(),e.location.hash="#"+this.fragment}const e=window.addEventListener||function(t,e){return window.attachEvent("on"+t,e)};if(this._usePushState?e("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?e("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()}stop(){const t=window.removeEventListener||function(t,e){return window.detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),V.started=!1}route(t,e){this.handlers.unshift({route:t,callback:e})}checkUrl(){let t=this.getFragment();if(t===this.fragment&&this.iframe&&(t=this.getHash(this.iframe.contentWindow)),t===this.fragment)return!this.matchRoot()&&this.notfound();this.iframe&&this.navigate(t),this.loadUrl()}loadUrl(t){return this.matchRoot()?(t=this.fragment=this.getFragment(t),o.some(this.handlers,e=>{if(e.route.test(t))return e.callback(t),!0})||this.notfound()):this.notfound()}notfound(){return this.trigger("notfound"),!1}navigate(t,e){if(!V.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");let n=this.root;this._trailingSlash||""!==t&&"?"!==t.charAt(0)||(n=n.slice(0,-1)||"/");const i=n+t;t=t.replace(G,"");const s=this.decodeFragment(t);if(this.fragment!==s){if(this.fragment=s,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,i);else{if(!this._wantsHashChange)return this.location.assign(i);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){const n=this.iframe.contentWindow;e.replace||(n.document.open(),n.document.close()),this._updateHash(n.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}}_updateHash(t,e,n){if(n){const n=t.href.replace(/(javascript:|#).*$/,"");t.replace(n+"#"+e)}else t.hash="#"+e}}V.started=!1,V.prototype.interval=50;const X=()=>{throw new Error('A "url" property or function must be specified')},K=(t,e)=>{const n=e.error;e.error=function(i){n&&n.call(e.context,t,i,e),t.trigger("error",t,i,e)}},Q={VERSION:"1.7.8",$:null,noConflict:function(){return h.Ostov=a,this},emulateHTTP:!1,emulateJSON:!1};Q.Events=p,o.extend(Q,p),Q.sync=(t,e,n)=>{const i=z[t];n||(n={}),o.defaults(n,{emulateHTTP:Q.emulateHTTP,emulateJSON:Q.emulateJSON});const s={type:i,dataType:"json",url:""};if(n.url||(s.url=o.result(e,"url")||X()),null!=n.data||!e||"create"!==t&&"update"!==t&&"patch"!==t||(s.contentType="application/json",s.data=JSON.stringify(n.attrs||e.toJSON(n))),n.emulateJSON&&(s.contentType="application/x-www-form-urlencoded",s.data=s.data?{model:s.data}:{}),n.emulateHTTP&&("PUT"===i||"DELETE"===i||"PATCH"===i)){s.type="POST",n.emulateJSON&&(s.data._method=i);const t=n.beforeSend;n.beforeSend=function(e){if(e.setRequestHeader("X-HTTP-Method-Override",i),t)return t.apply(this,arguments)}}"GET"===s.type||n.emulateJSON||(s.processData=!1);const r=n.error;n.error=function(t,e,i){n.textStatus=e,n.errorThrown=i,r?.call(n.context,t,e,i)};const l=n.xhr=Q.ajax(Object.assign(s,n));return e.trigger("request",e,l,n),l},Q.ajax=t=>{const e=(t.type||"GET").toUpperCase(),n=t.url,i={};let s;if(t.contentType&&(i["Content-Type"]=t.contentType),null!=t.data&&"GET"!==e)if(t.emulateJSON&&"object"==typeof t.data){const e=t.data;s=Object.keys(e).map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(String(e[t]))}`).join("&")}else s="string"==typeof t.data?t.data:JSON.stringify(t.data);const r={method:e,headers:i};if(void 0!==s&&(r.body=s),t.beforeSend){const e={setRequestHeader:(t,e)=>{i[t]=e}};t.beforeSend(e)}const o="undefined"!=typeof AbortController?new AbortController:null;o&&(r.signal=o.signal);const l={abort:()=>o?.abort()};return fetch(n,r).then(e=>{if(!e.ok){const n=Object.assign(new Error(`HTTP error ${e.status}`),{status:e.status});return void t.error?.call(t.context,l,e.status,n)}return("json"===t.dataType||(e.headers.get("content-type")||"").indexOf("json")>=0?e.json():e.text()).then(n=>{t.success?.call(t.context,n,e.status,l)})}).catch(e=>{e&&"AbortError"===e.name||t.error?.call(t.context,l,"error",e)}),l},Q.history=new V,Q.Model=E,Q.Collection=S,Q.View=N,Q.Router=L,Q.History=V,Q._debug=()=>({root:h,_:o}),h.Ostov=Q;export{S as Collection,w as Events,V as History,E as Model,L as Router,N as View,o as _,Q as default}; //# sourceMappingURL=ostov.min.js.map