Replace some ko.exportSymbol('*') in favour of ko['*']

and drop ko.exportProperty()
This commit is contained in:
the-djmaze 2024-02-11 15:37:24 +01:00
parent 6c144b5a28
commit 7c1f70c51e
16 changed files with 145 additions and 173 deletions

View file

@ -24,8 +24,7 @@ ko.exportSymbol = (koPath, object) => {
target = target[tokens[i]];
target[tokens[l]] = object;
};
ko.exportProperty = (owner, publicName, object) => owner[publicName] = object;
ko.exportSymbol('version', "3.5.1-sm");
ko['version'] = "3.5.1-sm";
ko.utils = {
extend: (target, source) => source ? Object.assign(target, source) : target,
@ -197,7 +196,7 @@ ko.utils.domNodeDisposal = (() => {
};
return {
addDisposeCallback : (node, callback) => {
'addDisposeCallback' : (node, callback) => {
if (typeof callback != "function")
throw new Error("Callback must be a function");
getDisposeCallbacksCollection(node, 1).add(callback);
@ -235,8 +234,7 @@ ko.utils.domNodeDisposal = (() => {
ko.cleanNode = ko.utils.domNodeDisposal.cleanNode; // Shorthand name for convenience
ko.removeNode = ko.utils.domNodeDisposal.removeNode; // Shorthand name for convenience
ko.exportSymbol('utils.domNodeDisposal', ko.utils.domNodeDisposal);
ko.exportSymbol('utils.domNodeDisposal.addDisposeCallback', ko.utils.domNodeDisposal.addDisposeCallback);
ko.extenders = {
ko['extenders'] = {
'debounce': (target, timeout) => target.limit(callback => debounce(callback, timeout)),
'rateLimit': (target, timeout) => target.limit(callback => throttle(callback, timeout)),
@ -273,8 +271,6 @@ function debounce(callback, timeout) {
};
}
ko.exportSymbol('extenders', ko.extenders);
class koSubscription
{
constructor (target, callback, disposeCallback) {
@ -284,10 +280,9 @@ class koSubscription
this._isDisposed = false;
this._node = null;
this._domNodeDisposalCallback = null;
ko.exportProperty(this, 'dispose', this.dispose);
}
dispose() {
'dispose'() {
var self = this;
if (!self._isDisposed) {
self._domNodeDisposalCallback
@ -302,7 +297,7 @@ class koSubscription
disposeWhenNodeIsRemoved(node) {
// MutationObserver ?
this._node = node;
ko.utils.domNodeDisposal.addDisposeCallback(node, this._domNodeDisposalCallback = this.dispose.bind(this));
ko.utils.domNodeDisposal['addDisposeCallback'](node, this._domNodeDisposalCallback = this['dispose'].bind(this));
}
}
@ -450,7 +445,7 @@ var ko_subscribable_fn = {
var target = this;
if (requestedExtenders) {
ko.utils.objectForEach(requestedExtenders, (key, value) => {
var extenderHandler = ko.extenders[key];
var extenderHandler = ko['extenders'][key];
if (typeof extenderHandler == 'function') {
target = extenderHandler(target, value) || target;
}
@ -588,20 +583,20 @@ ko.isWriteableObservable = instance => {
ko.exportSymbol('observable', ko.observable);
ko.exportSymbol('isObservable', ko.isObservable);
ko.exportSymbol('observable.fn', observableFn);
ko.observableArray = initialValues => {
ko['observableArray'] = initialValues => {
initialValues = initialValues || [];
if (typeof initialValues != 'object' || !('length' in initialValues))
throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
return Object.setPrototypeOf(ko.observable(initialValues), ko.observableArray['fn']).extend({'trackArrayChanges':true});
return Object.setPrototypeOf(ko.observable(initialValues), ko['observableArray']['fn']).extend({'trackArrayChanges':true});
};
const IS_OBSERVABLE_ARRAY = Symbol('IS_OBSERVABLE_ARRAY');
// Note that for browsers that don't support proto assignment, the
// inheritance chain is created manually in the ko.observableArray constructor
ko.observableArray['fn'] = Object.setPrototypeOf({
ko['observableArray']['fn'] = Object.setPrototypeOf({
[IS_OBSERVABLE_ARRAY]: 1,
'remove'(valueOrPredicate) {
var underlyingArray = this.peek();
@ -633,7 +628,7 @@ Object.getOwnPropertyNames(Array.prototype).forEach(methodName => {
// https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype#mutator_methods
// Important: Do not add any additional functions here that may reasonably be used to *read* data from the array
// because we'll eval them without causing subscriptions, so ko.computed output could end up getting stale
ko.observableArray['fn'][methodName] = function (...args) {
ko['observableArray']['fn'][methodName] = function (...args) {
// Use "peek" to avoid creating a subscription in any computed that we're executing in the context of
// (for consistency with mutating regular observables)
var underlyingArray = this.peek();
@ -646,19 +641,16 @@ Object.getOwnPropertyNames(Array.prototype).forEach(methodName => {
};
} else {
// Accessor and Iteration methods
ko.observableArray['fn'][methodName] = function (...args) {
ko['observableArray']['fn'][methodName] = function (...args) {
return this()[methodName](...args);
};
}
}
});
ko.isObservableArray = obj => !!(obj && obj[IS_OBSERVABLE_ARRAY]);
ko.exportSymbol('observableArray', ko.observableArray);
ko.exportSymbol('isObservableArray', ko.isObservableArray);
ko['isObservableArray'] = obj => !!(obj && obj[IS_OBSERVABLE_ARRAY]);
const arrayChangeEventName = 'arrayChange';
ko.extenders['trackArrayChanges'] = (target, options) => {
ko['extenders']['trackArrayChanges'] = (target, options) => {
// Use the provided options--each call to trackArrayChanges overwrites the previously set options
target.compareArrayOptions = {};
if (typeof options == "object") {
@ -690,8 +682,8 @@ ko.extenders['trackArrayChanges'] = (target, options) => {
target.afterSubscriptionRemove = event => {
underlyingAfterSubscriptionRemoveFunction?.call(target, event);
if (event === arrayChangeEventName && !target.hasSubscriptionsForEvent(arrayChangeEventName)) {
changeSubscription?.dispose();
spectateSubscription?.dispose();
changeSubscription?.['dispose']();
spectateSubscription?.['dispose']();
spectateSubscription = changeSubscription = null;
trackingChanges = false;
previousContents = undefined;
@ -893,8 +885,8 @@ ko.computed = (evaluatorFunctionOrOptions, options) => {
// Attach a DOM node disposal callback so that the computed will be proactively disposed as soon as the node is
// removed using ko.removeNode. But skip if isActive is false (there will never be any dependencies to dispose).
if (state.disposeWhenNodeIsRemoved && computedObservable.isActive()) {
ko.utils.domNodeDisposal.addDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback = () => {
computedObservable.dispose();
ko.utils.domNodeDisposal['addDisposeCallback'](state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback = () => {
computedObservable['dispose']();
});
}
@ -903,7 +895,7 @@ ko.computed = (evaluatorFunctionOrOptions, options) => {
// Utility function that disposes a given dependencyTracking entry
function computedDisposeDependencyCallback(id, entryToDispose) {
entryToDispose?.dispose?.();
entryToDispose?.['dispose']?.();
}
// This function gets called each time a dependency is detected while evaluating a computed.
@ -1044,7 +1036,7 @@ var computedFn = {
if (state.disposeWhenNodeIsRemoved && !ko.utils.domNodeIsAttachedToDocument(state.disposeWhenNodeIsRemoved) || disposeWhen?.()) {
// See comment above about suppressDisposalUntilDisposeWhenReturnsFalse
if (!state.suppressDisposalUntilDisposeWhenReturnsFalse) {
computedObservable.dispose();
computedObservable['dispose']();
return;
}
} else {
@ -1092,7 +1084,7 @@ var computedFn = {
var newValue = evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext);
if (!state.dependenciesCount) {
computedObservable.dispose();
computedObservable['dispose']();
changed = true; // When evaluation causes a disposal, make sure all dependent computeds get notified so they'll see the new state
} else {
changed = computedObservable.isDifferent(state.latestValue, newValue);
@ -1160,11 +1152,11 @@ var computedFn = {
self._limitChange(self, !isChange /* isDirty */);
};
},
dispose() {
'dispose'() {
var state = this[computedState];
if (!state.isSleeping && state.dependencyTracking) {
ko.utils.objectForEach(state.dependencyTracking, (id, dependency) =>
dependency.dispose?.()
dependency['dispose']?.()
);
}
if (state.disposeWhenNodeIsRemoved && state.domNodeDisposalCallback) {
@ -1226,13 +1218,13 @@ var pureComputedOverrides = {
var state = this[computedState];
if (!state.isDisposed && event == 'change' && !this.hasSubscriptionsForEvent('change')) {
ko.utils.objectForEach(state.dependencyTracking, (id, dependency) => {
if (dependency.dispose) {
if (dependency['dispose']) {
state.dependencyTracking[id] = {
_target: dependency._target,
_order: dependency._order,
_version: dependency._version
};
dependency.dispose();
dependency['dispose']();
}
});
state.isSleeping = true;
@ -1258,11 +1250,10 @@ Object.setPrototypeOf(computedFn, ko.subscribable['fn']);
// Set the proto values for ko.computed
var protoProp = ko.observable.protoProperty; // == "__ko_proto__"
computedFn[protoProp] = ko.computed;
ko.computed['fn'] = computedFn;
ko.exportSymbol('computed', ko.computed);
ko.exportSymbol('isComputed', instance => (typeof instance == 'function' && instance[protoProp] === computedFn[protoProp]));
ko.exportSymbol('computed.fn', computedFn);
ko.exportProperty(computedFn, 'dispose', computedFn.dispose);
ko['isComputed'] = instance => (typeof instance == 'function' && instance[protoProp] === computedFn[protoProp]);
ko.pureComputed = (evaluatorFunctionOrOptions) => {
if (typeof evaluatorFunctionOrOptions === 'function') {
@ -1843,7 +1834,7 @@ class AsyncCompleteContext {
this.asyncDescendants = new Set;
this.childrenComplete = false;
bindingInfo.asyncContext || ko.utils.domNodeDisposal.addDisposeCallback(node, asyncContextDispose);
bindingInfo.asyncContext || ko.utils.domNodeDisposal['addDisposeCallback'](node, asyncContextDispose);
if (ancestorBindingInfo?.asyncContext) {
ancestorBindingInfo.asyncContext.asyncDescendants.add(node);
@ -2052,7 +2043,7 @@ function applyBindingsToNodeInternal(node, sourceBindings, bindingContext) {
var callback = bindings[ko.bindingEvent.childrenComplete]();
if (callback) {
var nodes = ko.virtualElements.childNodes(node);
nodes.length && callback(nodes, ko.dataFor(nodes[0]));
nodes.length && callback(nodes, ko['dataFor'](nodes[0]));
}
});
}
@ -2127,7 +2118,7 @@ function getBindingContext(viewModelOrBindingContext, extendContextCallback) {
: new ko.bindingContext(viewModelOrBindingContext, undefined, undefined, extendContextCallback);
}
ko.applyBindingAccessorsToNode = (node, bindings, viewModelOrBindingContext) =>
ko['applyBindingAccessorsToNode'] = (node, bindings, viewModelOrBindingContext) =>
applyBindingsToNodeInternal(node, bindings, getBindingContext(viewModelOrBindingContext));
ko.applyBindingsToDescendants = (viewModelOrBindingContext, rootNode) => {
@ -2149,7 +2140,7 @@ ko.applyBindings = function (viewModelOrBindingContext, rootNode, extendContextC
};
// Retrieving binding context from arbitrary nodes
ko.dataFor = node => {
ko['dataFor'] = node => {
// We can only do something meaningful for elements and comment nodes (in particular, not text nodes, as IE can't store domdata for them)
var context = node && [1,8].includes(node.nodeType) && ko.storedBindingContextForNode(node);
return context ? context['$data'] : undefined;
@ -2157,13 +2148,11 @@ ko.dataFor = node => {
ko.exportSymbol('bindingHandlers', ko.bindingHandlers);
ko.exportSymbol('applyBindings', ko.applyBindings);
ko.exportSymbol('applyBindingAccessorsToNode', ko.applyBindingAccessorsToNode);
ko.exportSymbol('dataFor', ko.dataFor);
(() => {
var loadingSubscribablesCache = Object.create(null), // Tracks component loads that are currently in flight
loadedDefinitionsCache = new Map(); // Tracks component loads that have already completed
ko.components = {
ko['components'] = {
get: (componentName, callback) => {
if (loadedDefinitionsCache.has(componentName)) {
callback(loadedDefinitionsCache.get(componentName));
@ -2193,7 +2182,7 @@ ko.exportSymbol('dataFor', ko.dataFor);
}
},
register: (componentName, config) => {
'register': (componentName, config) => {
if (!config) {
throw new Error('Invalid configuration for ' + componentName);
}
@ -2263,9 +2252,6 @@ ko.exportSymbol('dataFor', ko.dataFor);
var found = (result['template'] && result[createViewModelKey]);
callback(found ? result : null);
};
ko.exportSymbol('components', ko.components);
ko.exportSymbol('components.register', ko.components.register);
})();
(() => {
var componentLoadingOperationUniqueId = 0;
@ -2281,7 +2267,7 @@ ko.exportSymbol('dataFor', ko.dataFor);
currentViewModelDispose.call(currentViewModel);
}
if (afterRenderSub) {
afterRenderSub.dispose();
afterRenderSub['dispose']();
}
afterRenderSub = null;
currentViewModel = null;
@ -2291,7 +2277,7 @@ ko.exportSymbol('dataFor', ko.dataFor);
originalChildNodes = [...ko.virtualElements.childNodes(element)];
ko.virtualElements.emptyNode(element);
ko.utils.domNodeDisposal.addDisposeCallback(element, disposeAssociatedComponentViewModel);
ko.utils.domNodeDisposal['addDisposeCallback'](element, disposeAssociatedComponentViewModel);
ko.computed(() => {
var componentName = ko.utils.unwrapObservable(valueAccessor()),
@ -2309,7 +2295,7 @@ ko.exportSymbol('dataFor', ko.dataFor);
var asyncContext = ko.bindingEvent.startPossiblyAsyncContentBinding(element, bindingContext);
var loadingOperationId = currentLoadingOperationId = ++componentLoadingOperationUniqueId;
ko.components.get(componentName, componentDefinition => {
ko['components'].get(componentName, componentDefinition => {
// If this is the current load operation for this element
if (currentLoadingOperationId === loadingOperationId) {
// Clean up previous state
@ -3004,7 +2990,7 @@ ko.bindingHandlers['value'] = {
// If the value binding is placed on a radio/checkbox, then just pass through to checkedValue and quit
if (isInputElement && (element.type == "checkbox" || element.type == "radio")) {
ko.applyBindingAccessorsToNode(element, { 'checkedValue': valueAccessor });
ko['applyBindingAccessorsToNode'](element, { 'checkedValue': valueAccessor });
return;
}
@ -3354,7 +3340,7 @@ makeEventHandlerShortcut('click');
ko.bindingEvent.notify(targetNode, ko.bindingEvent.childrenComplete);
};
if (!options['beforeRemove'] && ko.isObservableArray(arrayOrObservableArray)) {
if (!options['beforeRemove'] && ko['isObservableArray'](arrayOrObservableArray)) {
setDomNodeChildrenFromArrayMapping(arrayOrObservableArray.peek());
var subscription = arrayOrObservableArray['subscribe'](changeList => {
@ -3377,7 +3363,7 @@ makeEventHandlerShortcut('click');
var templateComputedDomDataKey = ko.utils.domData.nextKey();
function disposeOldComputedAndStoreNewOne(element, newComputed) {
var oldComputed = ko.utils.domData.get(element, templateComputedDomDataKey);
oldComputed?.dispose?.();
oldComputed?.['dispose']?.();
ko.utils.domData.set(element, templateComputedDomDataKey, (newComputed && (!newComputed.isActive || newComputed.isActive())) ? newComputed : undefined);
}
@ -3688,7 +3674,7 @@ ko.utils.compareArrays = (() => {
// Stop tracking changes to the mapping for these nodes
if (mapData.dependentObservable) {
mapData.dependentObservable.dispose();
mapData.dependentObservable['dispose']();
mapData.dependentObservable = undefined;
}

View file

@ -4,70 +4,70 @@
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
*/
(V=>{function O(a,b){return null===a||ea[typeof a]?a===b:!1}function fa(a,b){var d;return()=>{d||(d=setTimeout(()=>{d=0;a()},b))}}function ha(a,b){var d;return()=>{clearTimeout(d);d=setTimeout(a,b)}}function ia(a,b){b?.A?.()}function ja(a,b){var d=this.Yb,f=d[x];f.$||(this.Va&&this.ya[b]?(d.rb(b,a,this.ya[b]),this.ya[b]=null,--this.Va):f.B[b]||d.rb(b,a,f.C?{X:a}:d.Qb(a)),a.ia&&a.Ub())}function W(a){a=c.g.j.get(a,I);var b=a?.H;b&&(a.H=null,b.Kb())}function X(a,b){for(var d,f=c.m.firstChild(b);d=f;)f=
c.m.nextSibling(d),Y(a,d);c.l.notify(b,c.l.G)}function Y(a,b){var d=a;if(1===b.nodeType||c.wb.kc(b))d=Z(b,null,a).bindingContextForDescendants;d&&!b.matches?.("SCRIPT,TEXTAREA,TEMPLATE")&&X(d,b)}function ka(a){var b=[],d={},f=[];c.g.P(a,function e(l){if(!d[l]){var g=c.h[l];g&&(g.after&&(f.push(l),g.after.forEach(k=>{if(a[k]){if(f.includes(k))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+f.join(", "));e(k)}}),f.length--),b.push({key:l,Fb:g}));d[l]=!0}});
return b}function Z(a,b,d){var f=c.g.j.ab(a,I,{}),h=f.Vb;if(!b){if(h)throw Error("You cannot apply bindings multiple times to the same element.");f.Vb=!0}h||(f.context=d);f.cb||(f.cb={});if(b&&"function"!==typeof b)var l=b;else{var e=c.s(()=>{if(l=b?b(d,a):c.wb.ac(a,d))d[J]?.(),d[aa]?.();return l},{o:a});l&&e.isActive()||(e=null)}var g=d,k;if(l){var n=e?m=>()=>e()[m]():m=>l[m],p={get:m=>l[m]&&n(m)(),has:m=>m in l};c.l.G in l&&c.l.subscribe(a,c.l.G,()=>{var m=l[c.l.G]();if(m){var q=c.m.childNodes(a);
q.length&&m(q,c.Ab(q[0]))}});c.l.ga in l&&(g=c.l.ib(a,d),c.l.subscribe(a,c.l.ga,()=>{var m=l[c.l.ga]();m&&c.m.firstChild(a)&&m(a)}));ka(l).forEach(m=>{var q=m.Fb.init,r=m.Fb.update,t=m.key;if(8===a.nodeType&&!c.m.ca[t])throw Error("The binding '"+t+"' cannot be used with virtual elements");try{"function"==typeof q&&c.u.M(()=>{var u=q(a,n(t),p,g.$data,g);if(u&&u.controlsDescendantBindings){if(void 0!==k)throw Error("Multiple bindings ("+k+" and "+t+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");
k=t}}),"function"==typeof r&&c.s(()=>r(a,n(t),p,g.$data,g),{o:a})}catch(u){throw u.message='Unable to process binding "'+t+": "+l[t]+'"\nMessage: '+u.message,u;}})}f=void 0===k;return{shouldBindDescendants:f,bindingContextForDescendants:f&&g}}function P(a,b){return a&&a instanceof c.ea?a:new c.ea(a,void 0,void 0,b)}var K=V.document,Q={},c="undefined"!==typeof Q?Q:{};c.v=(a,b)=>{a=a.split(".");for(var d=c,f=0,h=a.length-1;f<h;f++)d=d[a[f]];d[a[h]]=b};c.Db=(a,b)=>{a.dispose=b};c.v("version","3.5.1-sm");
c.g={extend:(a,b)=>b?Object.assign(a,b):a,P:(a,b)=>a&&Object.entries(a).forEach(d=>b(d[0],d[1])),Za:a=>[...a.childNodes].forEach(b=>c.removeNode(b)),Jb:a=>{a=[...a];var b=(a[0]?.ownerDocument||K).createElement("div");a.forEach(d=>b.append(c.fa(d)));return b},xa:(a,b)=>Array.prototype.map.call(a,b?d=>c.fa(d.cloneNode(!0)):d=>d.cloneNode(!0)),ta:(a,b)=>{c.g.Za(a);b&&a.append(...b)},Aa:(a,b)=>{if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);for(;1<a.length&&
a[a.length-1].parentNode!==b;)--a.length;if(1<a.length){b=a[0];var d=a[a.length-1];for(a.length=0;b!==d;)a.push(b),b=b.nextSibling;a.push(d)}}return a},Pb:a=>null==a?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,""),Ya:a=>a.ownerDocument.documentElement.contains(1!==a.nodeType?a.parentNode:a),Rb:(a,b)=>{if(!a?.nodeType)throw Error("element must be a DOM node when calling triggerEvent");a.dispatchEvent(new Event(b))},i:a=>c.U(a)?a():a,hb:(a,b)=>a.textContent=c.g.i(b)||""};c.v("utils",
c.g);c.v("unwrap",c.g.i);(()=>{let a=0,b="__ko__"+Date.now(),d=new WeakMap;c.g.j={get:(f,h)=>(d.get(f)||{})[h],set:(f,h,l)=>{d.has(f)?d.get(f)[h]=l:d.set(f,{[h]:l});return l},ab(f,h,l){return this.get(f,h)||this.set(f,h,l)},clear:f=>d.delete(f),Z:()=>a++ +b}})();c.g.K=(()=>{var a=c.g.j.Z(),b={1:1,8:1,9:1},d={1:1,9:1};const f=(e,g)=>{var k=c.g.j.get(e,a);g&&!k&&(k=new Set,c.g.j.set(e,a,k));return k},h=e=>{var g=f(e);g&&(new Set(g)).forEach(k=>k(e));c.g.j.clear(e);d[e.nodeType]&&l(e.childNodes,!0)},
l=(e,g)=>{for(var k=[],n,p=0;p<e.length;p++)if(!g||8===e[p].nodeType)if(h(k[k.length]=n=e[p]),e[p]!==n)for(;p--&&!k.includes(e[p]););};return{la:(e,g)=>{if("function"!=typeof g)throw Error("Callback must be a function");f(e,1).add(g)},gb:(e,g)=>{var k=f(e);k&&(k.delete(g),k.size||c.g.j.set(e,a,null))},fa:e=>{c.u.M(()=>{b[e.nodeType]&&(h(e),d[e.nodeType]&&l(e.getElementsByTagName("*")))});return e},removeNode:e=>{c.fa(e);e.parentNode&&e.parentNode.removeChild(e)}}})();c.fa=c.g.K.fa;c.removeNode=c.g.K.removeNode;
c.v("utils.domNodeDisposal",c.g.K);c.v("utils.domNodeDisposal.addDisposeCallback",c.g.K.la);c.$a={debounce:(a,b)=>a.Ha(d=>ha(d,b)),rateLimit:(a,b)=>a.Ha(d=>fa(d,b)),notify:(a,b)=>{a.oa="always"==b?null:O}};var ea={undefined:1,"boolean":1,number:1,string:1};c.v("extenders",c.$a);class la{constructor(a,b,d){this.X=a;this.lb=b;this.Ca=d;this.Na=!1;this.L=this.ha=null;c.Db(this,this.A)}A(){this.Na||(this.L&&c.g.K.gb(this.ha,this.L),this.Na=!0,this.Ca(),this.X=this.lb=this.Ca=this.ha=this.L=null)}o(a){this.ha=
a;c.g.K.la(a,this.L=this.A.bind(this))}}c.V=function(){Object.setPrototypeOf(this,R);R.init(this)};var R={init:a=>{a.W=new Map;a.W.set("change",new Set);a.qb=1},subscribe:function(a,b,d){var f=this;d=d||"change";var h=new la(f,b?a.bind(b):a,()=>{f.W.get(d).delete(h);f.Oa?.(d)});f.Qa?.(d);f.W.has(d)||f.W.set(d,new Set);f.W.get(d).add(h);return h},D(a,b){b=b||"change";"change"===b&&this.Ka();if(this.qa(b)){b="change"===b&&this.Sb||new Set(this.W.get(b));try{c.u.vb(),b.forEach(d=>{d.Na||d.lb(a)})}finally{c.u.end()}}},
Ba(){return this.qb},dc(a){return this.Ba()!==a},Ka(){++this.qb},Ha(a){var b=this,d=c.U(b),f,h,l,e,g;b.va||(b.va=b.D,b.D=(n,p)=>{p&&"change"!==p?"beforeChange"===p?b.nb(n):b.va(n,p):b.ob(n)});var k=a(()=>{b.ia=!1;d&&e===b&&(e=b.mb?b.mb():b());var n=h||g&&b.Fa(l,e);g=h=f=!1;n&&b.va(l=e)});b.ob=(n,p)=>{p&&b.ia||(g=!p);b.Sb=new Set(b.W.get("change"));b.ia=f=!0;e=n;k()};b.nb=n=>{f||(l=n,b.va(n,"beforeChange"))};b.pb=()=>{g=!0};b.Ub=()=>{b.Fa(l,b.I(!0))&&(h=!0)}},qa(a){return(this.W.get(a)||[]).size},
Fa(a,b){return!this.oa||!this.oa(a,b)},toString:()=>"[object Object]",extend:function(a){var b=this;a&&c.g.P(a,(d,f)=>{d=c.$a[d];"function"==typeof d&&(b=d(b,f)||b)});return b}};c.V.fn=Object.setPrototypeOf(R,Function.prototype);c.ic=a=>"function"==typeof a?.subscribe&&"function"==typeof a.D;(()=>{let a=[],b,d=0;c.u={vb:f=>{a.push(b);b=f},end:()=>b=a.pop(),Nb:f=>{if(b){if(!c.ic(f))throw Error("Only subscribable things can act as dependencies");b.Wb.call(b.Xb,f,f.Tb||(f.Tb=++d))}},M(f,h,l){try{return a.push(b),
b=void 0,f.apply(h,l||[])}finally{b=a.pop()}},pa:()=>b?.s.pa(),Ga:()=>b?.Ga,s:()=>b?.s}})();const B=Symbol("_latestValue");c.ba=a=>{function b(){if(0<arguments.length)return b.Fa(b[B],arguments[0])&&(b.kb(),b[B]=arguments[0],b.valueHasMutated()),this;c.u.Nb(b);return b[B]}b[B]=a;Object.defineProperty(b,"length",{get:()=>null==b[B]?void 0:b[B].length});c.V.fn.init(b);return Object.setPrototypeOf(b,L)};var L={toJSON:function(){let a=this[B];return a?.toJSON?.()||a},oa:O,I(){return this[B]},valueHasMutated:function(){this.D(this[B],
"spectate");this.D(this[B])},kb(){this.D(this[B],"beforeChange")}};Object.setPrototypeOf(L,c.V.fn);var E=c.ba.nc="__ko_proto__";L[E]=c.ba;c.U=a=>{if((a="function"==typeof a&&a[E])&&a!==L[E]&&a!==c.s.fn[E])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!a};c.Hb=a=>"function"==typeof a&&(a[E]===L[E]||a[E]===c.s.fn[E]&&a.ec);c.v("observable",c.ba);c.v("isObservable",c.U);c.v("observable.fn",L);c.sa=a=>{a=a||[];if("object"!=typeof a||!("length"in
a))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return Object.setPrototypeOf(c.ba(a),c.sa.fn).extend({trackArrayChanges:!0})};const ba=Symbol("IS_OBSERVABLE_ARRAY");c.sa.fn=Object.setPrototypeOf({[ba]:1,remove:function(a){for(var b=this.I(),d=!1,f="function"!=typeof a||c.U(a)?e=>e===a:a,h=b.length;h--;){var l=b[h];if(f(l)){if(b[h]!==l)throw Error("Array modified during remove; cannot remove item");d||this.kb();d=!0;b.splice(h,1)}}d&&
this.valueHasMutated()}},c.ba.fn);Object.getOwnPropertyNames(Array.prototype).forEach(a=>{"function"===typeof Array.prototype[a]&&"constructor"!=a&&("copyWithin fill pop push reverse shift sort splice unshift".split(" ").includes(a)?c.sa.fn[a]=function(...b){var d=this.I();this.kb();this.xb(d,a,b);b=d[a](...b);this.valueHasMutated();return b===d?this:b}:c.sa.fn[a]=function(...b){return this()[a](...b)})});c.Gb=a=>!(!a||!a[ba]);c.v("observableArray",c.sa);c.v("isObservableArray",c.Gb);c.$a.trackArrayChanges=
(a,b)=>{function d(){function m(){if(g){var q=[].concat(a.I()||[]);if(a.qa("arrayChange")){if(!h||1<g)h=c.g.yb(k,q,a.Sa);var r=h}k=q;h=null;g=0;r?.length&&a.D(r,"arrayChange")}}f?m():(f=!0,e=a.subscribe(()=>++g,null,"spectate"),k=[].concat(a.I()||[]),h=null,l=a.subscribe(m))}a.Sa={};"object"==typeof b&&c.g.extend(a.Sa,b);a.Sa.sparse=!0;if(!a.xb){var f=!1,h=null,l,e,g=0,k,n=a.Qa,p=a.Oa;a.Qa=m=>{n?.call(a,m);"arrayChange"===m&&d()};a.Oa=m=>{p?.call(a,m);"arrayChange"!==m||a.qa("arrayChange")||(l?.A(),
e?.A(),e=l=null,f=!1,k=void 0)};a.xb=(m,q,r)=>{function t(A,v,G){return u[u.length]={status:A,value:v,index:G}}if(f&&!g){var u=[],y=m.length,w=r.length,z=0;switch(q){case "push":z=y;case "unshift":for(m=0;m<w;m++)t("added",r[m],z+m);break;case "pop":z=y-1;case "shift":y&&t("deleted",m[z],z);break;case "splice":z=Math.min(Math.max(0,0>r[0]?y+r[0]:r[0]),y);y=1===w?y:Math.min(z+(r[1]||0),y);w=z+w-2;q=Math.max(y,w);for(var C=[],F=[],N=2;z<q;++z,++N)z<y&&F.push(t("deleted",m[z],z)),z<w&&C.push(t("added",
r[N],z));c.g.Eb(F,C);break;default:return}h=u}}}};var x=Symbol("_state");c.s=(a,b)=>{function d(){if(0<arguments.length){if("function"!==typeof f)throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");f(...arguments);return this}h.$||c.u.Nb(d);(h.Y||h.C&&d.ra())&&d.T();return h.N}"object"===typeof a?b=a:(b=b||{},a&&(b.read=a));if("function"!=typeof b.read)throw Error("Pass a function that returns the value of the ko.computed");
var f=b.write,h={N:void 0,aa:!0,Y:!0,Ea:!1,jb:!1,$:!1,fb:!1,C:!1,Mb:b.read,o:b.disposeWhenNodeIsRemoved||b.o||null,ma:b.disposeWhen||b.ma,Xa:null,B:{},J:0,Cb:null};d[x]=h;d.ec="function"===typeof f;c.V.fn.init(d);Object.setPrototypeOf(d,H);b.pure&&(h.fb=!0,h.C=!0,c.g.extend(d,ma));h.o&&(h.jb=!0,h.o.nodeType||(h.o=null));h.C||d.T();h.o&&d.isActive()&&c.g.K.la(h.o,h.Xa=()=>{d.A()});return d};var H={oa:O,pa(){return this[x].J},bc(){var a=[];c.g.P(this[x].B,(b,d)=>a[d.ja]=d.X);return a},bb(a){if(!this[x].J)return!1;
var b=this.bc();return b.includes(a)||!!b.find(d=>d.bb&&d.bb(a))},rb(a,b,d){if(this[x].fb&&b===this)throw Error("A 'pure' computed must not be called recursively");this[x].B[a]=d;d.ja=this[x].J++;d.ka=b.Ba()},ra(){var a,b=this[x].B;for(a in b)if(Object.prototype.hasOwnProperty.call(b,a)){var d=b[a];if(this.ua&&d.X.ia||d.X.dc(d.ka))return!0}},sc(){this[x].Ea||this.ua?.(!1)},isActive(){var a=this[x];return a.Y||0<a.J},tc(){this.ia?this[x].Y&&(this[x].aa=!0):this.Bb()},Qb(a){return a.subscribe(this.Bb,
this)},Bb(){var a=this,b=a.throttleEvaluation;0<=b?(clearTimeout(this[x].Cb),this[x].Cb=setTimeout(()=>a.T(!0),b)):a.ua?a.ua(!0):a.T(!0)},T(a){var b=this[x],d=b.ma,f=!1;if(!b.Ea&&!b.$){if(b.o&&!c.g.Ya(b.o)||d?.()){if(!b.jb){this.A();return}}else b.jb=!1;try{b.Ea=!0,f=this.$b(a)}finally{b.Ea=!1}return f}},$b(a){var b=this[x],d=b.fb?void 0:!b.J;var f={Yb:this,ya:b.B,Va:b.J};c.u.vb({Xb:f,Wb:ja,s:this,Ga:d});b.B={};b.J=0;a:{try{var h=b.Mb();break a}finally{c.u.end(),f.Va&&!b.C&&c.g.P(f.ya,ia),b.aa=b.Y=
!1}h=void 0}b.J?f=this.Fa(b.N,h):(this.A(),f=!0);f&&(b.C?this.Ka():this.D(b.N,"beforeChange"),b.N=h,this.D(b.N,"spectate"),!b.C&&a&&this.D(b.N),this.pb&&this.pb());d&&this.D(b.N,"awake");return f},I(a){var b=this[x];(b.Y&&(a||!b.J)||b.C&&this.ra())&&this.T();return b.N},Ha(a){var b=this;c.V.fn.Ha.call(b,a);b.mb=()=>{b[x].C||(b[x].aa?b.T():b[x].Y=!1);return b[x].N};b.ua=d=>{b.nb(b[x].N);b[x].Y=!0;d&&(b[x].aa=!0);b.ob(b,!d)}},A(){var a=this[x];!a.C&&a.B&&c.g.P(a.B,(b,d)=>d.A?.());a.o&&a.Xa&&c.g.K.gb(a.o,
a.Xa);a.B=void 0;a.J=0;a.$=!0;a.aa=!1;a.Y=!1;a.C=!1;a.o=void 0;a.ma=void 0;a.Mb=void 0}},ma={Qa(a){var b=this,d=b[x];if(!d.$&&d.C&&"change"==a){d.C=!1;if(d.aa||b.ra())d.B=null,d.J=0,b.T()&&b.Ka();else{var f=[];c.g.P(d.B,(h,l)=>f[l.ja]=h);f.forEach((h,l)=>{var e=d.B[h],g=b.Qb(e.X);g.ja=l;g.ka=e.ka;d.B[h]=g});b.ra()&&b.T()&&b.Ka()}d.$||b.D(d.N,"awake")}},Oa(a){var b=this[x];b.$||"change"!=a||this.qa("change")||(c.g.P(b.B,(d,f)=>{f.A&&(b.B[d]={X:f.X,ja:f.ja,ka:f.ka},f.A())}),b.C=!0,this.D(void 0,"asleep"))},
Ba(){var a=this[x];a.C&&(a.aa||this.ra())&&this.T();return c.V.fn.Ba.call(this)}};Object.setPrototypeOf(H,c.V.fn);var S=c.ba.nc;H[S]=c.s;c.v("computed",c.s);c.v("isComputed",a=>"function"==typeof a&&a[S]===H[S]);c.v("computed.fn",H);c.Db(H,H.A);c.Lb=a=>{if("function"===typeof a)return c.s(a,{pure:!0});a={...a,pure:!0};return c.s(a)};c.F={R:a=>{switch(a.nodeName){case "OPTION":return!0===a.__ko__hasDomDataOptionValue__?c.g.j.get(a,c.h.options.eb):a.value;case "SELECT":return 0<=a.selectedIndex?c.F.R(a.options[a.selectedIndex]):
void 0;default:return a.value}},La:(a,b,d)=>{switch(a.nodeName){case "OPTION":"string"===typeof b?(c.g.j.set(a,c.h.options.eb,void 0),delete a.__ko__hasDomDataOptionValue__,a.value=b):(c.g.j.set(a,c.h.options.eb,b),a.__ko__hasDomDataOptionValue__=!0,a.value="number"===typeof b?b:"");break;case "SELECT":for(var f=-1,h=""===b||null==b,l=a.options.length,e;l--;)if(e=c.F.R(a.options[l]),e==b||""===e&&h){f=l;break}if(d||0<=f||h&&1<a.size)a.selectedIndex=f;break;default:a.value=null==b?"":b}}};c.S=(()=>
{var a=RegExp("\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]","g"),b=/[\])"'A-Za-z0-9_$]+$/,d={"in":1,"return":1,"typeof":1},f=h=>{h=c.g.Pb(h);123===h.charCodeAt(0)&&(h=h.slice(1,-1));h+="\n,";var l=[],e=h.match(a),g=[],k=0;if(1<e.length){for(var n=0,p;p=e[n++];){var m=p.charCodeAt(0);if(44===m){if(0>=k){l.push(q&&g.length?{key:q,value:g.join("")}:{unknown:q||g.join("")});var q=
k=0;g=[];continue}}else if(58===m){if(!k&&!q&&1===g.length){q=g.pop();continue}}else if(47===m&&1<p.length&&(47===p.charCodeAt(1)||42===p.charCodeAt(1)))continue;else 47===m&&n&&1<p.length?(m=e[n-1].match(b))&&!d[m[0]]&&(h=h.slice(h.indexOf(p)+1),e=h.match(a),n=-1,p="/"):40===m||123===m||91===m?++k:41===m||125===m||93===m?--k:q||g.length||34!==m&&39!==m||(p=p.slice(1,-1));g.push(p)}if(0<k)throw Error("Unbalanced parentheses, braces, or brackets");}return l};return{Ra:[],lc:f,mc:h=>{var l=[],e=(g,
k)=>{var n=c.h[g];n?.preprocess&&!n.preprocess(k,g,e)||l.push("'"+g+"':function(){return "+(k+" }"))};f(h).forEach(g=>e(g.key||g.unknown,g.value));return l.join(",")},jc:(h,l)=>-1<h.findIndex(e=>e.key==l),Ma:(h,l,e,g,k)=>{if(h&&c.U(h))!c.Hb(h)||k&&h.I()===g||h(g);else throw Error(`${e} , must be observable`);}}})();(()=>{function a(e){return 8==e.nodeType&&f.test(e.nodeValue)}function b(e){return 8==e.nodeType&&h.test(e.nodeValue)}function d(e,g){for(var k=e,n=1,p=[];k=k.nextSibling;){if(b(k)&&(c.g.j.set(k,
l,!0),!--n))return p;p.push(k);a(k)&&++n}if(!g)throw Error("Cannot find closing comment tag to match: "+e.nodeValue);return null}var f=/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=/^\s*\/ko\s*$/,l="__ko_matchedEndComment__";c.m={ca:{},childNodes:e=>a(e)?d(e):e.childNodes,na:e=>{a(e)?(e=d(e))&&[...e].forEach(g=>c.removeNode(g)):c.g.Za(e)},ta:(e,g)=>{a(e)?(c.m.na(e),e.after(...g)):c.g.ta(e,g)},prepend:(e,g)=>{a(e)?e.nextSibling.before(g):e.prepend(g)},hc:(e,g,k)=>{k?k.after(g):c.m.prepend(e,g)},firstChild:e=>{if(a(e))return e=
e.nextSibling,!e||b(e)?null:e;let g=e.firstChild;if(g&&b(g))throw Error("Found invalid end comment, as the first child of "+e);return g},nextSibling:e=>{if(a(e)){var g=d(e,void 0);e=g?(g.length?g[g.length-1]:e).nextSibling:null}if((g=e.nextSibling)&&b(g)){if(b(g)&&!c.g.j.get(g,l))throw Error("Found end comment without a matching opening comment, as child of "+e);return null}return g},cc:a,rc:e=>(e=e.nodeValue.match(f))?e[1]:null}})();const ca=new Map;c.wb=new class{kc(a){switch(a.nodeType){case 1:return null!=
a.getAttribute("data-bind");case 8:return c.m.cc(a)}return!1}ac(a,b){a:{switch(a.nodeType){case 1:var d=a.getAttribute("data-bind");break a;case 8:d=c.m.rc(a);break a}d=null}if(d)try{let h=ca.get(d);if(!h){var f="with($context){with($data||{}){return{"+c.S.mc(d)+"}}}";h=new Function("$context","$element",f);ca.set(d,h)}return h(b,a)}catch(h){throw h.message="Unable to parse bindings.\nBindings value: "+d+"\nMessage: "+h.message,h;}return null}};const J=Symbol("_subscribable"),M=Symbol("_ancestorBindingInfo"),
aa=Symbol("_dataDependency"),da={},I=c.g.j.Z();c.h={};c.ea=class{constructor(a,b,d,f,h){var l=this,e=a===da,g=e?void 0:a,k="function"==typeof g&&!c.U(g),n=h?.dataDependency;a=()=>{var m=k?g():g,q=c.g.i(m);b?(c.g.extend(l,b),M in b&&(l[M]=b[M])):(l.$parents=[],l.$root=q,l.ko=c);l[J]=p;e?q=l.$data:(l.$rawData=m,l.$data=q);d&&(l[d]=q);f?.(l,b,q);if(b?.[J]&&!c.u.s().bb(b[J]))b[J]();n&&(l[aa]=n);return l.$data};if(h?.exportDependencies)a();else{var p=c.Lb(a);p.I();p.isActive()?p.oa=null:l[J]=void 0}}createChildContext(a,
b,d,f){!f&&b&&"object"==typeof b&&(f=b,b=f.as,d=f.extend);return new c.ea(a,this,b,(h,l)=>{h.$parentContext=l;h.$parent=l.$data;h.$parents=(l.$parents||[]).slice(0);h.$parents.unshift(h.$parent);d&&d(h)},f)}extend(a,b){return new c.ea(da,this,null,d=>c.g.extend(d,"function"==typeof a?a(d):a),b)}};class na{constructor(a,b,d){this.L=a;this.ha=b;this.wa=new Set;this.G=!1;b.H||c.g.K.la(a,W);d?.H&&(d.H.wa.add(a),this.Ca=d)}Kb(){this.Ca?.H?.Zb(this.L)}Zb(a){this.wa.delete(a);this.wa.size||this.zb?.()}zb(){this.G=
!0;this.ha.H&&!this.wa.size&&(this.ha.H=null,c.g.K.gb(this.L,W),c.l.notify(this.L,c.l.ga),this.Kb())}}c.l={G:"childrenComplete",ga:"descendantsComplete",subscribe:(a,b,d,f,h)=>{var l=c.g.j.ab(a,I,{});l.za||(l.za=new c.V);h?.notifyImmediately&&l.cb[b]&&c.u.M(d,f,[a]);return l.za.subscribe(d,f,b)},notify:(a,b)=>{var d=c.g.j.get(a,I);if(d&&(d.cb[b]=!0,d.za?.D(a,b),b==c.l.G))if(d.H)d.H.zb();else if(void 0===d.H&&d.za?.qa(c.l.ga))throw Error("descendantsComplete event not supported for bindings on this node");
},ib:(a,b)=>{var d=c.g.j.ab(a,I,{});d.H||(d.H=new na(a,d,b[M]));return b[M]==d?b:b.extend(f=>{f[M]=d})}};c.qc=a=>(a=c.g.j.get(a,I))&&a.context;c.sb=(a,b,d)=>Z(a,b,P(d));c.ub=(a,b)=>{1!==b.nodeType&&8!==b.nodeType||X(P(a),b)};c.tb=function(a,b,d){if(2>arguments.length){if(b=K.body,!b)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");}else if(!b||1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
Y(P(a,d),b)};c.Ab=a=>(a=a&&[1,8].includes(a.nodeType)&&c.qc(a))?a.$data:void 0;c.v("bindingHandlers",c.h);c.v("applyBindings",c.tb);c.v("applyBindingAccessorsToNode",c.sb);c.v("dataFor",c.Ab);(()=>{var a=Object.create(null),b=new Map;c.Ta={get:(l,e)=>{if(b.has(l))e(b.get(l));else{var g=a[l];g?g.subscribe(e):(g=a[l]=new c.V,g.subscribe(e),h(l,k=>{b.set(l,k);delete a[l];g.D(k)}))}},register:(l,e)=>{if(!e)throw Error("Invalid configuration for "+l);if(d[l])throw Error("Component "+l+" is already registered");
d[l]=e}};var d=Object.create(null),f=(l,e)=>{throw Error(`Component '${l}': ${e}`);},h=(l,e)=>{var g={},k=d[l]||{},n=k.template;k=k.viewModel;if(n){n.element||f(l,"Unknown template value: "+n);n=n.element;var p=K.getElementById(n);p||f(l,"Cannot find element with ID "+n);p.matches("TEMPLATE")||f(l,"Template Source Element not a <template>");g.template=c.g.xa(p.content.childNodes)}k&&("function"!==typeof k.createViewModel&&f(l,"Unknown viewModel value: "+k),g.createViewModel=k.createViewModel);e(g.template&&
g.createViewModel?g:null)};c.v("components",c.Ta);c.v("components.register",c.Ta.register)})();(()=>{var a=0;c.h.component={init:(b,d,f,h,l)=>{var e,g,k,n=()=>{var m=e&&e.dispose;"function"===typeof m&&m.call(e);k&&k.A();g=e=k=null},p=[...c.m.childNodes(b)];c.m.na(b);c.g.K.la(b,n);c.s(()=>{var m=c.g.i(d());if("string"!==typeof m){var q=c.g.i(m.params);m=c.g.i(m.name)}if(!m)throw Error("No component name specified");var r=c.l.ib(b,l),t=g=++a;c.Ta.get(m,u=>{if(g===t){n();if(!u)throw Error("Unknown component '"+
m+"'");var y=u.template;if(!y)throw Error("Component '"+m+"' has no template");c.m.ta(b,c.g.xa(y));e=u.createViewModel(q,{element:b,templateNodes:p});c.ub(r.createChildContext(e,{extend:w=>{w.$component=e;w.$componentTemplateNodes=p}}),b)}})},{o:b});return{controlsDescendantBindings:!0}}};c.m.ca.component=!0})();c.h.attr={update:(a,b)=>{b=c.g.i(b())||{};c.g.P(b,function(d,f){f=c.g.i(f);var h=d.indexOf(":");h="lookupNamespaceURI"in a&&0<h&&a.lookupNamespaceURI(d.slice(0,h));var l=!1===f||null==f;l?
h?a.removeAttributeNS(h,d):a.removeAttribute(d):(f=f.toString(),h?a.setAttributeNS(h,d,f):a.setAttribute(d,f));"name"===d&&(a.name=l?"":f)})}};(()=>{c.h.checked={after:["value","attr"],init:function(a,b,d){var f="checkbox"==a.type,h="radio"==a.type;if(f||h){const m=c.Lb(()=>{if(d.has("checkedValue"))return c.g.i(d.get("checkedValue"));if(n)return d.has("value")?c.g.i(d.get("value")):a.value});var l=()=>{if(!c.u.Ga()){var q=a.checked,r=m();if(q||!h&&!c.u.pa()){var t=c.u.M(b);if(g){var u=k?t.I():t,
y=p;p=r;y!==r?q&&(u.push(r),u.remove(y)):q?u.push(r):u.remove(r);k&&c.Hb(t)&&t(u)}else f&&(void 0===r?r=q:q||(r=void 0)),c.S.Ma(t,d,"checked",r,!0)}}},e=b(),g=f&&c.g.i(e)instanceof Array,k=!(g&&e.push&&e.splice),n=h||g,p=g?m():void 0;h&&!a.name&&c.h.uniqueName.init(a,function(){return!0});c.s(l,null,{o:a});a.addEventListener("click",l);c.s(()=>{var q=c.g.i(b()),r=m();g?(a.checked=q.includes(r),p=r):a.checked=f&&void 0===r?!!q:m()===q},null,{o:a});e=void 0}}};c.h.checkedValue={update:function(a,b){a.value=
c.g.i(b())}}})();var T=(a,b,d)=>b&&b.split(/\s+/).forEach(f=>a.classList.toggle(f,d));c.h.css={update:(a,b)=>{b=c.g.i(b());"object"==typeof b?c.g.P(b,(d,f)=>{f=c.g.i(f);T(a,d,!!f)}):(b=c.g.Pb(b),T(a,a.__ko__cssValue,!1),a.__ko__cssValue=b,T(a,b,!0))}};c.h.enable={update:(a,b)=>{(b=c.g.i(b()))&&a.disabled?a.removeAttribute("disabled"):b||a.disabled||(a.disabled=!0)}};c.h.disable={update:(a,b)=>c.h.enable.update(a,()=>!c.g.i(b()))};c.h.event={init:function(a,b,d,f,h){c.g.P(b()||{},l=>{"string"==typeof l&&
a.addEventListener(l,(...e)=>{var g=b()[l];if(g)try{f=h.$data;var k=g.apply(f,[f,...e])}finally{!0!==k&&e[0].preventDefault()}})})}};c.h.foreach={Ib:a=>()=>{var b=a(),d=c.U(b)?b.I():b;if(!d||"number"==typeof d.length)return{foreach:b};c.g.i(b);return{foreach:d.data,as:d.as,beforeRemove:d.beforeRemove}},init:(a,b)=>c.h.template.init(a,c.h.foreach.Ib(b)),update:(a,b,d,f,h)=>c.h.template.update(a,c.h.foreach.Ib(b),d,f,h)};c.S.Ra.foreach=!1;c.m.ca.foreach=!0;c.h.hasfocus={init:(a,b,d)=>{var f=l=>{a.__ko_hasfocusUpdating=
!0;l=a.ownerDocument.activeElement===a;c.S.Ma(b(),d,"hasfocus",l,!0);a.__ko_hasfocusLastValue=l;a.__ko_hasfocusUpdating=!1},h=f.bind(null,!0);f=f.bind(null,!1);a.addEventListener("focus",h);a.addEventListener("focusin",h);a.addEventListener("blur",f);a.addEventListener("focusout",f);a.__ko_hasfocusLastValue=!1},update:(a,b)=>{b=!!c.g.i(b());a.__ko_hasfocusUpdating||a.__ko_hasfocusLastValue===b||(b?a.focus():a.blur())}};c.h.html={init:()=>({controlsDescendantBindings:!0}),update:(a,b)=>{c.g.Za(a);
b=c.g.i(b());if(null!=b){const d=K.createElement("template");d.innerHTML="string"!=typeof b?b.toString():b;a.appendChild(d.content)}}};(()=>{function a(b,d,f){c.h[b]={init:(h,l,e,g,k)=>{var n,p={};d&&(p={as:e.get("as"),exportDependencies:!0});var m=e.has(c.l.ga);c.s(()=>{var q=c.g.i(l()),r=!f!==!q,t=!n;m&&(k=c.l.ib(h,k));if(r){p.dataDependency=c.u.s();var u=d?k.createChildContext("function"==typeof q?q:l,p):c.u.pa()?k.extend(null,p):k}t&&c.u.pa()&&(n=c.g.xa(c.m.childNodes(h),!0));r?(t||c.m.ta(h,c.g.xa(n)),
c.ub(u,h)):(c.m.na(h),c.l.notify(h,c.l.G))},{o:h});return{controlsDescendantBindings:!0}}};c.S.Ra[b]=!1;c.m.ca[b]=!0}a("if");a("ifnot",!1,!0);a("with",!0)})();var U={};c.h.options={init:a=>{if(!a.matches("SELECT"))throw Error("options binding applies only to SELECT elements");let b=a.length;for(;b--;)a.remove(b);return{controlsDescendantBindings:!0}},update:(a,b,d)=>{var f=a.multiple,h=0!=a.length&&f?a.scrollTop:null,l=c.g.i(b()),e=d.get("valueAllowUnset")&&d.has("value"),g={},k=[];b=()=>Array.from(a.options).filter(r=>
r.selected);var n=(r,t,u)=>{var y=typeof t;return"function"==y?t(r):"string"==y?r[t]:u},p=(r,t)=>{q&&e?c.l.notify(a,c.l.G):k.length&&(r=k.includes(c.F.R(t[0])),t[0].selected=r,q&&!r&&c.u.M(c.g.Rb,null,[a,"change"]))};e||(f?k=b().map(c.F.R):0<=a.selectedIndex&&k.push(c.F.R(a.options[a.selectedIndex])));if(l){"undefined"==typeof l.length&&(l=[l]);var m=l.filter(r=>r||null==r);d.has("optionsCaption")&&(l=c.g.i(d.get("optionsCaption")),null!=l&&m.unshift(U))}var q=!1;g.beforeRemove=r=>a.removeChild(r);
l=p;d.has("optionsAfterRender")&&"function"==typeof d.get("optionsAfterRender")&&(l=(r,t)=>{p(r,t);c.u.M(d.get("optionsAfterRender"),null,[t[0],r!==U?r:void 0])});c.g.Ob(a,m,(r,t,u)=>{u.length&&(k=!e&&u[0].selected?[c.F.R(u[0])]:[],q=!0);t=a.ownerDocument.createElement("option");r===U?(c.g.hb(t,d.get("optionsCaption")),c.F.La(t,void 0)):(u=n(r,d.get("optionsValue"),r),c.F.La(t,c.g.i(u)),r=n(r,d.get("optionsText"),u),c.g.hb(t,r));return[t]},g,l);e||(m=k.length,(f?m&&b().length<m:m&&0<=a.selectedIndex?
c.F.R(a.options[a.selectedIndex])!==k[0]:m||0<=a.selectedIndex)&&c.u.M(c.g.Rb,null,[a,"change"]));(e||c.u.Ga())&&c.l.notify(a,c.l.G);h&&20<Math.abs(h-a.scrollTop)&&(a.scrollTop=h)}};c.h.options.eb=c.g.j.Z();c.h.style={update:(a,b)=>{c.g.P(c.g.i(b()||{}),(d,f)=>{f=c.g.i(f);if(null==f||!1===f)f="";if(/^--/.test(d))a.style.setProperty(d,f);else{d=d.replace(/-(\w)/g,(l,e)=>e.toUpperCase());var h=a.style[d];a.style[d]=f;f===h||a.style[d]!=h||isNaN(f)||(a.style[d]=f+"px")}})}};c.h.submit={init:(a,b,d,f,
h)=>{if("function"!=typeof b())throw Error("The value for a submit binding must be a function");a.addEventListener("submit",l=>{var e=b();try{var g=e.call(h.$data,a)}finally{!0!==g&&l.preventDefault()}})}};c.h.text={init:()=>({controlsDescendantBindings:!0}),update:(a,b)=>{8===a.nodeType&&(a.text||a.after(a.text=K.createTextNode("")),a=a.text);c.g.hb(a,b())}};c.m.ca.text=!0;c.h.textInput={init:(a,b,d)=>{var f=a.value,h,l,e=()=>{clearTimeout(h);l=h=void 0;var k=a.value;f!==k&&(f=k,c.S.Ma(b(),d,"textInput",
k))},g=()=>{var k=c.g.i(b());null==k&&(k="");void 0!==l&&k===l?setTimeout(g,4):a.value!==k&&(a.value=k,f=a.value)};a.addEventListener("input",e);a.addEventListener("change",e);a.addEventListener("blur",e);c.s(g,{o:a})}};c.h.textinput={preprocess:(a,b,d)=>d("textInput",a)};c.h.value={init:(a,b,d)=>{var f=a.matches("SELECT"),h=a.matches("INPUT");if(!h||"checkbox"!=a.type&&"radio"!=a.type){var l=new Set,e=d.get("valueUpdate"),g=null,k=()=>{g=null;var m=b(),q=c.F.R(a);c.S.Ma(m,d,"value",q)};e&&("string"==
typeof e?l.add(e):e.forEach(m=>l.add(m)),l.delete("change"));l.forEach(m=>{var q=k;(m||"").startsWith("after")&&(q=()=>{g=c.F.R(a);setTimeout(k,0)},m=m.slice(5));a.addEventListener(m,q)});var n=h&&"file"==a.type?()=>{var m=c.g.i(b());null==m||""===m?a.value="":c.u.M(k)}:()=>{var m=c.g.i(b()),q=c.F.R(a);if(null!==g&&m===g)setTimeout(n,0);else if(m!==q||void 0===q)f?(q=d.get("valueAllowUnset"),c.F.La(a,m,q),q||m===c.F.R(a)||c.u.M(k)):c.F.La(a,m)};if(f){var p;c.l.subscribe(a,c.l.G,()=>{p?d.get("valueAllowUnset")?
n():k():(a.addEventListener("change",k),p=c.s(n,{o:a}))},null,{notifyImmediately:!0})}else a.addEventListener("change",k),c.s(n,{o:a})}else c.sb(a,{checkedValue:b})},update:()=>{}};c.h.visible={update:(a,b)=>{b=c.g.i(b());var d="none"!=a.style.display;b&&!d?a.style.display="":d&&!b&&(a.style.display="none")}};c.h.hidden={update:(a,b)=>a.hidden=!!c.g.i(b())};(function(a){c.h[a]={init:function(b,d,f,h,l){return c.h.event.init.call(this,b,()=>({[a]:d()}),f,h,l)}}})("click");(()=>{let a=c.g.j.Z();class b{constructor(f){this.Wa=
f}Ia(...f){let h=this.Wa;if(!f.length)return c.g.j.get(h,a)||(11===this.L?h.content:1===this.L?h:void 0);c.g.j.set(h,a,f[0])}}class d extends b{constructor(f){super(f);f&&(this.L=f.matches("TEMPLATE")&&f.content?f.content.nodeType:1)}}c.Ja={Wa:d,Pa:b}})();(()=>{var a=(e,g,k)=>{var n;for(g=c.m.nextSibling(g);e&&(n=e)!==g;)e=c.m.nextSibling(n),k(n,e)},b=(e,g)=>{if(e.length){var k=e[0],n=k.parentNode;a(k,e[e.length-1],p=>{1!==p.nodeType&&8!==p.nodeType||c.tb(g,p)});c.g.Aa(e,n)}},d=(e,g,k,n)=>{var p=
(e&&(e.nodeType?e:0<e.length?e[0]:null)||k||{}).ownerDocument;if("string"==typeof k){p=p||K;p=p.getElementById(k);if(!p)throw Error("Cannot find template with ID "+k);k=new c.Ja.Wa(p)}else if([1,8].includes(k.nodeType))k=new c.Ja.Pa(k);else throw Error("Unknown template type: "+k);k=(k=k.Ia?k.Ia():null)?[...k.cloneNode(!0).childNodes]:null;if("number"!=typeof k.length||0<k.length&&"number"!=typeof k[0].nodeType)throw Error("Template engine must return an array of DOM nodes");p=!1;switch(g){case "replaceChildren":c.m.ta(e,
k);p=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+g);}p&&(b(k,n),"replaceChildren"==g&&c.l.notify(e,c.l.G));return k},f=(e,g,k)=>c.U(e)?e():"function"===typeof e?e(g,k):e;c.oc=function(e,g,k,n){k=k||{};var p=p||"replaceChildren";if(n){var m=n.nodeType?n:0<n.length?n[0]:null;return c.s(()=>{var q=g instanceof c.ea?g:new c.ea(g,null,null,null,{exportDependencies:!0}),r=f(e,q.$data,q);d(n,p,r,q,k)},{ma:()=>!m||!c.g.Ya(m),o:m})}console.log("no targetNodeOrNodeArray")};
c.pc=(e,g,k,n,p)=>{function m(w,z){c.u.M(c.g.Ob,null,[n,w,t,k,u,z]);c.l.notify(n,c.l.G)}var q,r=k.as,t=(w,z)=>{q=p.createChildContext(w,{as:r,extend:C=>{C.$index=z;r&&(C[r+"Index"]=z)}});w=f(e,w,q);return d(n,"ignoreTargetNode",w,q,k)},u=(w,z)=>{b(z,q);q=null};if(!k.beforeRemove&&c.Gb(g)){m(g.I());var y=g.subscribe(w=>{m(g(),w)},null,"arrayChange");y.o(n);return y}return c.s(()=>{var w=c.g.i(g)||[];"undefined"==typeof w.length&&(w=[w]);m(w)},{o:n})};var h=c.g.j.Z(),l=c.g.j.Z();c.h.template={init:(e,
g)=>{g=c.g.i(g());if("string"==typeof g||"name"in g)c.m.na(e);else if("nodes"in g){g=g.nodes||[];if(c.U(g))throw Error('The "nodes" option must be a plain, non-observable array.');let k=g[0]?.parentNode;k&&c.g.j.get(k,l)||(k=c.g.Jb(g),c.g.j.set(k,l,!0));(new c.Ja.Pa(e)).Ia(k)}else if(g=c.m.childNodes(e),g.length)g=c.g.Jb(g),(new c.Ja.Pa(e)).Ia(g);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:(e,g,k,n,p)=>{var m=g();
g=c.g.i(m);k=!0;n=null;"string"==typeof g?g={}:(m="name"in g?g.name:e,"if"in g&&(k=c.g.i(g["if"])),k&&"ifnot"in g&&(k=!c.g.i(g.ifnot)),k&&!m&&(k=!1));"foreach"in g?n=c.pc(m,k&&g.foreach||[],g,e,p):k?(k=p,"data"in g&&(k=p.createChildContext(g.data,{as:g.as,exportDependencies:!0})),n=c.oc(m,k,g,e)):c.m.na(e);p=n;c.g.j.get(e,h)?.A?.();c.g.j.set(e,h,!p||p.isActive&&!p.isActive()?void 0:p)}};c.S.Ra.template=e=>{e=c.S.lc(e);return 1==e.length&&e[0].unknown||c.S.jc(e,"name")?null:"This template engine does not support anonymous templates nested within its templates"};
c.m.ca.template=!0})();c.g.Eb=(a,b,d)=>{var f=0,h,l=b.length;l&&a.every(e=>{h=b.findIndex(g=>e.value===g.value);0<=h&&(e.moved=b[h].index,b[h].moved=e.index,b.splice(h,1),f=h=0,--l);f+=l;return l&&(!d||f<d)})};c.g.yb=(()=>{var a=(b,d,f,h,l)=>{for(var e=Math.min,g=Math.max,k=[],n=-1,p=b.length,m,q=d.length,r=q-p||1,t=p+q+1,u,y,w;++n<=p;)for(y=u,k.push(u=[]),w=e(q,n+r),m=g(0,n-1);m<=w;m++)u[m]=m?n?b[n-1]===d[m-1]?y[m-1]:e(y[m]||t,u[m-1]||t)+1:m+1:n+1;e=[];g=[];r=[];n=p;for(m=q;n||m;)q=k[n][m]-1,m&&
q===k[n][m-1]?g.push(e[e.length]={status:f,value:d[--m],index:m}):n&&q===k[n-1][m]?r.push(e[e.length]={status:h,value:b[--n],index:n}):(--m,--n,l.sparse||e.push({status:"retained",value:d[m]}));c.g.Eb(r,g,!l.dontLimitMoves&&10*p);return e.reverse()};return(b,d,f)=>{f="boolean"===typeof f?{dontLimitMoves:f}:f||{};b=b||[];d=d||[];return b.length<d.length?a(b,d,"added","deleted",f):a(d,b,"deleted","added",f)}})();(()=>{function a(f,h,l,e,g){var k=[],n=c.s(()=>{var p=h(l,g,c.g.Aa(k,f))||[];if(0<k.length){var m=
k.nodeType?[k]:k;if(0<m.length){var q=m[0],r=q.parentNode;p.forEach(t=>r.insertBefore(t,q));m.forEach(t=>c.removeNode(t))}e&&c.u.M(e,null,[l,p,g])}k.length=0;k.push(...p)},{o:f,ma:()=>!!k.find(c.g.Ya)});return{O:k,Ua:n.isActive()?n:void 0}}var b=c.g.j.Z(),d=c.g.j.Z();c.g.Ob=(f,h,l,e,g,k)=>{h=h||[];"undefined"==typeof h.length&&(h=[h]);e=e||{};var n=c.g.j.get(f,b),p=[],m=0,q=0,r=[],t=[],u=[],y=0,w=v=>{A={da:v,Da:c.ba(q++)};p.push(A)},z=v=>{A=n[v];A.Da(q++);c.g.Aa(A.O,f);p.push(A)};if(n){if(!k||n&&
n._countWaitingForRemove)k=c.g.yb(Array.prototype.map.call(n,D=>D.da),h,{dontLimitMoves:e.dontLimitMoves,sparse:!0});let v,G;for(k.forEach(D=>{v=D.moved;G=D.index;switch(D.status){case "deleted":for(;m<G;)z(m++);void 0===v&&(A=n[m],A.Ua&&(A.Ua.A(),A.Ua=void 0),c.g.Aa(A.O,f).length&&(e.beforeRemove&&(p.push(A),y++,A.da===d?A=null:u[A.Da.I()]=A),A&&r.push.apply(r,A.O)));m++;break;case "added":for(;q<G;)z(m++);void 0!==v?(t.push(p.length),z(v)):w(D.value)}});q<h.length;)z(m++);p._countWaitingForRemove=
y}else h.forEach(w);c.g.j.set(f,b,p);r.forEach(e.beforeRemove?c.fa:c.removeNode);var C,F,N=v=>{c.m.hc(f,v,F);F=v};k=f.ownerDocument.activeElement;if(t.length)for(;void 0!=(C=t.shift());){var A=p[C];for(F=void 0;C;)if(h=p[--C].O,h?.length){F=h[h.length-1];break}A.O.forEach(N)}p.forEach(v=>{v.O||c.g.extend(v,a(f,l,v.da,g,v.Da));v.O.forEach(N);!v.fc&&g&&(g(v.da,v.O,v.Da),v.fc=!0,F=v.O[v.O.length-1])});f.ownerDocument.activeElement!=k&&k?.focus();((v,G)=>{v&&G.forEach(D=>D?.O.forEach(oa=>v(oa,C,D.da)))})(e.beforeRemove,
u);u.forEach(v=>v&&(v.da=d))}})();V.ko=Q})(this);
(V=>{function O(a,b){return null===a||ea[typeof a]?a===b:!1}function fa(a,b){var d;return()=>{d||(d=setTimeout(()=>{d=0;a()},b))}}function ha(a,b){var d;return()=>{clearTimeout(d);d=setTimeout(a,b)}}function ia(a,b){b?.dispose?.()}function ja(a,b){var d=this.Pb,f=d[x];f.Z||(this.Ra&&this.va[b]?(d.mb(b,a,this.va[b]),this.va[b]=null,--this.Ra):f.v[b]||d.mb(b,a,f.A?{W:a}:d.Hb(a)),a.ha&&a.Lb())}function W(a){a=c.g.j.get(a,H);var b=a?.F;b&&(a.F=null,b.Bb())}function X(a,b){for(var d,f=c.m.firstChild(b);d=
f;)f=c.m.nextSibling(d),Y(a,d);c.l.notify(b,c.l.D)}function Y(a,b){var d=a;if(1===b.nodeType||c.qb.ac(b))d=Z(b,null,a).bindingContextForDescendants;d&&!b.matches?.("SCRIPT,TEXTAREA,TEMPLATE")&&X(d,b)}function ka(a){var b=[],d={},f=[];c.g.M(a,function e(l){if(!d[l]){var g=c.h[l];g&&(g.after&&(f.push(l),g.after.forEach(k=>{if(a[k]){if(f.includes(k))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+f.join(", "));e(k)}}),f.length--),b.push({key:l,xb:g}));d[l]=
!0}});return b}function Z(a,b,d){var f=c.g.j.Wa(a,H,{}),h=f.Mb;if(!b){if(h)throw Error("You cannot apply bindings multiple times to the same element.");f.Mb=!0}h||(f.context=d);f.Ya||(f.Ya={});if(b&&"function"!==typeof b)var l=b;else{var e=c.o(()=>{if(l=b?b(d,a):c.qb.Sb(a,d))d[I]?.(),d[aa]?.();return l},{s:a});l&&e.isActive()||(e=null)}var g=d,k;if(l){var n=e?m=>()=>e()[m]():m=>l[m],p={get:m=>l[m]&&n(m)(),has:m=>m in l};c.l.D in l&&c.l.subscribe(a,c.l.D,()=>{var m=l[c.l.D]();if(m){var q=c.m.childNodes(a);
q.length&&m(q,c.dataFor(q[0]))}});c.l.fa in l&&(g=c.l.cb(a,d),c.l.subscribe(a,c.l.fa,()=>{var m=l[c.l.fa]();m&&c.m.firstChild(a)&&m(a)}));ka(l).forEach(m=>{var q=m.xb.init,r=m.xb.update,t=m.key;if(8===a.nodeType&&!c.m.ba[t])throw Error("The binding '"+t+"' cannot be used with virtual elements");try{"function"==typeof q&&c.u.J(()=>{var u=q(a,n(t),p,g.$data,g);if(u&&u.controlsDescendantBindings){if(void 0!==k)throw Error("Multiple bindings ("+k+" and "+t+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");
k=t}}),"function"==typeof r&&c.o(()=>r(a,n(t),p,g.$data,g),{s:a})}catch(u){throw u.message='Unable to process binding "'+t+": "+l[t]+'"\nMessage: '+u.message,u;}})}f=void 0===k;return{shouldBindDescendants:f,bindingContextForDescendants:f&&g}}function P(a,b){return a&&a instanceof c.da?a:new c.da(a,void 0,void 0,b)}var J=V.document,Q={},c="undefined"!==typeof Q?Q:{};c.S=(a,b)=>{a=a.split(".");for(var d=c,f=0,h=a.length-1;f<h;f++)d=d[a[f]];d[a[h]]=b};c.version="3.5.1-sm";c.g={extend:(a,b)=>b?Object.assign(a,
b):a,M:(a,b)=>a&&Object.entries(a).forEach(d=>b(d[0],d[1])),Va:a=>[...a.childNodes].forEach(b=>c.removeNode(b)),Ab:a=>{a=[...a];var b=(a[0]?.ownerDocument||J).createElement("div");a.forEach(d=>b.append(c.ea(d)));return b},ua:(a,b)=>Array.prototype.map.call(a,b?d=>c.ea(d.cloneNode(!0)):d=>d.cloneNode(!0)),qa:(a,b)=>{c.g.Va(a);b&&a.append(...b)},xa:(a,b)=>{if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);for(;1<a.length&&a[a.length-1].parentNode!==b;)--a.length;
if(1<a.length){b=a[0];var d=a[a.length-1];for(a.length=0;b!==d;)a.push(b),b=b.nextSibling;a.push(d)}}return a},Gb:a=>null==a?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,""),Ua:a=>a.ownerDocument.documentElement.contains(1!==a.nodeType?a.parentNode:a),Ib:(a,b)=>{if(!a?.nodeType)throw Error("element must be a DOM node when calling triggerEvent");a.dispatchEvent(new Event(b))},i:a=>c.T(a)?a():a,bb:(a,b)=>a.textContent=c.g.i(b)||""};c.S("utils",c.g);c.S("unwrap",c.g.i);(()=>{let a=
0,b="__ko__"+Date.now(),d=new WeakMap;c.g.j={get:(f,h)=>(d.get(f)||{})[h],set:(f,h,l)=>{d.has(f)?d.get(f)[h]=l:d.set(f,{[h]:l});return l},Wa(f,h,l){return this.get(f,h)||this.set(f,h,l)},clear:f=>d.delete(f),Y:()=>a++ +b}})();c.g.O=(()=>{var a=c.g.j.Y(),b={1:1,8:1,9:1},d={1:1,9:1};const f=(e,g)=>{var k=c.g.j.get(e,a);g&&!k&&(k=new Set,c.g.j.set(e,a,k));return k},h=e=>{var g=f(e);g&&(new Set(g)).forEach(k=>k(e));c.g.j.clear(e);d[e.nodeType]&&l(e.childNodes,!0)},l=(e,g)=>{for(var k=[],n,p=0;p<e.length;p++)if(!g||
8===e[p].nodeType)if(h(k[k.length]=n=e[p]),e[p]!==n)for(;p--&&!k.includes(e[p]););};return{addDisposeCallback:(e,g)=>{if("function"!=typeof g)throw Error("Callback must be a function");f(e,1).add(g)},ab:(e,g)=>{var k=f(e);k&&(k.delete(g),k.size||c.g.j.set(e,a,null))},ea:e=>{c.u.J(()=>{b[e.nodeType]&&(h(e),d[e.nodeType]&&l(e.getElementsByTagName("*")))});return e},removeNode:e=>{c.ea(e);e.parentNode&&e.parentNode.removeChild(e)}}})();c.ea=c.g.O.ea;c.removeNode=c.g.O.removeNode;c.S("utils.domNodeDisposal",
c.g.O);c.extenders={debounce:(a,b)=>a.Ea(d=>ha(d,b)),rateLimit:(a,b)=>a.Ea(d=>fa(d,b)),notify:(a,b)=>{a.ma="always"==b?null:O}};var ea={undefined:1,"boolean":1,number:1,string:1};class la{constructor(a,b,d){this.W=a;this.gb=b;this.za=d;this.Ka=!1;this.I=this.ga=null}dispose(){this.Ka||(this.I&&c.g.O.ab(this.ga,this.I),this.Ka=!0,this.za(),this.W=this.gb=this.za=this.ga=this.I=null)}s(a){this.ga=a;c.g.O.addDisposeCallback(a,this.I=this.dispose.bind(this))}}c.U=function(){Object.setPrototypeOf(this,
R);R.init(this)};var R={init:a=>{a.V=new Map;a.V.set("change",new Set);a.lb=1},subscribe:function(a,b,d){var f=this;d=d||"change";var h=new la(f,b?a.bind(b):a,()=>{f.V.get(d).delete(h);f.La?.(d)});f.Na?.(d);f.V.has(d)||f.V.set(d,new Set);f.V.get(d).add(h);return h},B(a,b){b=b||"change";"change"===b&&this.Ha();if(this.oa(b)){b="change"===b&&this.Jb||new Set(this.V.get(b));try{c.u.pb(),b.forEach(d=>{d.Ka||d.gb(a)})}finally{c.u.end()}}},ya(){return this.lb},Vb(a){return this.ya()!==a},Ha(){++this.lb},
Ea(a){var b=this,d=c.T(b),f,h,l,e,g;b.sa||(b.sa=b.B,b.B=(n,p)=>{p&&"change"!==p?"beforeChange"===p?b.ib(n):b.sa(n,p):b.jb(n)});var k=a(()=>{b.ha=!1;d&&e===b&&(e=b.hb?b.hb():b());var n=h||g&&b.Ca(l,e);g=h=f=!1;n&&b.sa(l=e)});b.jb=(n,p)=>{p&&b.ha||(g=!p);b.Jb=new Set(b.V.get("change"));b.ha=f=!0;e=n;k()};b.ib=n=>{f||(l=n,b.sa(n,"beforeChange"))};b.kb=()=>{g=!0};b.Lb=()=>{b.Ca(l,b.G(!0))&&(h=!0)}},oa(a){return(this.V.get(a)||[]).size},Ca(a,b){return!this.ma||!this.ma(a,b)},toString:()=>"[object Object]",
extend:function(a){var b=this;a&&c.g.M(a,(d,f)=>{d=c.extenders[d];"function"==typeof d&&(b=d(b,f)||b)});return b}};c.U.fn=Object.setPrototypeOf(R,Function.prototype);c.Zb=a=>"function"==typeof a?.subscribe&&"function"==typeof a.B;(()=>{let a=[],b,d=0;c.u={pb:f=>{a.push(b);b=f},end:()=>b=a.pop(),Eb:f=>{if(b){if(!c.Zb(f))throw Error("Only subscribable things can act as dependencies");b.Nb.call(b.Ob,f,f.Kb||(f.Kb=++d))}},J(f,h,l){try{return a.push(b),b=void 0,f.apply(h,l||[])}finally{b=a.pop()}},na:()=>
b?.o.na(),Da:()=>b?.Da,o:()=>b?.o}})();const B=Symbol("_latestValue");c.aa=a=>{function b(){if(0<arguments.length)return b.Ca(b[B],arguments[0])&&(b.fb(),b[B]=arguments[0],b.valueHasMutated()),this;c.u.Eb(b);return b[B]}b[B]=a;Object.defineProperty(b,"length",{get:()=>null==b[B]?void 0:b[B].length});c.U.fn.init(b);return Object.setPrototypeOf(b,K)};var K={toJSON:function(){let a=this[B];return a?.toJSON?.()||a},ma:O,G(){return this[B]},valueHasMutated:function(){this.B(this[B],"spectate");this.B(this[B])},
fb(){this.B(this[B],"beforeChange")}};Object.setPrototypeOf(K,c.U.fn);var E=c.aa.dc="__ko_proto__";K[E]=c.aa;c.T=a=>{if((a="function"==typeof a&&a[E])&&a!==K[E]&&a!==c.o.fn[E])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!a};c.yb=a=>"function"==typeof a&&(a[E]===K[E]||a[E]===c.o.fn[E]&&a.Wb);c.S("observable",c.aa);c.S("isObservable",c.T);c.S("observable.fn",K);c.observableArray=a=>{a=a||[];if("object"!=typeof a||!("length"in a))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
return Object.setPrototypeOf(c.aa(a),c.observableArray.fn).extend({trackArrayChanges:!0})};const ba=Symbol("IS_OBSERVABLE_ARRAY");c.observableArray.fn=Object.setPrototypeOf({[ba]:1,remove:function(a){for(var b=this.G(),d=!1,f="function"!=typeof a||c.T(a)?e=>e===a:a,h=b.length;h--;){var l=b[h];if(f(l)){if(b[h]!==l)throw Error("Array modified during remove; cannot remove item");d||this.fb();d=!0;b.splice(h,1)}}d&&this.valueHasMutated()}},c.aa.fn);Object.getOwnPropertyNames(Array.prototype).forEach(a=>
{"function"===typeof Array.prototype[a]&&"constructor"!=a&&("copyWithin fill pop push reverse shift sort splice unshift".split(" ").includes(a)?c.observableArray.fn[a]=function(...b){var d=this.G();this.fb();this.rb(d,a,b);b=d[a](...b);this.valueHasMutated();return b===d?this:b}:c.observableArray.fn[a]=function(...b){return this()[a](...b)})});c.isObservableArray=a=>!(!a||!a[ba]);c.extenders.trackArrayChanges=(a,b)=>{function d(){function m(){if(g){var q=[].concat(a.G()||[]);if(a.oa("arrayChange")){if(!h||
1<g)h=c.g.sb(k,q,a.Pa);var r=h}k=q;h=null;g=0;r?.length&&a.B(r,"arrayChange")}}f?m():(f=!0,e=a.subscribe(()=>++g,null,"spectate"),k=[].concat(a.G()||[]),h=null,l=a.subscribe(m))}a.Pa={};"object"==typeof b&&c.g.extend(a.Pa,b);a.Pa.sparse=!0;if(!a.rb){var f=!1,h=null,l,e,g=0,k,n=a.Na,p=a.La;a.Na=m=>{n?.call(a,m);"arrayChange"===m&&d()};a.La=m=>{p?.call(a,m);"arrayChange"!==m||a.oa("arrayChange")||(l?.dispose(),e?.dispose(),e=l=null,f=!1,k=void 0)};a.rb=(m,q,r)=>{function t(A,v,G){return u[u.length]=
{status:A,value:v,index:G}}if(f&&!g){var u=[],y=m.length,w=r.length,z=0;switch(q){case "push":z=y;case "unshift":for(m=0;m<w;m++)t("added",r[m],z+m);break;case "pop":z=y-1;case "shift":y&&t("deleted",m[z],z);break;case "splice":z=Math.min(Math.max(0,0>r[0]?y+r[0]:r[0]),y);y=1===w?y:Math.min(z+(r[1]||0),y);w=z+w-2;q=Math.max(y,w);for(var C=[],F=[],M=2;z<q;++z,++M)z<y&&F.push(t("deleted",m[z],z)),z<w&&C.push(t("added",r[M],z));c.g.wb(F,C);break;default:return}h=u}}}};var x=Symbol("_state");c.o=(a,b)=>
{function d(){if(0<arguments.length){if("function"!==typeof f)throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");f(...arguments);return this}h.Z||c.u.Eb(d);(h.X||h.A&&d.pa())&&d.R();return h.K}"object"===typeof a?b=a:(b=b||{},a&&(b.read=a));if("function"!=typeof b.read)throw Error("Pass a function that returns the value of the ko.computed");var f=b.write,h={K:void 0,$:!0,X:!0,Ba:!1,eb:!1,Z:!1,
$a:!1,A:!1,Db:b.read,s:b.disposeWhenNodeIsRemoved||b.s||null,ka:b.disposeWhen||b.ka,Ta:null,v:{},H:0,vb:null};d[x]=h;d.Wb="function"===typeof f;c.U.fn.init(d);Object.setPrototypeOf(d,N);b.pure&&(h.$a=!0,h.A=!0,c.g.extend(d,ma));h.s&&(h.eb=!0,h.s.nodeType||(h.s=null));h.A||d.R();h.s&&d.isActive()&&c.g.O.addDisposeCallback(h.s,h.Ta=()=>{d.dispose()});return d};var N={ma:O,na(){return this[x].H},Tb(){var a=[];c.g.M(this[x].v,(b,d)=>a[d.ia]=d.W);return a},Xa(a){if(!this[x].H)return!1;var b=this.Tb();
return b.includes(a)||!!b.find(d=>d.Xa&&d.Xa(a))},mb(a,b,d){if(this[x].$a&&b===this)throw Error("A 'pure' computed must not be called recursively");this[x].v[a]=d;d.ia=this[x].H++;d.ja=b.ya()},pa(){var a,b=this[x].v;for(a in b)if(Object.prototype.hasOwnProperty.call(b,a)){var d=b[a];if(this.ra&&d.W.ha||d.W.Vb(d.ja))return!0}},jc(){this[x].Ba||this.ra?.(!1)},isActive(){var a=this[x];return a.X||0<a.H},kc(){this.ha?this[x].X&&(this[x].$=!0):this.ub()},Hb(a){return a.subscribe(this.ub,this)},ub(){var a=
this,b=a.throttleEvaluation;0<=b?(clearTimeout(this[x].vb),this[x].vb=setTimeout(()=>a.R(!0),b)):a.ra?a.ra(!0):a.R(!0)},R(a){var b=this[x],d=b.ka,f=!1;if(!b.Ba&&!b.Z){if(b.s&&!c.g.Ua(b.s)||d?.()){if(!b.eb){this.dispose();return}}else b.eb=!1;try{b.Ba=!0,f=this.Rb(a)}finally{b.Ba=!1}return f}},Rb(a){var b=this[x],d=b.$a?void 0:!b.H;var f={Pb:this,va:b.v,Ra:b.H};c.u.pb({Ob:f,Nb:ja,o:this,Da:d});b.v={};b.H=0;a:{try{var h=b.Db();break a}finally{c.u.end(),f.Ra&&!b.A&&c.g.M(f.va,ia),b.$=b.X=!1}h=void 0}b.H?
f=this.Ca(b.K,h):(this.dispose(),f=!0);f&&(b.A?this.Ha():this.B(b.K,"beforeChange"),b.K=h,this.B(b.K,"spectate"),!b.A&&a&&this.B(b.K),this.kb&&this.kb());d&&this.B(b.K,"awake");return f},G(a){var b=this[x];(b.X&&(a||!b.H)||b.A&&this.pa())&&this.R();return b.K},Ea(a){var b=this;c.U.fn.Ea.call(b,a);b.hb=()=>{b[x].A||(b[x].$?b.R():b[x].X=!1);return b[x].K};b.ra=d=>{b.ib(b[x].K);b[x].X=!0;d&&(b[x].$=!0);b.jb(b,!d)}},dispose:function(){var a=this[x];!a.A&&a.v&&c.g.M(a.v,(b,d)=>d.dispose?.());a.s&&a.Ta&&
c.g.O.ab(a.s,a.Ta);a.v=void 0;a.H=0;a.Z=!0;a.$=!1;a.X=!1;a.A=!1;a.s=void 0;a.ka=void 0;a.Db=void 0}},ma={Na(a){var b=this,d=b[x];if(!d.Z&&d.A&&"change"==a){d.A=!1;if(d.$||b.pa())d.v=null,d.H=0,b.R()&&b.Ha();else{var f=[];c.g.M(d.v,(h,l)=>f[l.ia]=h);f.forEach((h,l)=>{var e=d.v[h],g=b.Hb(e.W);g.ia=l;g.ja=e.ja;d.v[h]=g});b.pa()&&b.R()&&b.Ha()}d.Z||b.B(d.K,"awake")}},La(a){var b=this[x];b.Z||"change"!=a||this.oa("change")||(c.g.M(b.v,(d,f)=>{f.dispose&&(b.v[d]={W:f.W,ia:f.ia,ja:f.ja},f.dispose())}),b.A=
!0,this.B(void 0,"asleep"))},ya(){var a=this[x];a.A&&(a.$||this.pa())&&this.R();return c.U.fn.ya.call(this)}};Object.setPrototypeOf(N,c.U.fn);var S=c.aa.dc;N[S]=c.o;c.o.fn=N;c.S("computed",c.o);c.isComputed=a=>"function"==typeof a&&a[S]===N[S];c.Cb=a=>{if("function"===typeof a)return c.o(a,{pure:!0});a={...a,pure:!0};return c.o(a)};c.C={N:a=>{switch(a.nodeName){case "OPTION":return!0===a.__ko__hasDomDataOptionValue__?c.g.j.get(a,c.h.options.Za):a.value;case "SELECT":return 0<=a.selectedIndex?c.C.N(a.options[a.selectedIndex]):
void 0;default:return a.value}},Ia:(a,b,d)=>{switch(a.nodeName){case "OPTION":"string"===typeof b?(c.g.j.set(a,c.h.options.Za,void 0),delete a.__ko__hasDomDataOptionValue__,a.value=b):(c.g.j.set(a,c.h.options.Za,b),a.__ko__hasDomDataOptionValue__=!0,a.value="number"===typeof b?b:"");break;case "SELECT":for(var f=-1,h=""===b||null==b,l=a.options.length,e;l--;)if(e=c.C.N(a.options[l]),e==b||""===e&&h){f=l;break}if(d||0<=f||h&&1<a.size)a.selectedIndex=f;break;default:a.value=null==b?"":b}}};c.P=(()=>
{var a=RegExp("\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]","g"),b=/[\])"'A-Za-z0-9_$]+$/,d={"in":1,"return":1,"typeof":1},f=h=>{h=c.g.Gb(h);123===h.charCodeAt(0)&&(h=h.slice(1,-1));h+="\n,";var l=[],e=h.match(a),g=[],k=0;if(1<e.length){for(var n=0,p;p=e[n++];){var m=p.charCodeAt(0);if(44===m){if(0>=k){l.push(q&&g.length?{key:q,value:g.join("")}:{unknown:q||g.join("")});var q=
k=0;g=[];continue}}else if(58===m){if(!k&&!q&&1===g.length){q=g.pop();continue}}else if(47===m&&1<p.length&&(47===p.charCodeAt(1)||42===p.charCodeAt(1)))continue;else 47===m&&n&&1<p.length?(m=e[n-1].match(b))&&!d[m[0]]&&(h=h.slice(h.indexOf(p)+1),e=h.match(a),n=-1,p="/"):40===m||123===m||91===m?++k:41===m||125===m||93===m?--k:q||g.length||34!==m&&39!==m||(p=p.slice(1,-1));g.push(p)}if(0<k)throw Error("Unbalanced parentheses, braces, or brackets");}return l};return{Oa:[],bc:f,cc:h=>{var l=[],e=(g,
k)=>{var n=c.h[g];n?.preprocess&&!n.preprocess(k,g,e)||l.push("'"+g+"':function(){return "+(k+" }"))};f(h).forEach(g=>e(g.key||g.unknown,g.value));return l.join(",")},$b:(h,l)=>-1<h.findIndex(e=>e.key==l),Ja:(h,l,e,g,k)=>{if(h&&c.T(h))!c.yb(h)||k&&h.G()===g||h(g);else throw Error(`${e} , must be observable`);}}})();(()=>{function a(e){return 8==e.nodeType&&f.test(e.nodeValue)}function b(e){return 8==e.nodeType&&h.test(e.nodeValue)}function d(e,g){for(var k=e,n=1,p=[];k=k.nextSibling;){if(b(k)&&(c.g.j.set(k,
l,!0),!--n))return p;p.push(k);a(k)&&++n}if(!g)throw Error("Cannot find closing comment tag to match: "+e.nodeValue);return null}var f=/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=/^\s*\/ko\s*$/,l="__ko_matchedEndComment__";c.m={ba:{},childNodes:e=>a(e)?d(e):e.childNodes,la:e=>{a(e)?(e=d(e))&&[...e].forEach(g=>c.removeNode(g)):c.g.Va(e)},qa:(e,g)=>{a(e)?(c.m.la(e),e.after(...g)):c.g.qa(e,g)},prepend:(e,g)=>{a(e)?e.nextSibling.before(g):e.prepend(g)},Yb:(e,g,k)=>{k?k.after(g):c.m.prepend(e,g)},firstChild:e=>{if(a(e))return e=
e.nextSibling,!e||b(e)?null:e;let g=e.firstChild;if(g&&b(g))throw Error("Found invalid end comment, as the first child of "+e);return g},nextSibling:e=>{if(a(e)){var g=d(e,void 0);e=g?(g.length?g[g.length-1]:e).nextSibling:null}if((g=e.nextSibling)&&b(g)){if(b(g)&&!c.g.j.get(g,l))throw Error("Found end comment without a matching opening comment, as child of "+e);return null}return g},Ub:a,ic:e=>(e=e.nodeValue.match(f))?e[1]:null}})();const ca=new Map;c.qb=new class{ac(a){switch(a.nodeType){case 1:return null!=
a.getAttribute("data-bind");case 8:return c.m.Ub(a)}return!1}Sb(a,b){a:{switch(a.nodeType){case 1:var d=a.getAttribute("data-bind");break a;case 8:d=c.m.ic(a);break a}d=null}if(d)try{let h=ca.get(d);if(!h){var f="with($context){with($data||{}){return{"+c.P.cc(d)+"}}}";h=new Function("$context","$element",f);ca.set(d,h)}return h(b,a)}catch(h){throw h.message="Unable to parse bindings.\nBindings value: "+d+"\nMessage: "+h.message,h;}return null}};const I=Symbol("_subscribable"),L=Symbol("_ancestorBindingInfo"),
aa=Symbol("_dataDependency"),da={},H=c.g.j.Y();c.h={};c.da=class{constructor(a,b,d,f,h){var l=this,e=a===da,g=e?void 0:a,k="function"==typeof g&&!c.T(g),n=h?.dataDependency;a=()=>{var m=k?g():g,q=c.g.i(m);b?(c.g.extend(l,b),L in b&&(l[L]=b[L])):(l.$parents=[],l.$root=q,l.ko=c);l[I]=p;e?q=l.$data:(l.$rawData=m,l.$data=q);d&&(l[d]=q);f?.(l,b,q);if(b?.[I]&&!c.u.o().Xa(b[I]))b[I]();n&&(l[aa]=n);return l.$data};if(h?.exportDependencies)a();else{var p=c.Cb(a);p.G();p.isActive()?p.ma=null:l[I]=void 0}}createChildContext(a,
b,d,f){!f&&b&&"object"==typeof b&&(f=b,b=f.as,d=f.extend);return new c.da(a,this,b,(h,l)=>{h.$parentContext=l;h.$parent=l.$data;h.$parents=(l.$parents||[]).slice(0);h.$parents.unshift(h.$parent);d&&d(h)},f)}extend(a,b){return new c.da(da,this,null,d=>c.g.extend(d,"function"==typeof a?a(d):a),b)}};class na{constructor(a,b,d){this.I=a;this.ga=b;this.ta=new Set;this.D=!1;b.F||c.g.O.addDisposeCallback(a,W);d?.F&&(d.F.ta.add(a),this.za=d)}Bb(){this.za?.F?.Qb(this.I)}Qb(a){this.ta.delete(a);this.ta.size||
this.tb?.()}tb(){this.D=!0;this.ga.F&&!this.ta.size&&(this.ga.F=null,c.g.O.ab(this.I,W),c.l.notify(this.I,c.l.fa),this.Bb())}}c.l={D:"childrenComplete",fa:"descendantsComplete",subscribe:(a,b,d,f,h)=>{var l=c.g.j.Wa(a,H,{});l.wa||(l.wa=new c.U);h?.notifyImmediately&&l.Ya[b]&&c.u.J(d,f,[a]);return l.wa.subscribe(d,f,b)},notify:(a,b)=>{var d=c.g.j.get(a,H);if(d&&(d.Ya[b]=!0,d.wa?.B(a,b),b==c.l.D))if(d.F)d.F.tb();else if(void 0===d.F&&d.wa?.oa(c.l.fa))throw Error("descendantsComplete event not supported for bindings on this node");
},cb:(a,b)=>{var d=c.g.j.Wa(a,H,{});d.F||(d.F=new na(a,d,b[L]));return b[L]==d?b:b.extend(f=>{f[L]=d})}};c.hc=a=>(a=c.g.j.get(a,H))&&a.context;c.applyBindingAccessorsToNode=(a,b,d)=>Z(a,b,P(d));c.ob=(a,b)=>{1!==b.nodeType&&8!==b.nodeType||X(P(a),b)};c.nb=function(a,b,d){if(2>arguments.length){if(b=J.body,!b)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");}else if(!b||1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
Y(P(a,d),b)};c.dataFor=a=>(a=a&&[1,8].includes(a.nodeType)&&c.hc(a))?a.$data:void 0;c.S("bindingHandlers",c.h);c.S("applyBindings",c.nb);(()=>{var a=Object.create(null),b=new Map;c.components={get:(l,e)=>{if(b.has(l))e(b.get(l));else{var g=a[l];g?g.subscribe(e):(g=a[l]=new c.U,g.subscribe(e),h(l,k=>{b.set(l,k);delete a[l];g.B(k)}))}},register:(l,e)=>{if(!e)throw Error("Invalid configuration for "+l);if(d[l])throw Error("Component "+l+" is already registered");d[l]=e}};var d=Object.create(null),f=
(l,e)=>{throw Error(`Component '${l}': ${e}`);},h=(l,e)=>{var g={},k=d[l]||{},n=k.template;k=k.viewModel;if(n){n.element||f(l,"Unknown template value: "+n);n=n.element;var p=J.getElementById(n);p||f(l,"Cannot find element with ID "+n);p.matches("TEMPLATE")||f(l,"Template Source Element not a <template>");g.template=c.g.ua(p.content.childNodes)}k&&("function"!==typeof k.createViewModel&&f(l,"Unknown viewModel value: "+k),g.createViewModel=k.createViewModel);e(g.template&&g.createViewModel?g:null)}})();
(()=>{var a=0;c.h.component={init:(b,d,f,h,l)=>{var e,g,k,n=()=>{var m=e&&e.dispose;"function"===typeof m&&m.call(e);k&&k.dispose();g=e=k=null},p=[...c.m.childNodes(b)];c.m.la(b);c.g.O.addDisposeCallback(b,n);c.o(()=>{var m=c.g.i(d());if("string"!==typeof m){var q=c.g.i(m.params);m=c.g.i(m.name)}if(!m)throw Error("No component name specified");var r=c.l.cb(b,l),t=g=++a;c.components.get(m,u=>{if(g===t){n();if(!u)throw Error("Unknown component '"+m+"'");var y=u.template;if(!y)throw Error("Component '"+
m+"' has no template");c.m.qa(b,c.g.ua(y));e=u.createViewModel(q,{element:b,templateNodes:p});c.ob(r.createChildContext(e,{extend:w=>{w.$component=e;w.$componentTemplateNodes=p}}),b)}})},{s:b});return{controlsDescendantBindings:!0}}};c.m.ba.component=!0})();c.h.attr={update:(a,b)=>{b=c.g.i(b())||{};c.g.M(b,function(d,f){f=c.g.i(f);var h=d.indexOf(":");h="lookupNamespaceURI"in a&&0<h&&a.lookupNamespaceURI(d.slice(0,h));var l=!1===f||null==f;l?h?a.removeAttributeNS(h,d):a.removeAttribute(d):(f=f.toString(),
h?a.setAttributeNS(h,d,f):a.setAttribute(d,f));"name"===d&&(a.name=l?"":f)})}};(()=>{c.h.checked={after:["value","attr"],init:function(a,b,d){var f="checkbox"==a.type,h="radio"==a.type;if(f||h){const m=c.Cb(()=>{if(d.has("checkedValue"))return c.g.i(d.get("checkedValue"));if(n)return d.has("value")?c.g.i(d.get("value")):a.value});var l=()=>{if(!c.u.Da()){var q=a.checked,r=m();if(q||!h&&!c.u.na()){var t=c.u.J(b);if(g){var u=k?t.G():t,y=p;p=r;y!==r?q&&(u.push(r),u.remove(y)):q?u.push(r):u.remove(r);
k&&c.yb(t)&&t(u)}else f&&(void 0===r?r=q:q||(r=void 0)),c.P.Ja(t,d,"checked",r,!0)}}},e=b(),g=f&&c.g.i(e)instanceof Array,k=!(g&&e.push&&e.splice),n=h||g,p=g?m():void 0;h&&!a.name&&c.h.uniqueName.init(a,function(){return!0});c.o(l,null,{s:a});a.addEventListener("click",l);c.o(()=>{var q=c.g.i(b()),r=m();g?(a.checked=q.includes(r),p=r):a.checked=f&&void 0===r?!!q:m()===q},null,{s:a});e=void 0}}};c.h.checkedValue={update:function(a,b){a.value=c.g.i(b())}}})();var T=(a,b,d)=>b&&b.split(/\s+/).forEach(f=>
a.classList.toggle(f,d));c.h.css={update:(a,b)=>{b=c.g.i(b());"object"==typeof b?c.g.M(b,(d,f)=>{f=c.g.i(f);T(a,d,!!f)}):(b=c.g.Gb(b),T(a,a.__ko__cssValue,!1),a.__ko__cssValue=b,T(a,b,!0))}};c.h.enable={update:(a,b)=>{(b=c.g.i(b()))&&a.disabled?a.removeAttribute("disabled"):b||a.disabled||(a.disabled=!0)}};c.h.disable={update:(a,b)=>c.h.enable.update(a,()=>!c.g.i(b()))};c.h.event={init:function(a,b,d,f,h){c.g.M(b()||{},l=>{"string"==typeof l&&a.addEventListener(l,(...e)=>{var g=b()[l];if(g)try{f=
h.$data;var k=g.apply(f,[f,...e])}finally{!0!==k&&e[0].preventDefault()}})})}};c.h.foreach={zb:a=>()=>{var b=a(),d=c.T(b)?b.G():b;if(!d||"number"==typeof d.length)return{foreach:b};c.g.i(b);return{foreach:d.data,as:d.as,beforeRemove:d.beforeRemove}},init:(a,b)=>c.h.template.init(a,c.h.foreach.zb(b)),update:(a,b,d,f,h)=>c.h.template.update(a,c.h.foreach.zb(b),d,f,h)};c.P.Oa.foreach=!1;c.m.ba.foreach=!0;c.h.hasfocus={init:(a,b,d)=>{var f=l=>{a.__ko_hasfocusUpdating=!0;l=a.ownerDocument.activeElement===
a;c.P.Ja(b(),d,"hasfocus",l,!0);a.__ko_hasfocusLastValue=l;a.__ko_hasfocusUpdating=!1},h=f.bind(null,!0);f=f.bind(null,!1);a.addEventListener("focus",h);a.addEventListener("focusin",h);a.addEventListener("blur",f);a.addEventListener("focusout",f);a.__ko_hasfocusLastValue=!1},update:(a,b)=>{b=!!c.g.i(b());a.__ko_hasfocusUpdating||a.__ko_hasfocusLastValue===b||(b?a.focus():a.blur())}};c.h.html={init:()=>({controlsDescendantBindings:!0}),update:(a,b)=>{c.g.Va(a);b=c.g.i(b());if(null!=b){const d=J.createElement("template");
d.innerHTML="string"!=typeof b?b.toString():b;a.appendChild(d.content)}}};(()=>{function a(b,d,f){c.h[b]={init:(h,l,e,g,k)=>{var n,p={};d&&(p={as:e.get("as"),exportDependencies:!0});var m=e.has(c.l.fa);c.o(()=>{var q=c.g.i(l()),r=!f!==!q,t=!n;m&&(k=c.l.cb(h,k));if(r){p.dataDependency=c.u.o();var u=d?k.createChildContext("function"==typeof q?q:l,p):c.u.na()?k.extend(null,p):k}t&&c.u.na()&&(n=c.g.ua(c.m.childNodes(h),!0));r?(t||c.m.qa(h,c.g.ua(n)),c.ob(u,h)):(c.m.la(h),c.l.notify(h,c.l.D))},{s:h});
return{controlsDescendantBindings:!0}}};c.P.Oa[b]=!1;c.m.ba[b]=!0}a("if");a("ifnot",!1,!0);a("with",!0)})();var U={};c.h.options={init:a=>{if(!a.matches("SELECT"))throw Error("options binding applies only to SELECT elements");let b=a.length;for(;b--;)a.remove(b);return{controlsDescendantBindings:!0}},update:(a,b,d)=>{var f=a.multiple,h=0!=a.length&&f?a.scrollTop:null,l=c.g.i(b()),e=d.get("valueAllowUnset")&&d.has("value"),g={},k=[];b=()=>Array.from(a.options).filter(r=>r.selected);var n=(r,t,u)=>
{var y=typeof t;return"function"==y?t(r):"string"==y?r[t]:u},p=(r,t)=>{q&&e?c.l.notify(a,c.l.D):k.length&&(r=k.includes(c.C.N(t[0])),t[0].selected=r,q&&!r&&c.u.J(c.g.Ib,null,[a,"change"]))};e||(f?k=b().map(c.C.N):0<=a.selectedIndex&&k.push(c.C.N(a.options[a.selectedIndex])));if(l){"undefined"==typeof l.length&&(l=[l]);var m=l.filter(r=>r||null==r);d.has("optionsCaption")&&(l=c.g.i(d.get("optionsCaption")),null!=l&&m.unshift(U))}var q=!1;g.beforeRemove=r=>a.removeChild(r);l=p;d.has("optionsAfterRender")&&
"function"==typeof d.get("optionsAfterRender")&&(l=(r,t)=>{p(r,t);c.u.J(d.get("optionsAfterRender"),null,[t[0],r!==U?r:void 0])});c.g.Fb(a,m,(r,t,u)=>{u.length&&(k=!e&&u[0].selected?[c.C.N(u[0])]:[],q=!0);t=a.ownerDocument.createElement("option");r===U?(c.g.bb(t,d.get("optionsCaption")),c.C.Ia(t,void 0)):(u=n(r,d.get("optionsValue"),r),c.C.Ia(t,c.g.i(u)),r=n(r,d.get("optionsText"),u),c.g.bb(t,r));return[t]},g,l);e||(m=k.length,(f?m&&b().length<m:m&&0<=a.selectedIndex?c.C.N(a.options[a.selectedIndex])!==
k[0]:m||0<=a.selectedIndex)&&c.u.J(c.g.Ib,null,[a,"change"]));(e||c.u.Da())&&c.l.notify(a,c.l.D);h&&20<Math.abs(h-a.scrollTop)&&(a.scrollTop=h)}};c.h.options.Za=c.g.j.Y();c.h.style={update:(a,b)=>{c.g.M(c.g.i(b()||{}),(d,f)=>{f=c.g.i(f);if(null==f||!1===f)f="";if(/^--/.test(d))a.style.setProperty(d,f);else{d=d.replace(/-(\w)/g,(l,e)=>e.toUpperCase());var h=a.style[d];a.style[d]=f;f===h||a.style[d]!=h||isNaN(f)||(a.style[d]=f+"px")}})}};c.h.submit={init:(a,b,d,f,h)=>{if("function"!=typeof b())throw Error("The value for a submit binding must be a function");
a.addEventListener("submit",l=>{var e=b();try{var g=e.call(h.$data,a)}finally{!0!==g&&l.preventDefault()}})}};c.h.text={init:()=>({controlsDescendantBindings:!0}),update:(a,b)=>{8===a.nodeType&&(a.text||a.after(a.text=J.createTextNode("")),a=a.text);c.g.bb(a,b())}};c.m.ba.text=!0;c.h.textInput={init:(a,b,d)=>{var f=a.value,h,l,e=()=>{clearTimeout(h);l=h=void 0;var k=a.value;f!==k&&(f=k,c.P.Ja(b(),d,"textInput",k))},g=()=>{var k=c.g.i(b());null==k&&(k="");void 0!==l&&k===l?setTimeout(g,4):a.value!==
k&&(a.value=k,f=a.value)};a.addEventListener("input",e);a.addEventListener("change",e);a.addEventListener("blur",e);c.o(g,{s:a})}};c.h.textinput={preprocess:(a,b,d)=>d("textInput",a)};c.h.value={init:(a,b,d)=>{var f=a.matches("SELECT"),h=a.matches("INPUT");if(!h||"checkbox"!=a.type&&"radio"!=a.type){var l=new Set,e=d.get("valueUpdate"),g=null,k=()=>{g=null;var m=b(),q=c.C.N(a);c.P.Ja(m,d,"value",q)};e&&("string"==typeof e?l.add(e):e.forEach(m=>l.add(m)),l.delete("change"));l.forEach(m=>{var q=k;(m||
"").startsWith("after")&&(q=()=>{g=c.C.N(a);setTimeout(k,0)},m=m.slice(5));a.addEventListener(m,q)});var n=h&&"file"==a.type?()=>{var m=c.g.i(b());null==m||""===m?a.value="":c.u.J(k)}:()=>{var m=c.g.i(b()),q=c.C.N(a);if(null!==g&&m===g)setTimeout(n,0);else if(m!==q||void 0===q)f?(q=d.get("valueAllowUnset"),c.C.Ia(a,m,q),q||m===c.C.N(a)||c.u.J(k)):c.C.Ia(a,m)};if(f){var p;c.l.subscribe(a,c.l.D,()=>{p?d.get("valueAllowUnset")?n():k():(a.addEventListener("change",k),p=c.o(n,{s:a}))},null,{notifyImmediately:!0})}else a.addEventListener("change",
k),c.o(n,{s:a})}else c.applyBindingAccessorsToNode(a,{checkedValue:b})},update:()=>{}};c.h.visible={update:(a,b)=>{b=c.g.i(b());var d="none"!=a.style.display;b&&!d?a.style.display="":d&&!b&&(a.style.display="none")}};c.h.hidden={update:(a,b)=>a.hidden=!!c.g.i(b())};(function(a){c.h[a]={init:function(b,d,f,h,l){return c.h.event.init.call(this,b,()=>({[a]:d()}),f,h,l)}}})("click");(()=>{let a=c.g.j.Y();class b{constructor(f){this.Sa=f}Fa(...f){let h=this.Sa;if(!f.length)return c.g.j.get(h,a)||(11===
this.I?h.content:1===this.I?h:void 0);c.g.j.set(h,a,f[0])}}class d extends b{constructor(f){super(f);f&&(this.I=f.matches("TEMPLATE")&&f.content?f.content.nodeType:1)}}c.Ga={Sa:d,Ma:b}})();(()=>{var a=(e,g,k)=>{var n;for(g=c.m.nextSibling(g);e&&(n=e)!==g;)e=c.m.nextSibling(n),k(n,e)},b=(e,g)=>{if(e.length){var k=e[0],n=k.parentNode;a(k,e[e.length-1],p=>{1!==p.nodeType&&8!==p.nodeType||c.nb(g,p)});c.g.xa(e,n)}},d=(e,g,k,n)=>{var p=(e&&(e.nodeType?e:0<e.length?e[0]:null)||k||{}).ownerDocument;if("string"==
typeof k){p=p||J;p=p.getElementById(k);if(!p)throw Error("Cannot find template with ID "+k);k=new c.Ga.Sa(p)}else if([1,8].includes(k.nodeType))k=new c.Ga.Ma(k);else throw Error("Unknown template type: "+k);k=(k=k.Fa?k.Fa():null)?[...k.cloneNode(!0).childNodes]:null;if("number"!=typeof k.length||0<k.length&&"number"!=typeof k[0].nodeType)throw Error("Template engine must return an array of DOM nodes");p=!1;switch(g){case "replaceChildren":c.m.qa(e,k);p=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+
g);}p&&(b(k,n),"replaceChildren"==g&&c.l.notify(e,c.l.D));return k},f=(e,g,k)=>c.T(e)?e():"function"===typeof e?e(g,k):e;c.ec=function(e,g,k,n){k=k||{};var p=p||"replaceChildren";if(n){var m=n.nodeType?n:0<n.length?n[0]:null;return c.o(()=>{var q=g instanceof c.da?g:new c.da(g,null,null,null,{exportDependencies:!0}),r=f(e,q.$data,q);d(n,p,r,q,k)},{ka:()=>!m||!c.g.Ua(m),s:m})}console.log("no targetNodeOrNodeArray")};c.fc=(e,g,k,n,p)=>{function m(w,z){c.u.J(c.g.Fb,null,[n,w,t,k,u,z]);c.l.notify(n,c.l.D)}
var q,r=k.as,t=(w,z)=>{q=p.createChildContext(w,{as:r,extend:C=>{C.$index=z;r&&(C[r+"Index"]=z)}});w=f(e,w,q);return d(n,"ignoreTargetNode",w,q,k)},u=(w,z)=>{b(z,q);q=null};if(!k.beforeRemove&&c.isObservableArray(g)){m(g.G());var y=g.subscribe(w=>{m(g(),w)},null,"arrayChange");y.s(n);return y}return c.o(()=>{var w=c.g.i(g)||[];"undefined"==typeof w.length&&(w=[w]);m(w)},{s:n})};var h=c.g.j.Y(),l=c.g.j.Y();c.h.template={init:(e,g)=>{g=c.g.i(g());if("string"==typeof g||"name"in g)c.m.la(e);else if("nodes"in
g){g=g.nodes||[];if(c.T(g))throw Error('The "nodes" option must be a plain, non-observable array.');let k=g[0]?.parentNode;k&&c.g.j.get(k,l)||(k=c.g.Ab(g),c.g.j.set(k,l,!0));(new c.Ga.Ma(e)).Fa(k)}else if(g=c.m.childNodes(e),g.length)g=c.g.Ab(g),(new c.Ga.Ma(e)).Fa(g);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:(e,g,k,n,p)=>{var m=g();g=c.g.i(m);k=!0;n=null;"string"==typeof g?g={}:(m="name"in g?g.name:e,"if"in g&&
(k=c.g.i(g["if"])),k&&"ifnot"in g&&(k=!c.g.i(g.ifnot)),k&&!m&&(k=!1));"foreach"in g?n=c.fc(m,k&&g.foreach||[],g,e,p):k?(k=p,"data"in g&&(k=p.createChildContext(g.data,{as:g.as,exportDependencies:!0})),n=c.ec(m,k,g,e)):c.m.la(e);p=n;c.g.j.get(e,h)?.dispose?.();c.g.j.set(e,h,!p||p.isActive&&!p.isActive()?void 0:p)}};c.P.Oa.template=e=>{e=c.P.bc(e);return 1==e.length&&e[0].unknown||c.P.$b(e,"name")?null:"This template engine does not support anonymous templates nested within its templates"};c.m.ba.template=
!0})();c.g.wb=(a,b,d)=>{var f=0,h,l=b.length;l&&a.every(e=>{h=b.findIndex(g=>e.value===g.value);0<=h&&(e.moved=b[h].index,b[h].moved=e.index,b.splice(h,1),f=h=0,--l);f+=l;return l&&(!d||f<d)})};c.g.sb=(()=>{var a=(b,d,f,h,l)=>{for(var e=Math.min,g=Math.max,k=[],n=-1,p=b.length,m,q=d.length,r=q-p||1,t=p+q+1,u,y,w;++n<=p;)for(y=u,k.push(u=[]),w=e(q,n+r),m=g(0,n-1);m<=w;m++)u[m]=m?n?b[n-1]===d[m-1]?y[m-1]:e(y[m]||t,u[m-1]||t)+1:m+1:n+1;e=[];g=[];r=[];n=p;for(m=q;n||m;)q=k[n][m]-1,m&&q===k[n][m-1]?g.push(e[e.length]=
{status:f,value:d[--m],index:m}):n&&q===k[n-1][m]?r.push(e[e.length]={status:h,value:b[--n],index:n}):(--m,--n,l.sparse||e.push({status:"retained",value:d[m]}));c.g.wb(r,g,!l.dontLimitMoves&&10*p);return e.reverse()};return(b,d,f)=>{f="boolean"===typeof f?{dontLimitMoves:f}:f||{};b=b||[];d=d||[];return b.length<d.length?a(b,d,"added","deleted",f):a(d,b,"deleted","added",f)}})();(()=>{function a(f,h,l,e,g){var k=[],n=c.o(()=>{var p=h(l,g,c.g.xa(k,f))||[];if(0<k.length){var m=k.nodeType?[k]:k;if(0<
m.length){var q=m[0],r=q.parentNode;p.forEach(t=>r.insertBefore(t,q));m.forEach(t=>c.removeNode(t))}e&&c.u.J(e,null,[l,p,g])}k.length=0;k.push(...p)},{s:f,ka:()=>!!k.find(c.g.Ua)});return{L:k,Qa:n.isActive()?n:void 0}}var b=c.g.j.Y(),d=c.g.j.Y();c.g.Fb=(f,h,l,e,g,k)=>{h=h||[];"undefined"==typeof h.length&&(h=[h]);e=e||{};var n=c.g.j.get(f,b),p=[],m=0,q=0,r=[],t=[],u=[],y=0,w=v=>{A={ca:v,Aa:c.aa(q++)};p.push(A)},z=v=>{A=n[v];A.Aa(q++);c.g.xa(A.L,f);p.push(A)};if(n){if(!k||n&&n._countWaitingForRemove)k=
c.g.sb(Array.prototype.map.call(n,D=>D.ca),h,{dontLimitMoves:e.dontLimitMoves,sparse:!0});let v,G;for(k.forEach(D=>{v=D.moved;G=D.index;switch(D.status){case "deleted":for(;m<G;)z(m++);void 0===v&&(A=n[m],A.Qa&&(A.Qa.dispose(),A.Qa=void 0),c.g.xa(A.L,f).length&&(e.beforeRemove&&(p.push(A),y++,A.ca===d?A=null:u[A.Aa.G()]=A),A&&r.push.apply(r,A.L)));m++;break;case "added":for(;q<G;)z(m++);void 0!==v?(t.push(p.length),z(v)):w(D.value)}});q<h.length;)z(m++);p._countWaitingForRemove=y}else h.forEach(w);
c.g.j.set(f,b,p);r.forEach(e.beforeRemove?c.ea:c.removeNode);var C,F,M=v=>{c.m.Yb(f,v,F);F=v};k=f.ownerDocument.activeElement;if(t.length)for(;void 0!=(C=t.shift());){var A=p[C];for(F=void 0;C;)if(h=p[--C].L,h?.length){F=h[h.length-1];break}A.L.forEach(M)}p.forEach(v=>{v.L||c.g.extend(v,a(f,l,v.ca,g,v.Aa));v.L.forEach(M);!v.Xb&&g&&(g(v.ca,v.L,v.Aa),v.Xb=!0,F=v.L[v.L.length-1])});f.ownerDocument.activeElement!=k&&k?.focus();((v,G)=>{v&&G.forEach(D=>D?.L.forEach(oa=>v(oa,C,D.ca)))})(e.beforeRemove,
u);u.forEach(v=>v&&(v.ca=d))}})();V.ko=Q})(this);

View file

@ -151,7 +151,7 @@ class AsyncCompleteContext {
this.asyncDescendants = new Set;
this.childrenComplete = false;
bindingInfo.asyncContext || ko.utils.domNodeDisposal.addDisposeCallback(node, asyncContextDispose);
bindingInfo.asyncContext || ko.utils.domNodeDisposal['addDisposeCallback'](node, asyncContextDispose);
if (ancestorBindingInfo?.asyncContext) {
ancestorBindingInfo.asyncContext.asyncDescendants.add(node);
@ -360,7 +360,7 @@ function applyBindingsToNodeInternal(node, sourceBindings, bindingContext) {
var callback = bindings[ko.bindingEvent.childrenComplete]();
if (callback) {
var nodes = ko.virtualElements.childNodes(node);
nodes.length && callback(nodes, ko.dataFor(nodes[0]));
nodes.length && callback(nodes, ko['dataFor'](nodes[0]));
}
});
}
@ -435,7 +435,7 @@ function getBindingContext(viewModelOrBindingContext, extendContextCallback) {
: new ko.bindingContext(viewModelOrBindingContext, undefined, undefined, extendContextCallback);
}
ko.applyBindingAccessorsToNode = (node, bindings, viewModelOrBindingContext) =>
ko['applyBindingAccessorsToNode'] = (node, bindings, viewModelOrBindingContext) =>
applyBindingsToNodeInternal(node, bindings, getBindingContext(viewModelOrBindingContext));
ko.applyBindingsToDescendants = (viewModelOrBindingContext, rootNode) => {
@ -457,7 +457,7 @@ ko.applyBindings = function (viewModelOrBindingContext, rootNode, extendContextC
};
// Retrieving binding context from arbitrary nodes
ko.dataFor = node => {
ko['dataFor'] = node => {
// We can only do something meaningful for elements and comment nodes (in particular, not text nodes, as IE can't store domdata for them)
var context = node && [1,8].includes(node.nodeType) && ko.storedBindingContextForNode(node);
return context ? context['$data'] : undefined;
@ -465,5 +465,3 @@ ko.dataFor = node => {
ko.exportSymbol('bindingHandlers', ko.bindingHandlers);
ko.exportSymbol('applyBindings', ko.applyBindings);
ko.exportSymbol('applyBindingAccessorsToNode', ko.applyBindingAccessorsToNode);
ko.exportSymbol('dataFor', ko.dataFor);

View file

@ -5,7 +5,7 @@ ko.bindingHandlers['value'] = {
// If the value binding is placed on a radio/checkbox, then just pass through to checkedValue and quit
if (isInputElement && (element.type == "checkbox" || element.type == "radio")) {
ko.applyBindingAccessorsToNode(element, { 'checkedValue': valueAccessor });
ko['applyBindingAccessorsToNode'](element, { 'checkedValue': valueAccessor });
return;
}

View file

@ -106,7 +106,7 @@
// Stop tracking changes to the mapping for these nodes
if (mapData.dependentObservable) {
mapData.dependentObservable.dispose();
mapData.dependentObservable['dispose']();
mapData.dependentObservable = undefined;
}

View file

@ -12,7 +12,7 @@
currentViewModelDispose.call(currentViewModel);
}
if (afterRenderSub) {
afterRenderSub.dispose();
afterRenderSub['dispose']();
}
afterRenderSub = null;
currentViewModel = null;
@ -22,7 +22,7 @@
originalChildNodes = [...ko.virtualElements.childNodes(element)];
ko.virtualElements.emptyNode(element);
ko.utils.domNodeDisposal.addDisposeCallback(element, disposeAssociatedComponentViewModel);
ko.utils.domNodeDisposal['addDisposeCallback'](element, disposeAssociatedComponentViewModel);
ko.computed(() => {
var componentName = ko.utils.unwrapObservable(valueAccessor()),
@ -40,7 +40,7 @@
var asyncContext = ko.bindingEvent.startPossiblyAsyncContentBinding(element, bindingContext);
var loadingOperationId = currentLoadingOperationId = ++componentLoadingOperationUniqueId;
ko.components.get(componentName, componentDefinition => {
ko['components'].get(componentName, componentDefinition => {
// If this is the current load operation for this element
if (currentLoadingOperationId === loadingOperationId) {
// Clean up previous state

View file

@ -2,7 +2,7 @@
var loadingSubscribablesCache = Object.create(null), // Tracks component loads that are currently in flight
loadedDefinitionsCache = new Map(); // Tracks component loads that have already completed
ko.components = {
ko['components'] = {
get: (componentName, callback) => {
if (loadedDefinitionsCache.has(componentName)) {
callback(loadedDefinitionsCache.get(componentName));
@ -32,7 +32,7 @@
}
},
register: (componentName, config) => {
'register': (componentName, config) => {
if (!config) {
throw new Error('Invalid configuration for ' + componentName);
}
@ -102,7 +102,4 @@
var found = (result['template'] && result[createViewModelKey]);
callback(found ? result : null);
};
ko.exportSymbol('components', ko.components);
ko.exportSymbol('components.register', ko.components.register);
})();

View file

@ -10,4 +10,3 @@ ko.exportSymbol = (koPath, object) => {
target = target[tokens[i]];
target[tokens[l]] = object;
};
ko.exportProperty = (owner, publicName, object) => owner[publicName] = object;

View file

@ -86,8 +86,8 @@ ko.computed = (evaluatorFunctionOrOptions, options) => {
// Attach a DOM node disposal callback so that the computed will be proactively disposed as soon as the node is
// removed using ko.removeNode. But skip if isActive is false (there will never be any dependencies to dispose).
if (state.disposeWhenNodeIsRemoved && computedObservable.isActive()) {
ko.utils.domNodeDisposal.addDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback = () => {
computedObservable.dispose();
ko.utils.domNodeDisposal['addDisposeCallback'](state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback = () => {
computedObservable['dispose']();
});
}
@ -96,7 +96,7 @@ ko.computed = (evaluatorFunctionOrOptions, options) => {
// Utility function that disposes a given dependencyTracking entry
function computedDisposeDependencyCallback(id, entryToDispose) {
entryToDispose?.dispose?.();
entryToDispose?.['dispose']?.();
}
// This function gets called each time a dependency is detected while evaluating a computed.
@ -237,7 +237,7 @@ var computedFn = {
if (state.disposeWhenNodeIsRemoved && !ko.utils.domNodeIsAttachedToDocument(state.disposeWhenNodeIsRemoved) || disposeWhen?.()) {
// See comment above about suppressDisposalUntilDisposeWhenReturnsFalse
if (!state.suppressDisposalUntilDisposeWhenReturnsFalse) {
computedObservable.dispose();
computedObservable['dispose']();
return;
}
} else {
@ -285,7 +285,7 @@ var computedFn = {
var newValue = evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext);
if (!state.dependenciesCount) {
computedObservable.dispose();
computedObservable['dispose']();
changed = true; // When evaluation causes a disposal, make sure all dependent computeds get notified so they'll see the new state
} else {
changed = computedObservable.isDifferent(state.latestValue, newValue);
@ -353,11 +353,11 @@ var computedFn = {
self._limitChange(self, !isChange /* isDirty */);
};
},
dispose() {
'dispose'() {
var state = this[computedState];
if (!state.isSleeping && state.dependencyTracking) {
ko.utils.objectForEach(state.dependencyTracking, (id, dependency) =>
dependency.dispose?.()
dependency['dispose']?.()
);
}
if (state.disposeWhenNodeIsRemoved && state.domNodeDisposalCallback) {
@ -419,13 +419,13 @@ var pureComputedOverrides = {
var state = this[computedState];
if (!state.isDisposed && event == 'change' && !this.hasSubscriptionsForEvent('change')) {
ko.utils.objectForEach(state.dependencyTracking, (id, dependency) => {
if (dependency.dispose) {
if (dependency['dispose']) {
state.dependencyTracking[id] = {
_target: dependency._target,
_order: dependency._order,
_version: dependency._version
};
dependency.dispose();
dependency['dispose']();
}
});
state.isSleeping = true;
@ -451,11 +451,10 @@ Object.setPrototypeOf(computedFn, ko.subscribable['fn']);
// Set the proto values for ko.computed
var protoProp = ko.observable.protoProperty; // == "__ko_proto__"
computedFn[protoProp] = ko.computed;
ko.computed['fn'] = computedFn;
ko.exportSymbol('computed', ko.computed);
ko.exportSymbol('isComputed', instance => (typeof instance == 'function' && instance[protoProp] === computedFn[protoProp]));
ko.exportSymbol('computed.fn', computedFn);
ko.exportProperty(computedFn, 'dispose', computedFn.dispose);
ko['isComputed'] = instance => (typeof instance == 'function' && instance[protoProp] === computedFn[protoProp]);
ko.pureComputed = (evaluatorFunctionOrOptions) => {
if (typeof evaluatorFunctionOrOptions === 'function') {

View file

@ -1,4 +1,4 @@
ko.extenders = {
ko['extenders'] = {
'debounce': (target, timeout) => target.limit(callback => debounce(callback, timeout)),
'rateLimit': (target, timeout) => target.limit(callback => throttle(callback, timeout)),
@ -34,5 +34,3 @@ function debounce(callback, timeout) {
timeoutInstance = setTimeout(callback, timeout);
};
}
ko.exportSymbol('extenders', ko.extenders);

View file

@ -1,5 +1,5 @@
const arrayChangeEventName = 'arrayChange';
ko.extenders['trackArrayChanges'] = (target, options) => {
ko['extenders']['trackArrayChanges'] = (target, options) => {
// Use the provided options--each call to trackArrayChanges overwrites the previously set options
target.compareArrayOptions = {};
if (typeof options == "object") {
@ -31,8 +31,8 @@ ko.extenders['trackArrayChanges'] = (target, options) => {
target.afterSubscriptionRemove = event => {
underlyingAfterSubscriptionRemoveFunction?.call(target, event);
if (event === arrayChangeEventName && !target.hasSubscriptionsForEvent(arrayChangeEventName)) {
changeSubscription?.dispose();
spectateSubscription?.dispose();
changeSubscription?.['dispose']();
spectateSubscription?.['dispose']();
spectateSubscription = changeSubscription = null;
trackingChanges = false;
previousContents = undefined;

View file

@ -1,17 +1,17 @@
ko.observableArray = initialValues => {
ko['observableArray'] = initialValues => {
initialValues = initialValues || [];
if (typeof initialValues != 'object' || !('length' in initialValues))
throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
return Object.setPrototypeOf(ko.observable(initialValues), ko.observableArray['fn']).extend({'trackArrayChanges':true});
return Object.setPrototypeOf(ko.observable(initialValues), ko['observableArray']['fn']).extend({'trackArrayChanges':true});
};
const IS_OBSERVABLE_ARRAY = Symbol('IS_OBSERVABLE_ARRAY');
// Note that for browsers that don't support proto assignment, the
// inheritance chain is created manually in the ko.observableArray constructor
ko.observableArray['fn'] = Object.setPrototypeOf({
ko['observableArray']['fn'] = Object.setPrototypeOf({
[IS_OBSERVABLE_ARRAY]: 1,
'remove'(valueOrPredicate) {
var underlyingArray = this.peek();
@ -43,7 +43,7 @@ Object.getOwnPropertyNames(Array.prototype).forEach(methodName => {
// https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype#mutator_methods
// Important: Do not add any additional functions here that may reasonably be used to *read* data from the array
// because we'll eval them without causing subscriptions, so ko.computed output could end up getting stale
ko.observableArray['fn'][methodName] = function (...args) {
ko['observableArray']['fn'][methodName] = function (...args) {
// Use "peek" to avoid creating a subscription in any computed that we're executing in the context of
// (for consistency with mutating regular observables)
var underlyingArray = this.peek();
@ -56,14 +56,11 @@ Object.getOwnPropertyNames(Array.prototype).forEach(methodName => {
};
} else {
// Accessor and Iteration methods
ko.observableArray['fn'][methodName] = function (...args) {
ko['observableArray']['fn'][methodName] = function (...args) {
return this()[methodName](...args);
};
}
}
});
ko.isObservableArray = obj => !!(obj && obj[IS_OBSERVABLE_ARRAY]);
ko.exportSymbol('observableArray', ko.observableArray);
ko.exportSymbol('isObservableArray', ko.isObservableArray);
ko['isObservableArray'] = obj => !!(obj && obj[IS_OBSERVABLE_ARRAY]);

View file

@ -8,10 +8,9 @@ class koSubscription
this._isDisposed = false;
this._node = null;
this._domNodeDisposalCallback = null;
ko.exportProperty(this, 'dispose', this.dispose);
}
dispose() {
'dispose'() {
var self = this;
if (!self._isDisposed) {
self._domNodeDisposalCallback
@ -26,7 +25,7 @@ class koSubscription
disposeWhenNodeIsRemoved(node) {
// MutationObserver ?
this._node = node;
ko.utils.domNodeDisposal.addDisposeCallback(node, this._domNodeDisposalCallback = this.dispose.bind(this));
ko.utils.domNodeDisposal['addDisposeCallback'](node, this._domNodeDisposalCallback = this['dispose'].bind(this));
}
}
@ -174,7 +173,7 @@ var ko_subscribable_fn = {
var target = this;
if (requestedExtenders) {
ko.utils.objectForEach(requestedExtenders, (key, value) => {
var extenderHandler = ko.extenders[key];
var extenderHandler = ko['extenders'][key];
if (typeof extenderHandler == 'function') {
target = extenderHandler(target, value) || target;
}

View file

@ -165,7 +165,7 @@
ko.bindingEvent.notify(targetNode, ko.bindingEvent.childrenComplete);
};
if (!options['beforeRemove'] && ko.isObservableArray(arrayOrObservableArray)) {
if (!options['beforeRemove'] && ko['isObservableArray'](arrayOrObservableArray)) {
setDomNodeChildrenFromArrayMapping(arrayOrObservableArray.peek());
var subscription = arrayOrObservableArray['subscribe'](changeList => {
@ -188,7 +188,7 @@
var templateComputedDomDataKey = ko.utils.domData.nextKey();
function disposeOldComputedAndStoreNewOne(element, newComputed) {
var oldComputed = ko.utils.domData.get(element, templateComputedDomDataKey);
oldComputed?.dispose?.();
oldComputed?.['dispose']?.();
ko.utils.domData.set(element, templateComputedDomDataKey, (newComputed && (!newComputed.isActive || newComputed.isActive())) ? newComputed : undefined);
}

View file

@ -45,7 +45,7 @@ ko.utils.domNodeDisposal = (() => {
};
return {
addDisposeCallback : (node, callback) => {
'addDisposeCallback' : (node, callback) => {
if (typeof callback != "function")
throw new Error("Callback must be a function");
getDisposeCallbacksCollection(node, 1).add(callback);
@ -83,4 +83,3 @@ ko.utils.domNodeDisposal = (() => {
ko.cleanNode = ko.utils.domNodeDisposal.cleanNode; // Shorthand name for convenience
ko.removeNode = ko.utils.domNodeDisposal.removeNode; // Shorthand name for convenience
ko.exportSymbol('utils.domNodeDisposal', ko.utils.domNodeDisposal);
ko.exportSymbol('utils.domNodeDisposal.addDisposeCallback', ko.utils.domNodeDisposal.addDisposeCallback);

View file

@ -1 +1 @@
ko.exportSymbol('version', "##VERSION##");
ko['version'] = "##VERSION##";