retirement-simulator
Version:
Retirement Simulator
1 lines • 97.4 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("d3");const t=Symbol.for("compare"),r=(e,n)=>{const a=typeof e,i=typeof n;if(a<i)return-1;if(i<a)return 1;switch(a){case"number":case"string":case"boolean":if(e<n)return-1;if(e>n)return 1;break;case"symbol":return r(e.description,n.description);case"object":if(!e&&n)return-1;if(!n&&e)return 1;if(n===e)return 0;if(e instanceof Date&&n instanceof Date)return r(e.getTime(),n.getTime());const a=e.constructor,i=n.constructor;if(a===i){return(a[t]??s)(e,n)}return r(a.name,i.name)}return 0},s=(e,t)=>0,n=(e,...t)=>{if(0===t.length)return e;const r=n(t[0],...t.slice(1));return(t,s)=>{const n=e(t,s);return 0===n?r(t,s):n}},a=e=>(t,s)=>r(t[e],s[e]),i=a("value"),o=a("rate"),l=a("name"),c=a("type"),u=a("start"),p=e=>(t,r)=>e(r,t),h={byValue:n(p(i),c,l),byRate:n(p(o),c,l),byName:n(l,c),byType:n(c,l),byStart:n(u,c,l),null:s,natural:r},m=(e=r)=>t=>[...t].sort(e),f=m(),y=e=>"function"==typeof e,d=e=>e&&(C(e)||O(e)),g=e=>e&&(E(e)||N(e)||O(e)),x=e=>e&&y(e.next)&&y(e.return)&&y(e.throw)&&y(e[Symbol.iterator]),b=e=>e&&y(e.next)&&y(e.return)&&y(e.throw)&&y(e[Symbol.asyncIterator]);function _(e){if(x(e))return e;if(C(e)){const t=e;return function*(){for(;;){const e=t.next();if(e.done)return e.value;yield e.value}}()}if(O(e))return _(e[Symbol.iterator]());throw new Error(`Not iterable: ${e}`)}function v(e){if(b(e))return e;if(E(e)){const t=e;return async function*(){for(;;){const e=await t.next();if(e.done)return e.value;yield e.value}}()}if(N(e))return v(e[Symbol.asyncIterator]());if(O(e))return v(e[Symbol.iterator]());throw new Error(`Not iterable: ${e}`)}function w(e){if(x(e))return e;if(C(e))return e;if(O(e))return e[Symbol.iterator]();throw new Error(`Not iterable: ${e}`)}function S(e){if(b(e))return e;if(N(e))return e[Symbol.asyncIterator]();if(O(e))return T(w(e));throw new Error(`Not iterable: ${e}`)}const T=e=>{const t=e;let r;return r=async function*(){let s,n=!1;try{for(;;){const e=await Promise.resolve(t.next());if(e.done)return n=!0,e.value;try{s=yield e.value}catch(e){throw await(t.throw?.(e)),e}}}finally{n||await(e.return?.(r.returning))}}()};function A(e){return O(e)?e:{[Symbol.iterator]:()=>e}}function I(e){return N(e)?e:O(e)?M(e):{[Symbol.asyncIterator]:()=>e}}async function*M(e){const t=e[Symbol.iterator]();let r;for(;;){const e=await t.next(r);if(e.done)return e.value;r=yield e.value}}const C=e=>e&&"function"==typeof e.next,E=e=>e&&"function"==typeof e.next,O=e=>e&&"function"==typeof e[Symbol.iterator],N=e=>e&&"function"==typeof e[Symbol.asyncIterator],k=(e,t)=>(...r)=>{try{return e(...r)}catch(e){return t?.(e)}};class U{returning;[Symbol.toStringTag];asArray(){return this._impl.asArray(this)}limit(e){return this._impl.limit(e,this)}forEach(e,t){this._impl.forEach(e,t,this)}map(e,t){return this._impl.map(e,t,this)}filter(e,t){return this._impl.filter(e,t,this)}flat(e=1){return this._impl.flat(e,this)}flatMap(e,t=1){return this._impl.flatMap(e,t,this)}slice(e=0,t=Number.POSITIVE_INFINITY){return this._impl.slice(e,t,this)}concat(...e){return this._impl.concat(this,...e)}reduce(e,t){return this._impl.reduce(e,t,this)}some(e,t){return this._impl.some(e,t,this)}every(e,t){return this._impl.every(e,t,this)}repeatLast(e=Number.POSITIVE_INFINITY){return this._impl.repeatLast(this,e)}repeat(e,t=Number.POSITIVE_INFINITY){const r=this._impl.repeat(e,t);return this._impl.concat(this,r)}zip(...e){return this._impl.zip(this,...e)}join(e){return this._impl.join(this,e)}sort(e){return this._impl.sort(e)(this)}}class $ extends U{[Symbol.toStringTag]}const F=new class{of(...e){return this.enhance(e)}asArray(e){return[...A(e)]}limit(e,t){let r;function*s(t){let s,n=!1;try{for(let r=0;r<e;r++){const e=t.next(s);if(e.done)return e.value;try{s=yield e.value}catch(e){t.throw?.(e)}}n=!0;const a=new RangeError(`Generator produced excessive values > ${e}.`);throw t.throw?.(a),a}finally{n||t.return?.(r?.returning)}}return t?r=this.enhance(s(w(t))):e=>this.enhance(s(w(e)))}forEach(e,t,r){const s=(e,t,r)=>{const s=w(r);let n=0;for(;;){const r=s.next();if(r.done)return;e.call(t,r.value,n++)}};return r?s(e,t,r):d(t)?s(e,void 0,t):(r,n)=>s(e,n??t,r)}map(e,t,r){const s=(t,r)=>{const s=_(r);let n;return n=this.enhance(function*(){let r,a=0;for(;;)for(;;)try{for(;;){const n=s.next(r);if(n.done)return n.value;const i=e.call(t,n.value,a++);try{r=yield i}catch(e){s.throw(e)}}}finally{if(!s.return(n?.returning).done)break}}())};return r?s(t,r):d(t)?s(void 0,t):(e,r)=>s(r??t,e)}filter(e,t,r){const s=(t,r)=>{const s=_(r);let n;return n=this.enhance(function*(e){let r,a=0;for(;;)for(;;)try{for(;;){const n=s.next(r);if(n.done)return n.value;if(e.call(t,n.value,a++))try{r=yield n.value}catch(e){s.throw(e)}}}finally{const e=s.return?.(n?.returning);if(!e?.done)break}}(e))};return r?s(t,r):d(t)?s(void 0,t):(e,r)=>s(r??t,e)}flat(e,t){const r=(e,t)=>{let r;const s=new Set;return x(t)&&s.add(t),r=this.enhance(function*e(t,n){let a;for(;;)for(;;)try{for(;;){const r=t.next(a);if(r.done)return r.value;const i=r.value;x(i)&&s.add(i);try{n>0&&C(i)?yield*e(i,n-1):n>0&&O(i)?yield*e(w(i),n-1):a=yield r.value}catch(e){t.throw?.(e)}}}finally{const e=t.return?.(r?.returning);if(x(t)&&s.delete(t),e&&!e.done)break;for(const e of s)e.return(r?.returning)}}(w(t),e))};if("number"==typeof e){if(t){if(d(t))return r(e,t);throw new TypeError(`Invalid Genable: ${t}`)}return t=>r(e,t)}if(d(e))return r(t??1,e);throw new TypeError("Illegal arguments to flat()")}flatMap(e,t,r){const s=(t,r)=>{let s,n=0;return s=this.enhance(function*t(r,a){let i;for(;;)for(;;)try{for(;;){const s=r.next(i);if(s.done)return s.value;const o=e(s.value,n++);try{C(o)?a>1?yield*t(o,a-1):1===a?yield*_(o):yield o:O(o)?a>1?yield*t(w(o),a-1):1===a?yield*_(o):yield o:i=yield o}catch(e){r.throw?.(e)}}}finally{const e=r.return?.(s?.returning);if(e&&!e.done)break}}(w(r),t))};return d(r)?s(t??1,r):d(t)?s(1,t):(e,r)=>s(t??r??1,e)}slice(e,t,r){const s=r=>{const s=w(r);return this.enhance(function*(e,t){for(let t=0;t<e;t++){const e=s.next();if(e.done)return e.value}if(t===Number.POSITIVE_INFINITY)yield*A(s);else{let r;for(;;)try{for(let n=e;n<t;n++){const t=s.next(r);if(t.done)return t.value;try{r=yield t.value}catch(e){const t=s.throw?.(e);if(t){if(t.done)return t.value;r=yield t.value}}}}finally{const e=s.return?.();if(e&&!e.done)break}}}(e,t))};return r?s(r):s}concat(...e){let t;return t=this.enhance(function*(){let r=0;try{for(;r<e.length;r++)yield*A(e[r])}finally{for(;r<e.length;r++){const s=e[r];x(s)&&s.return(t?.returning)}}}())}reduce(e,t,r){const s=(t,r)=>{let s=t;if(void 0===s){const e=r.next();if(e.done)throw new TypeError("No initial value in reduce");s=e.value}for(;;){const t=r.next();if(t.done)return s;s=e(s,t.value)}};return d(r)?s(t,w(r)):d(t)?s(void 0,w(t)):(e,r)=>s(r??t,w(e))}some(e,t,r){const s=(t,r)=>{let s=0;for(;;){const n=r.next();if(n.done)return!1;if(e.call(t,n.value,s++))return!0}};return d(r)?s(t,w(r)):d(t)?s(void 0,w(t)):(e,r)=>s(r??t,w(e))}every(e,t,r){const s=(t,r)=>{let s=0;for(;;){const n=r.next();if(n.done)return!0;if(!e.call(t,n.value,s++))return!1}};if(d(r))return s(t,w(r));if(d(r))return(e,r)=>s(r??t,w(e));throw new Error(`Invalid argument to every: ${r??t}`)}repeatLast(e,t=Number.POSITIVE_INFINITY){const r=w(e);let s,n;return n=this.enhance(function*(){try{let e;for(;;){const t=r.next(s);if(t.done)break;try{s=yield e=t.value}catch(t){const s=r.throw?.(t);if(s){if(s.done)break;yield e=s.value}}}for(let r=0;r<t;r++)yield e}finally{r.return?.(n?.returning)}}())}repeat(e,t=Number.POSITIVE_INFINITY){return this.enhance(function*(){for(let r=0;r<t;r++)yield e}())}zip(...e){if(0===e.length)return this.enhance([]);const t=e.map(w);let r,s=!1;return r=this.enhance(function*(){try{for(;;){let r=[];for(const e of t){const t=e.next();if(t.done)return s=!0,t.value;r.push(t.value)}try{yield r}catch(t){for(const r of e)try{r.throw?.(t)}catch{}throw t}}}finally{if(!s)for(const t of e)try{t.return?.(r?.returning)}catch{}}}())}join(e,t){return"string"==typeof e?(t=e,e=>this.join(e,t)):[...A(e)].join(t)}merge(...e){let t,r=e.map(w);return t=this.enhance(function*(e){let r,s=!1,n=!0;try{for(;n;){n=!1;for(let t=0;t<e.length;t++){const s=e[t];if(s){const a=s.next(r);if(a.done)e[t]=null;else{n=!0;try{r=yield a.value}catch(t){e.forEach(k((e=>e?.throw?.(t))))}}}}}s=!0}finally{s||e.forEach(k((e=>e?.return?.(t?.returning))))}return t?.returning}(r))}sort(e){return(...t)=>this.merge(...t).asArray().sort(e)}enhance(e){const t=_(e),r=Object.getPrototypeOf(t),s=Object.create($.prototype);return s.return=e=>(t.returning=e,r.return.call(t,e)),s[Symbol.iterator]=()=>t,Object.setPrototypeOf(t,s),t}};var j,P;(j||(j={})).Mixin=function(e){class t extends e{#e=void 0;constructor(...e){super(...e)}#t(){return F.enhance(this[Symbol.iterator]())}asArray(){return this.#t().asArray()}limit(e){return this.#t().limit(e)}forEach(e,t){return this.#t().forEach(e,t)}map(e,t){return this.#t().map(e,t)}filter(e,t){return this.#t().filter(e,t)}flat(e=1){return this.#t().flat(e)}flatMap(e,t=1){return this.#t().flatMap(e,t)}slice(e=0,t=Number.MAX_SAFE_INTEGER){return this.#t().slice(e,t)}concat(...e){return this.#t().concat(...e)}reduce(e,t){return this.#t().reduce(e,t)}some(e,t){return this.#t().some(e,t)}every(e,t){return this.#t().every(e,t)}repeatLast(e=Number.MAX_SAFE_INTEGER){return this.#t().repeatLast(e)}repeat(e,t=Number.MAX_SAFE_INTEGER){return this.#t().repeat(e,t)}join(e=""){return this.#t().join(e)}sort(e){return this.#t().sort(e)}get[Symbol.toStringTag](){try{return this.#e??(this.#e=`Sync.Mixin(${e.name})`)}catch{return`Sync.Mixin(${e.name}).prototype`}}}return t};class R{#r;constructor(e,t){this.#r=e.bind(this,...t)}[Symbol.iterator](){return F.enhance(_(this.#r()))}}class D extends(j.Mixin(R)){constructor(e,t){super(e,t)}}(P||(P={})).wrap=(e,...t)=>new D(e,t);const Y=Object.getPrototypeOf(function*(){}());var q;Object.setPrototypeOf($.prototype,(e=>{const t=Object.create(e);return(e=>{for(const r of Reflect.ownKeys(e))"constructor"!==r&&(t[r]=e[r])})(U.prototype),t})(Y)),Object.defineProperty($.prototype,"_impl",{value:F,writable:!1,enumerable:!1,configurable:!1}),function(e){e.asArray=F.asArray.bind(F),e.concat=F.concat.bind(F),e.every=F.every.bind(F),e.filter=F.filter.bind(F),e.flat=F.flat.bind(F),e.flatMap=F.flatMap.bind(F),e.forEach=F.forEach.bind(F),e.join=F.join.bind(F),e.limit=F.limit.bind(F),e.map=F.map.bind(F),e.merge=F.merge.bind(F),e.of=F.of.bind(F),e.reduce=F.reduce.bind(F),e.repeat=F.repeat.bind(F),e.repeatLast=F.repeatLast.bind(F),e.slice=F.slice.bind(F),e.some=F.some.bind(F),e.sort=F.sort.bind(F),e.zip=F.zip.bind(F),e.enhance=F.enhance.bind(F),e.Mixin=j.Mixin,e.wrap=P.wrap}(q||(q={}));const L=(e=0,t=Number.MAX_SAFE_INTEGER,r=1)=>q.enhance(function*(e=0,t=Number.MAX_SAFE_INTEGER,r=1){let s=e;if(r>0)for(;s<t;)yield s,s+=r;else{if(!(r<0))throw new Error("Step must not be zero.");for(;s>t;)yield s,s+=r}}(e,t,r));function z(e,t){t=t||{},this._head=0,this._tail=0,this._capacity=t.capacity,this._capacityMask=3,this._list=new Array(4),Array.isArray(e)&&this._fromArray(e)}z.prototype.peekAt=function(e){var t=e;if(t===(0|t)){var r=this.size();if(!(t>=r||t<-r))return t<0&&(t+=r),t=this._head+t&this._capacityMask,this._list[t]}},z.prototype.get=function(e){return this.peekAt(e)},z.prototype.peek=function(){if(this._head!==this._tail)return this._list[this._head]},z.prototype.peekFront=function(){return this.peek()},z.prototype.peekBack=function(){return this.peekAt(-1)},Object.defineProperty(z.prototype,"length",{get:function(){return this.size()}}),z.prototype.size=function(){return this._head===this._tail?0:this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)},z.prototype.unshift=function(e){if(0===arguments.length)return this.size();var t=this._list.length;return this._head=this._head-1+t&this._capacityMask,this._list[this._head]=e,this._tail===this._head&&this._growArray(),this._capacity&&this.size()>this._capacity&&this.pop(),this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)},z.prototype.shift=function(){var e=this._head;if(e!==this._tail){var t=this._list[e];return this._list[e]=void 0,this._head=e+1&this._capacityMask,e<2&&this._tail>1e4&&this._tail<=this._list.length>>>2&&this._shrinkArray(),t}},z.prototype.push=function(e){if(0===arguments.length)return this.size();var t=this._tail;return this._list[t]=e,this._tail=t+1&this._capacityMask,this._tail===this._head&&this._growArray(),this._capacity&&this.size()>this._capacity&&this.shift(),this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)},z.prototype.pop=function(){var e=this._tail;if(e!==this._head){var t=this._list.length;this._tail=e-1+t&this._capacityMask;var r=this._list[this._tail];return this._list[this._tail]=void 0,this._head<2&&e>1e4&&e<=t>>>2&&this._shrinkArray(),r}},z.prototype.removeOne=function(e){var t=e;if(t===(0|t)&&this._head!==this._tail){var r=this.size(),s=this._list.length;if(!(t>=r||t<-r)){t<0&&(t+=r),t=this._head+t&this._capacityMask;var n,a=this._list[t];if(e<r/2){for(n=e;n>0;n--)this._list[t]=this._list[t=t-1+s&this._capacityMask];this._list[t]=void 0,this._head=this._head+1+s&this._capacityMask}else{for(n=r-1-e;n>0;n--)this._list[t]=this._list[t=t+1+s&this._capacityMask];this._list[t]=void 0,this._tail=this._tail-1+s&this._capacityMask}return a}}},z.prototype.remove=function(e,t){var r,s=e,n=t;if(s===(0|s)&&this._head!==this._tail){var a=this.size(),i=this._list.length;if(!(s>=a||s<-a||t<1)){if(s<0&&(s+=a),1===t||!t)return(r=new Array(1))[0]=this.removeOne(s),r;if(0===s&&s+t>=a)return r=this.toArray(),this.clear(),r;var o;for(s+t>a&&(t=a-s),r=new Array(t),o=0;o<t;o++)r[o]=this._list[this._head+s+o&this._capacityMask];if(s=this._head+s&this._capacityMask,e+t===a){for(this._tail=this._tail-t+i&this._capacityMask,o=t;o>0;o--)this._list[s=s+1+i&this._capacityMask]=void 0;return r}if(0===e){for(this._head=this._head+t+i&this._capacityMask,o=t-1;o>0;o--)this._list[s=s+1+i&this._capacityMask]=void 0;return r}if(s<a/2){for(this._head=this._head+e+t+i&this._capacityMask,o=e;o>0;o--)this.unshift(this._list[s=s-1+i&this._capacityMask]);for(s=this._head-1+i&this._capacityMask;n>0;)this._list[s=s-1+i&this._capacityMask]=void 0,n--;e<0&&(this._tail=s)}else{for(this._tail=s,s=s+t+i&this._capacityMask,o=a-(t+e);o>0;o--)this.push(this._list[s++]);for(s=this._tail;n>0;)this._list[s=s+1+i&this._capacityMask]=void 0,n--}return this._head<2&&this._tail>1e4&&this._tail<=i>>>2&&this._shrinkArray(),r}}},z.prototype.splice=function(e,t){var r=e;if(r===(0|r)){var s=this.size();if(r<0&&(r+=s),!(r>s)){if(arguments.length>2){var n,a,i,o=arguments.length,l=this._list.length,c=2;if(!s||r<s/2){for(a=new Array(r),n=0;n<r;n++)a[n]=this._list[this._head+n&this._capacityMask];for(0===t?(i=[],r>0&&(this._head=this._head+r+l&this._capacityMask)):(i=this.remove(r,t),this._head=this._head+r+l&this._capacityMask);o>c;)this.unshift(arguments[--o]);for(n=r;n>0;n--)this.unshift(a[n-1])}else{var u=(a=new Array(s-(r+t))).length;for(n=0;n<u;n++)a[n]=this._list[this._head+r+t+n&this._capacityMask];for(0===t?(i=[],r!=s&&(this._tail=this._head+r+l&this._capacityMask)):(i=this.remove(r,t),this._tail=this._tail-u+l&this._capacityMask);c<o;)this.push(arguments[c++]);for(n=0;n<u;n++)this.push(a[n])}return i}return this.remove(r,t)}}},z.prototype.clear=function(){this._head=0,this._tail=0},z.prototype.isEmpty=function(){return this._head===this._tail},z.prototype.toArray=function(){return this._copyArray(!1)},z.prototype._fromArray=function(e){for(var t=0;t<e.length;t++)this.push(e[t])},z.prototype._copyArray=function(e){var t,r=[],s=this._list,n=s.length;if(e||this._head>this._tail){for(t=this._head;t<n;t++)r.push(s[t]);for(t=0;t<this._tail;t++)r.push(s[t])}else for(t=this._head;t<this._tail;t++)r.push(s[t]);return r},z.prototype._growArray=function(){this._head&&(this._list=this._copyArray(!0),this._head=0),this._tail=this._list.length,this._list.length<<=1,this._capacityMask=this._capacityMask<<1|1},z.prototype._shrinkArray=function(){this._list.length>>>=1,this._capacityMask>>>=1};var G=z;const V=Symbol.for("endTag"),B=e=>e instanceof Object&&"throw"===e[V];class H extends Promise{#r;#s;#n;#a;#i;#o;static[Symbol.toStringTag]="Future";static[Symbol.species]=Promise;constructor(e,t){let r,s;super(((e,t)=>{r=e,s=t})),this.#n=r,this.#a=s,this.#r=e,this.#s=!!t}eval(e,t){if(!this.#r){if(this.#o)throw this.#o;return this.#i}try{return this.#i=this.#r(),this.#n?.(this.#i),this.#i}catch(e){throw this.#o=e,this.#a?.(e),e}finally{this.#r=void 0,this.#n=void 0,this.#a=void 0,(e||t)&&super.then(e,t)}}then(e,t){if(this.#r&&!this.#s&&(e||t))try{this.eval()}catch(e){}return e||t?super.then(e,t):this}}class K extends U{}const W=new class{of(...e){return this.enhance(e)}async asArray(e){const t=S(e),r=[];for(;;){const e=await t.next();if(e.done)return r;r.push(e.value)}}limit(e,t){let r;async function*s(t){let s,n=!1;try{for(let r=0;r<e;r++){const e=await t.next(s);if(e.done)return e.value;try{s=yield e.value}catch(e){await(t.throw?.(e))}}n=!0;const a=new RangeError(`Generator produced excessive values > ${e}.`);throw await(t.throw?.(a)),a}finally{n||await(t.return?.(r?.returning))}}return t?r=this.enhance(s(S(t))):e=>this.enhance(s(S(e)))}forEach(e,t,r){const s=async(e,t,r)=>{const s=S(r);let n=0;for(;;){const r=await s.next();if(r.done)return;await e.call(t,r.value,n++)}};return r?s(e,t,r):g(t)?s(e,void 0,t):(r,n)=>s(e,n??t,r)}map(e,t,r){const s=(t,r)=>{const s=v(r);let n;return n=this.enhance(async function*(){let r,a=0;for(;;)for(;;)try{for(;;){const n=await s.next(r);if(n.done)return n.value;const i=await e.call(t,await n.value,a++);try{r=yield i}catch(e){await s.throw(e)}}}finally{if(!(await s.return(n?.returning)).done)break}}())};return r?s(t,r):g(t)?s(void 0,t):(e,r)=>s(r??t,e)}filter(e,t,r){const s=(t,r)=>{const s=v(r);let n;return n=this.enhance(async function*(e){let r,a=0;for(;;)for(;;)try{for(;;){const n=await s.next(r);if(n.done)return n.value;if(await e.call(t,n.value,a++))try{r=yield n.value}catch(e){await s.throw(e)}}}finally{if(!(await(s.return?.(n?.returning)))?.done)break}}(e))};return r?s(t,r):g(t)?s(void 0,t):(e,r)=>s(r??t,e)}flat(e,t){const r=(e,t)=>{let r;const s=new Set;return b(t)&&s.add(t),r=this.enhance(async function*e(t,n){let a;for(;;)for(;;)try{for(;;){const r=await t.next(a);if(r.done)return r.value;const i=r.value;b(i)&&s.add(i);try{n>0&&E(i)?yield*e(i,n-1):n>0&&(N(i)||O(i))?yield*e(S(i),n-1):a=yield r.value}catch(e){await(t.throw?.(e))}}}finally{const e=await(t.return?.(r?.returning));if(b(t)&&s.delete(t),e&&!e.done)break;for(const e of s)await e.return(r?.returning)}}(S(t),e))};if("number"==typeof e){if(t){if(g(t))return r(e,t);throw new TypeError(`Invalid Genable: ${t}`)}return t=>r(e,t)}if(g(e))return r(t??1,e);throw new TypeError("Illegal arguments to flat()")}flatMap(e,t,r){const s=(t,r)=>{let s,n=0;return s=this.enhance(async function*t(r,a){let i;for(;;)for(;;)try{for(;;){const s=await r.next(i);if(s.done)return s.value;const o=await e(s.value,n++);try{if(E(o))if(a>1)yield*t(o,a-1);else if(1===a){const e=S(o);yield*v(e)}else yield o;else N(o)||O(o)?a>1?yield*t(S(o),a-1):1===a?yield*v(o):yield o:i=yield o}catch(e){await(r.throw?.(e))}}}finally{const e=await(r.return?.(s?.returning));if(e&&!e.done)break}}(S(r),t))};return g(r)?s(t??1,r):g(t)?s(1,t):(e,r)=>s(t??r??1,e)}slice(e,t,r){const s=r=>{const s=S(r);return this.enhance(async function*(e,t){for(let t=0;t<e;t++){const e=await s.next();if(e.done)return e.value}if(t===Number.POSITIVE_INFINITY)yield*I(s);else{let r;for(;;)try{for(let n=e;n<t;n++){const t=await s.next(r);if(t.done)return t.value;try{r=yield t.value}catch(e){const t=await(s.throw?.(e));if(t){if(t.done)return t.value;r=yield t.value}}}}finally{const e=await(s.return?.());if(e&&!e.done)break}}}(e,t))};return r?s(r):s}concat(...e){let t;return t=this.enhance(async function*(){let r=0;try{for(;r<e.length;r++){const t=I(e[r]);yield*t}}finally{for(;r<e.length;r++){const s=e[r];b(s)&&await s.return(t?.returning)}}}())}reduce(e,t,r){const s=async(t,r)=>{let s=await t;if(void 0===s){const e=await r.next();if(e.done)throw new TypeError("No initial value in reduce");s=e.value}for(;;){const t=await r.next();if(t.done)return s;s=await e(s,t.value)}};return g(r)?s(t,S(r)):g(t)?s(void 0,S(t)):(e,r)=>s(r??t,S(e))}some(e,t,r){const s=async(t,r)=>{let s=0;for(;;){const n=await r.next();if(n.done)return!1;if(e.call(t,n.value,s++))return!0}};if(g(r))return s(t,S(r));if(g(r))return(e,r)=>s(r??t,S(e));throw new Error(`Invalid argument to some: ${r??t}`)}every(e,t,r){const s=async(t,r)=>{let s=0;for(;;){const n=await r.next();if(n.done)return!0;if(!e.call(t,n.value,s++))return!1}};if(g(r))return s(t,S(r));if(d(r))return(e,r)=>s(r??t,S(e));throw new Error(`Invalid argument to every: ${r??t}`)}repeatLast(e,t=Number.POSITIVE_INFINITY){const r=S(e);let s,n;return n=this.enhance(async function*(){try{let e;for(;;){const t=await r.next(s);if(t.done)break;try{s=yield e=t.value}catch(t){const s=await(r.throw?.(t));if(s){if(s.done)break;yield e=s.value}}}for(let r=0;r<t;r++)yield await e}finally{await(r.return?.(n?.returning))}}())}repeat(e,t=Number.POSITIVE_INFINITY){return this.enhance(async function*(){for(let r=0;r<t;r++)yield await e}())}zip(...e){if(0===e.length)return this.enhance([]);const t=e.map(S);let r,s=!1;return r=this.enhance(async function*(){try{for(;;){let r=[];for(const e of t){const t=await e.next();if(t.done)return s=!0,t.value;r.push(t.value)}try{yield r}catch(t){for(const r of e)try{await(r.throw?.(t))}catch{}throw t}}}finally{if(!s)for(const t of e)try{await(t.return?.(r?.returning))}catch{}}}())}join(e,t){return"string"==typeof e?(t=e,e=>this.join(e,t)):Promise.resolve(this.enhance(e).asArray()).then((e=>e.join(t)))}merge(...e){let t,r;const s=new Promise((e=>r=e));let n,a=e.length;const i=new Promise((()=>null));let o=[];return n=[...e.map((async(e,t)=>{const s=S(e);o[t]=s;const l=async e=>()=>{if(e.done)return n[t]=i,--a>0?null:(r(e),e);{const r=s.next().then(l);return n[t]=r,e}};return await s.next().then(l)})),s],t=this.enhance(async function*(){try{let r;for(;a;){const e=[];n.forEach((t=>e.push(t)));const t=await await Promise.race(e);if("function"==typeof t){let e=t();if(e){if(e.done)return e.value;r=yield e.value}}else if(t&&t.done)return t.value}}finally{if(a)for(let r=0;r<e.length;r++)(null===n[r]?null:o[r])?.return?.(t?.returning)}}())}sort(e){return async(...t)=>(await this.merge(...t).asArray()).sort(e)}enhance(e){const t=v(e),r=Object.getPrototypeOf(t),s=Object.assign(Object.create(K.prototype),r);return s.return=e=>(t.returning=e,r.return.call(t,e)),s[Symbol.asyncIterator]=()=>t,Object.setPrototypeOf(t,s),t}};var X,J;(X||(X={})).Mixin=function(e){class t extends e{#e=void 0;constructor(...e){super(...e)}#t(){return W.enhance(this[Symbol.asyncIterator]())}asArray(){return this.#t().asArray()}limit(e){return this.#t().limit(e)}forEach(e,t){return this.#t().forEach(e,t)}map(e,t){return this.#t().map(e,t)}filter(e,t){return this.#t().filter(e,t)}flat(e=1){return this.#t().flat(e)}flatMap(e,t=1){return this.#t().flatMap(e,t)}slice(e=0,t=Number.MAX_SAFE_INTEGER){return this.#t().slice(e,t)}concat(...e){return this.#t().concat(...e)}reduce(e,t){return this.#t().reduce(e,t)}some(e,t){return this.#t().some(e,t)}every(e,t){return this.#t().every(e,t)}repeatLast(e=Number.MAX_SAFE_INTEGER){return this.#t().repeatLast(e)}repeat(e,t=Number.MAX_SAFE_INTEGER){return this.#t().repeat(e,t)}join(e=""){return this.#t().join(e)}sort(e){return this.#t().sort(e)}get[Symbol.toStringTag](){try{return this.#e??(this.#e=`Async.Mixin(${e.name})`)}catch{return`Async.Mixin(${e.name}).prototype`}}}return t};class Z{#r;constructor(e,t){this.#r=e.bind(this,...t)}[Symbol.asyncIterator](){return W.enhance(v(this.#r()))}}class Q extends(X.Mixin(Z)){constructor(e,t){super(e,t)}}(J||(J={})).wrap=(e,...t)=>new Q(e,t);const ee=Object.getPrototypeOf(async function*(){}());var te;Object.setPrototypeOf(K.prototype,(e=>{const t=Object.create(e);return(e=>{for(const r of Reflect.ownKeys(e))"constructor"!==r&&(t[r]=e[r])})(U.prototype),t})(ee)),Object.defineProperty(K.prototype,"_impl",{value:W,writable:!1,enumerable:!1,configurable:!1}),function(e){e.asArray=W.asArray.bind(W),e.concat=W.concat.bind(W),e.every=W.every.bind(W),e.filter=W.filter.bind(W),e.flat=W.flat.bind(W),e.flatMap=W.flatMap.bind(W),e.forEach=W.forEach.bind(W),e.join=W.join.bind(W),e.limit=W.limit.bind(W),e.map=W.map.bind(W),e.merge=W.merge.bind(W),e.of=W.of.bind(W),e.reduce=W.reduce.bind(W),e.repeat=W.repeat.bind(W),e.repeatLast=W.repeatLast.bind(W),e.slice=W.slice.bind(W),e.some=W.some.bind(W),e.sort=W.sort.bind(W),e.zip=W.zip.bind(W),e.enhance=W.enhance.bind(W),e.Mixin=X.Mixin,e.wrap=J.wrap}(te||(te={}));var re=Object.freeze({__proto__:null,get Async(){return te},EnhancedAsyncGenerator:K,EnhancedGenerator:$,Future:H,get Sync(){return q},delay:(e,t)=>new Promise((r=>setTimeout((()=>r(t)),e))),doCatch:k,eventToGenerator:(e=(()=>new G))=>{let t=()=>{},r=null;const s=e(),n=e=>(s.push(e),t());return[async function*(){for(;;){for(;!s.length;)r=new Promise((e=>t=e)),await r,r=null,t=()=>{};const n=s.shift();if((e=n)instanceof Object&&"return"===e[V])return n.value;if(B(n))throw n.value;yield n}var e}(),new class{send(e){return n(e)}end(e){return n({[V]:"return",value:e})}throw(e){return n({[V]:"throw",value:e})}clear(){return s.clear()}}]},isAsyncGenable:g,isAsyncGenerator:b,isAsyncIterable:N,isAsyncIterableIterator:e=>E(e)&&N(e),isAsyncIterator:E,isGenable:d,isGenerator:x,isIterable:O,isIterableIterator:e=>C(e)&&O(e),isIterator:C,queue1:()=>{let e,t=!0;return new class{get length(){return t?0:1}push(r){return t=!1,e=r,1}shift(){t=!0;const r=e;return e=void 0,r}clear(){t=!0,e=void 0}}},queueNewest:(e=1)=>()=>{const t=new G;return new class{get length(){return t.length}push(r){for(;t.length>=e;)t.shift();return t.push(r)}shift(){return t.shift()}clear(){return t.clear()}}},queueOldest:(e=1)=>()=>{const t=new G;return new class{get length(){return t.length}push(r){return t.length<e?t.push(r):t.length}shift(){return t.shift()}clear(){return t.clear()}}},queueSticky:()=>{let e,t=!0;return new class{get length(){return t?0:1}push(r){return t=!1,e=r,1}shift(){return e}clear(){t=!0,e=void 0}}},queueUnique:e=>{const t=(e,t)=>()=>{const r=new Map;let s=null;return new class{get length(){return r.size}push(s){const n=t(s);return e?(r.delete(n),r.set(n,s)):r.has(n)||r.set(n,s),r.size}shift(){s||(s=r.values());const e=s.next();if(!e.done)return e.value;s=null}clear(){return r.clear()}}};return void 0===e?t(!1,(e=>e)):t(!!e.newest,e.keyFn||(e=>e))},queueUpdateShallow:(e={})=>()=>{const t={...e};let r={},s=!1;return new class{get length(){return s?1:0}push(e){const n=n=>Object.keys(n).forEach((n=>{t[n]!==e[n]&&(r[n]=e[n],s=!0)}));return n(t),n(e),1}shift(){try{return r}finally{Object.assign(t,r),this.clear()}}clear(){r={},s=!1}}},range:L,toAsyncGenerator:v,toAsyncIterable:I,toAsyncIterableIterator:function(e){if(N(e)&&E(e))return e;if(N(e)){let t;const r=()=>t??(t=e[Symbol.asyncIterator]()),s={[Symbol.asyncIterator]:()=>s,next:()=>r().next(),return:r().return&&(e=>r().return(e)),throw:r().throw&&(e=>r().throw(e))};return s}if(O(e))return M(e);if(E(e)){const t={[Symbol.asyncIterator]:()=>t,next:t=>e.next(t),return:e.return&&(t=>e.return(t)),throw:e.throw&&(t=>e.throw(t))};return t}throw new Error(`Not iterator nor iterable: ${e}`)},toAsyncIterator:S,toGenerator:_,toIterable:A,toIterableIterator:function(e){if(O(e)&&C(e))return e;if(O(e)){let t;const r=()=>t??(t=e[Symbol.iterator]()),s={[Symbol.iterator]:()=>s,next:e=>r().next(e),return:r().return&&(e=>r().return(e)),throw:r().throw&&(e=>r().throw(e))};return s}if(C(e)){const t={[Symbol.iterator]:()=>t,next:t=>e.next(t),return:e.return&&(t=>e.return(t)),throw:e.throw&&(t=>e.throw(t))};return t}throw new Error(`Not iterator nor iterable: ${e}`)},toIterator:w});const se=Symbol("MARK"),ne=e=>e,ae=e=>"string"==typeof e?t=>t[e]:e;class ie{key;constructor(e){this.key=e}}class oe extends ie{constructor(e){super(e)}add(e){}value(){return[this.key]}}class le extends ie{list=[];add(e){this.list.push(e)}value(){return[this.list]}}var ce,ue="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},pe={exports:{}};ce=pe,function(){var e,t,r,s,n,a,i,o,l,c,u,p,h,m,f;r=Math.floor,c=Math.min,t=function(e,t){return e<t?-1:e>t?1:0},l=function(e,s,n,a,i){var o;if(null==n&&(n=0),null==i&&(i=t),n<0)throw new Error("lo must be non-negative");for(null==a&&(a=e.length);n<a;)i(s,e[o=r((n+a)/2)])<0?a=o:n=o+1;return[].splice.apply(e,[n,n-n].concat(s)),s},a=function(e,r,s){return null==s&&(s=t),e.push(r),m(e,0,e.length-1,s)},n=function(e,r){var s,n;return null==r&&(r=t),s=e.pop(),e.length?(n=e[0],e[0]=s,f(e,0,r)):n=s,n},o=function(e,r,s){var n;return null==s&&(s=t),n=e[0],e[0]=r,f(e,0,s),n},i=function(e,r,s){var n;return null==s&&(s=t),e.length&&s(e[0],r)<0&&(r=(n=[e[0],r])[0],e[0]=n[1],f(e,0,s)),r},s=function(e,s){var n,a,i,o,l,c;for(null==s&&(s=t),l=[],a=0,i=(o=function(){c=[];for(var t=0,s=r(e.length/2);0<=s?t<s:t>s;0<=s?t++:t--)c.push(t);return c}.apply(this).reverse()).length;a<i;a++)n=o[a],l.push(f(e,n,s));return l},h=function(e,r,s){var n;if(null==s&&(s=t),-1!==(n=e.indexOf(r)))return m(e,0,n,s),f(e,n,s)},u=function(e,r,n){var a,o,l,c,u;if(null==n&&(n=t),!(o=e.slice(0,r)).length)return o;for(s(o,n),l=0,c=(u=e.slice(r)).length;l<c;l++)a=u[l],i(o,a,n);return o.sort(n).reverse()},p=function(e,r,a){var i,o,u,p,h,m,f,y,d;if(null==a&&(a=t),10*r<=e.length){if(!(u=e.slice(0,r).sort(a)).length)return u;for(o=u[u.length-1],p=0,m=(f=e.slice(r)).length;p<m;p++)a(i=f[p],o)<0&&(l(u,i,0,null,a),u.pop(),o=u[u.length-1]);return u}for(s(e,a),d=[],h=0,y=c(r,e.length);0<=y?h<y:h>y;0<=y?++h:--h)d.push(n(e,a));return d},m=function(e,r,s,n){var a,i,o;for(null==n&&(n=t),a=e[s];s>r&&n(a,i=e[o=s-1>>1])<0;)e[s]=i,s=o;return e[s]=a},f=function(e,r,s){var n,a,i,o,l;for(null==s&&(s=t),a=e.length,l=r,i=e[r],n=2*r+1;n<a;)(o=n+1)<a&&!(s(e[n],e[o])<0)&&(n=o),e[r]=e[n],n=2*(r=n)+1;return e[r]=i,m(e,l,r,s)},e=function(){function e(e){this.cmp=null!=e?e:t,this.nodes=[]}return e.push=a,e.pop=n,e.replace=o,e.pushpop=i,e.heapify=s,e.updateItem=h,e.nlargest=u,e.nsmallest=p,e.prototype.push=function(e){return a(this.nodes,e,this.cmp)},e.prototype.pop=function(){return n(this.nodes,this.cmp)},e.prototype.peek=function(){return this.nodes[0]},e.prototype.contains=function(e){return-1!==this.nodes.indexOf(e)},e.prototype.replace=function(e){return o(this.nodes,e,this.cmp)},e.prototype.pushpop=function(e){return i(this.nodes,e,this.cmp)},e.prototype.heapify=function(){return s(this.nodes,this.cmp)},e.prototype.updateItem=function(e){return h(this.nodes,e,this.cmp)},e.prototype.clear=function(){return this.nodes=[]},e.prototype.empty=function(){return 0===this.nodes.length},e.prototype.size=function(){return this.nodes.length},e.prototype.clone=function(){var t;return(t=new e).nodes=this.nodes.slice(0),t},e.prototype.toArray=function(){return this.nodes.slice(0)},e.prototype.insert=e.prototype.push,e.prototype.top=e.prototype.peek,e.prototype.front=e.prototype.peek,e.prototype.has=e.prototype.contains,e.prototype.copy=e.prototype.clone,e}(),ce.exports=e}.call(ue);var he=pe.exports;const me=he,fe=e=>{if(e instanceof Error)throw e;throw new Error(e)},ye=e=>e.reduce(((e,t)=>(e[t.name]=t,e)),{}),de=(e,t=2)=>e.toLocaleString("en",{minimumFractionDigits:t,maximumFractionDigits:t,currency:"USD",style:"currency"}),ge=(e,t=3)=>`${(100*e).toLocaleString("en",{minimumFractionDigits:t,maximumFractionDigits:t})}%`,xe=(e,t)=>e.type===t,be=(e,t)=>xe(e,t)?e:fe(`Row not of type ${t}.`),_e=e=>{if(e instanceof Object)for(const t of Object.values(e)){try{Object.freeze(e)}catch{}_e(t)}return e},ve=e=>[...e.reduce(((e,t)=>(e.add(t),e)),new Set).keys()],we=(e,t)=>t?r=>t(r.reduce(((t,r)=>t+e(r)),0)):t=>t.reduce(((t,r)=>t+e(r)),0),Se=e=>e.value,Te=we(Se),Ae=(e,t)=>{const r=t=>t instanceof e?t:fe(`${t} is not an instance of ${t.name}`),s=t?s=>s instanceof e?s:r(t(s)):r;return[t=>t instanceof e,s,r]},Ie=(e,t,r)=>{const s=r=>e(r)?r:fe(`${r} is not ${t}`),n=r?t=>e(t)?t:s(r(t)):s;return[n,s]},Me=e=>"function"==typeof e,Ce=e=>e,Ee=e=>"number"==typeof e.value,[Oe,Ne]=Ie(Ee,"a monetary item"),ke=e=>"object"==typeof e,[Ue,$e]=Ie(ke,"an object"),Fe=e=>!0===e||!1===e,[je,Pe]=Ie(Fe,"true or false",(e=>!/^\s*(?:false|f)\s*$/i.test(e)&&(!!/^\s*(?:true|t)\s*$/i.test(e)||void 0)));function Re(e,t){return t?`${e}/${t}`:t=>`${e}/${t}`}const De=e=>Object.entries(e),Ye=e=>Object.keys(e);var qe;exports.UnequalAction=void 0,(qe=exports.UnequalAction||(exports.UnequalAction={}))[qe.END_ON_FIRST=0]="END_ON_FIRST",qe[qe.END_ON_LAST=1]="END_ON_LAST",qe[qe.ERROR=2]="ERROR";class Le extends ie{#l;#c;#u;#p;#h;constructor(e,t,r,s,n,a){super(e),this.#c=t;const i={};for(const s of t)i[s]=r[s](e);this.#l=i,this.#u=s,this.#h=n,this.#p=a}add(e){for(const t of this.#c){const r=this.#l[t],s=(0,this.#u[t])(e);r.add(s)}}value(){const e={};for(const t of this.#c){const r=this.#l[t];e[t]=r.value()[Symbol.iterator]()}const t=this.#c,r=this.#p,s=this.#h;return function*(){let n=!0,a=!1;for(;n;){n=!1;let i=s?[]:{};for(const s of t){const t=e[s]?.next();if(t)if(t.done){if(delete e[s],r===exports.UnequalAction.END_ON_FIRST)return;a=!0}else n=!0,i[s]=t.value}if(n){if(a&&r===exports.UnequalAction.ERROR)throw new Error("Unmatched result lengths in object aggregation merge");yield i}}}()}}class ze extends ie{#m=0;constructor(e){super(e),this.#m}add(e){null!=e&&(this.#m+=e)}value(){return[this.#m]}}class Ge extends ie{#f;#y;#d;constructor(e,t,r,s){super(e),this.#f=t,this.#y=r,this.#d=s??ae(r)}add(e){this.#f(e),this.#d(e)}value(){return[]}}var Ve;exports.CalendarUnit=void 0,(Ve=exports.CalendarUnit||(exports.CalendarUnit={})).year="year",Ve.semiannually="semiannually",Ve.quarter="quarter",Ve.month="month",Ve.semimonthly="semimonthly",Ve.biweekly="biweekly",Ve.week="week",Ve.day="day";const Be=e=>"number"==typeof e&&!isNaN(e)&&isFinite(e),He=(e,t)=>{const r=(({min:e,max:t,mod:r,minEx:s,maxEx:n})=>{const a=0|(void 0!==e?1:0)|(void 0!==t?2:0)|(s?4:0)|(n?8:0)|(void 0!==r?16:0);switch(a){case 0:case 4:case 8:case 12:return Be;case 1:case 9:return t=>Be(t)&&t>=e;case 2:case 6:return e=>Be(e)&&e<=t;case 3:return r=>Be(r)&&r>=e&&r<=t;case 5:case 13:return t=>Be(t)&&t>e;case 10:case 14:return e=>Be(e)&&e<t;case 7:return r=>Be(r)&&r>e&&r<=t;case 11:return r=>Be(r)&&r>=e&&r<t;case 15:return r=>Be(r)&&r>e&&r<t;case 16:case 20:case 24:case 28:return e=>Be(e)&&e/r%1==0;case 17:case 25:return t=>Be(t)&&t>=e&&t/r%1==0;case 18:case 22:return e=>Be(e)&&e<=t&&e/r%1==0;case 19:return s=>Be(s)&&s>=e&&s<=t&&s/r%1==0;case 21:case 29:return t=>Be(t)&&t>e&&t/r%1==0;case 26:case 30:return e=>Be(e)&&e<t&&e/r%1==0;case 23:return s=>Be(s)&&s>e&&s<=t&&s/r%1==0;case 27:return s=>Be(s)&&s>=e&&s<t&&s/r%1==0;case 31:return s=>Be(s)&&s>e&&s<t&&s/r%1==0;default:throw new Error(`Impossible ${a}`)}})(t),s=t=>r(t)?t:fe(`${t} is not a valid ${e}.`);return{is:r,as:s,to:e=>Be(e)?s(e):s(Number(e))}},{is:Ke,as:We,to:Xe}=He("Integer",{mod:1}),Je=Math.floor,Ze=Math.ceil,Qe=Math.round,et=Math.max,tt=Math.min,rt=e=>t=>Qe(t/e)*e,st=Math.trunc,nt=(()=>{let e;return(...t)=>(e||(e=we(We,We)),e(t))})(),at=e=>"string"==typeof e,{is:it,as:ot,to:lt}=He("Degrees",{min:0,max:360,maxEx:!0}),{is:ct,as:ut,to:pt}=He("Unit",{min:0,max:1}),{is:ht,as:mt,to:ft}=He("Probability",{min:0,max:1}),{is:yt,as:dt,to:gt}=He("Integer",{mod:1}),{is:xt,as:bt,to:_t}=He("Byte",{min:0,max:255,mod:1}),{is:vt,as:wt,to:St}=He("Money",{}),Tt=rt(.01),At=e=>wt(Tt(wt(e))),It=(...e)=>At(et(...e)),Mt=(...e)=>At(tt(...e)),Ct=At(0),{is:Et,as:Ot,to:Nt}=He("Rate",{min:-2,max:2,minEx:!0}),{is:kt,as:Ut,to:$t}=He("TaxRate",{min:0,max:1}),{is:Ft,as:jt,to:Pt}=He("Year",{min:1900,max:2300,mod:1}),{is:Rt,as:Dt,to:Yt}=He("Age",{min:0,max:130}),{is:qt,as:Lt,to:zt}=He("IAge",{min:0,max:130,mod:1}),Gt=e=>e,Vt={year:1,semiannually:2,quarter:4,month:12,semimonthly:24,biweekly:365.25/14,week:365.25/7,day:365.25};function Bt(e,t=0,r=1){return at(e)?vr(e):new Date(Date.UTC(gt(e),gt(t),gt(r),0,0,0,0))}const Ht=[[0,31,59,90,120,151,181,212,243,273,304,334,365],[0,31,60,91,121,152,182,213,244,274,305,335,366]],Kt=[[31,28,31,30,31,30,31,31,30,31,30,31],[31,29,31,30,31,30,31,31,30,31,30,31]],Wt=e=>e in exports.CalendarUnit,[Xt,Jt]=Ie(Wt,"a calendar unit"),Zt=e=>{if(e instanceof Object){const t=Object.keys(e);switch(t.length){case 0:default:return!1;case 1:return Wt(t[0])&&yt(e[t[0]]);case 2:return Wt(t[0])&&yt(e[t[0]])&&"totalDays"===t[1]&&yt(e.totalDays)||Wt(t[1])&&yt(e[t[1]])&&"totalDays"===t[0]&&yt(e.totalDays)}}return!1},[Qt,er]=Ie(Zt,"a CalendarInterval"),tr=e=>e.year?[exports.CalendarUnit.year,e.year]:e.semiannually?[exports.CalendarUnit.semiannually,e.semiannually]:e.quarter?[exports.CalendarUnit.quarter,e.quarter]:e.month?[exports.CalendarUnit.month,e.month]:e.semimonthly?[exports.CalendarUnit.semimonthly,e.semimonthly]:e.biweekly?[exports.CalendarUnit.biweekly,e.biweekly]:e.week?[exports.CalendarUnit.week,e.week]:e.day?[exports.CalendarUnit.day,e.day]:fe(`${JSON.stringify(e)} is not a CalendarInterval`),rr=e=>{if("object"==typeof e&&dr(e.date)&&yt(e.totalDays))for(const t in exports.CalendarUnit)if(yt(e[t]))return!0;return!1},[sr,nr]=Ie(rr,"a valid CalendarLength");function ar(e,t,r=1){if(Zt(t)){const[r,s]=tr(t);return ar(e,r,s)}const s=t,n=xr(e),a=n.getUTCFullYear(),i=n.getUTCMonth(),o=n.getUTCDate(),l=dt(r),[c,u,p]=(()=>{const e=e=>{const t=i+e;return[Je(t/12),t%12-i,0]};switch(s){case exports.CalendarUnit.year:return[l,0,0];case exports.CalendarUnit.semiannually:return e(6*l);case exports.CalendarUnit.quarter:return e(3*l);case exports.CalendarUnit.month:return e(l);case exports.CalendarUnit.semimonthly:return(e=>{const t=i+Je(e/2);return[Je(t/12),(o>=15&&1&e?t%12+1:t%12)-i,o>=15?1&e?1-o:0:1&e?14:0]})(l);case exports.CalendarUnit.biweekly:return[0,0,14*l];case exports.CalendarUnit.week:return[0,0,7*l];case exports.CalendarUnit.day:return[0,0,l]}throw new Error(`Unknown TimeInterval: ${s}`)})(),h=Bt(a+c,i+u,o);return p?new Date(h.getTime()+24*p*60*60*1e3):h}const ir=e=>String(e).padStart(2,"0"),or=e=>dr(e)?e.getUTCFullYear()-2e3+"}":cr(xr(e)),lr=e=>dr(e)?`'${e.getUTCFullYear()-2e3}}`:cr(xr(e)),cr=e=>dr(e)?`${e.getUTCFullYear()}}`:cr(xr(e)),ur=e=>dr(e)?`${e.getUTCFullYear()}-${ir(e.getUTCMonth()+1)}`:ur(xr(e)),pr=e=>dr(e)?`${e.getUTCFullYear()}-${ir(e.getUTCMonth()+1)}-${ir(e.getUTCDate())}`:pr(xr(e)),hr=e=>dr(e)?`${ir(e.getUTCHours())}:${ir(e.getUTCMinutes()+1)}:${ir(e.getUTCSeconds())}`:hr(xr(e)),mr=e=>dr(e)?`${pr(e)} ${hr(e)}`:mr(xr(e));function fr(e){if(e instanceof Date)return fr(e.getUTCFullYear());const t=jt(e);return t%4==0&&(t%100!=0||t%400==0)}const yr=e=>{switch(e){case exports.CalendarUnit.year:return e=>Bt(e.getUTCFullYear());case exports.CalendarUnit.quarter:return e=>Bt(e.getUTCFullYear(),3*Je(e.getUTCMonth()/3));case exports.CalendarUnit.month:return e=>Bt(e.getUTCFullYear(),e.getUTCMonth());case exports.CalendarUnit.week:throw new Error("'week' is not a meaningful unit to truncate a date to.");case exports.CalendarUnit.day:return e=>Bt(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}throw new Error(`Unknown TimeInterval: ${e}`)},dr=e=>e instanceof Date&&!isNaN(e.valueOf())&&0===e.getUTCHours()&&0===e.getUTCMinutes()&&0===e.getUTCSeconds()&&0===e.getUTCMilliseconds(),gr=yr(exports.CalendarUnit.day),[xr,br]=Ie(dr,"is not a UTC Date",(e=>e instanceof Date?gr(e):Bt(e))),_r=yr(exports.CalendarUnit.day),vr=e=>{const t=/^\s*(\d{4})(?:-(\d{1,2})(?:-(\d{1,2}))?)?\s*$/.exec(e);if(!t)throw new Error(`${e} is not a valid date. Must be in the form YYYY-01-23. Month and day are optional, default to 01.`);return Bt(Number(t[1]),Number(t[2]??1)-1,Number(t[3]??1))};class wr{start;end;constructor(e,t,r){if(this.start=xr(e),Wt(t))this.end=ar(this.start,t,r??1);else if(Zt(t)){const[e,r]=tr(t);this.end=ar(this.start,e,r)}else this.end=xr(t)}get length(){const e=this.end.getUTCFullYear()-this.start.getUTCFullYear(),t=this.end.getUTCMonth()-this.start.getUTCMonth(),r=this.end.getUTCDate()-this.start.getUTCDate(),s=fr(this.end),[n,a]=r<0?[t-1,r+Kt[s?1:0][this.end.getUTCMonth()]]:[t,r],[i,o]=n<0?[e-1,n+12]:[e,n],l=Je(r/7),c=a-7*l;return{...i&&{year:i},...o&&{month:o},...l&&{week:l},...c&&{day:c},totalDays:Je((this.end.getTime()-this.start.getTime())/864e5)}}range(e,t=1){return wr.calendarRange(this.start,this.end,e,void 0===t?void 0:dt(t))}toString(){return`${pr(this.start)} to ${pr(this.end)}`}static calendarRange}const[Sr,Tr,Ar]=Ae(wr,(e=>"object"==typeof e&&e.start&&e.end?new wr(e.start,e.end):void 0));class Ir extends wr{step;constructor(e,t,r=0){super(e,t),this.step=r}}const[Mr,Cr,Er]=Ae(Ir);class Or extends wr{interval;unit;n;constructor(e,t,r,s){super(e,t),this.interval={[r]:s??1},this.unit=r,this.n=s??1}[Symbol.iterator](){const e=this;return q.enhance(function*(){let t=e.start,r=0;for(;t<e.end;){const s=ar(t,e.unit,e.n);yield new Ir(t,s,r),t=s,r++}}())}}class Nr extends(q.Mixin(Or)){constructor(e,t,r,s){super(xr(e),xr(t),Nr.#g(r),Nr.#x(r,s))}static#g(e){if(Wt(e))return e;const[t,r]=tr(er(e));return t}static#x(e,t){if(Wt(e))return dt(t??1);{const[t,r]=tr(er(e));return r}}}function kr(e,t,r,s){return new Nr(e,t,r,void 0===s?void 0:dt(s))}const Ur=e=>(e.valueOf()-$r(e).valueOf())/864e5,$r=e=>Lr[e.getUTCFullYear()]??Bt(e.getUTCFullYear()),Fr=e=>fr(e)?366:365,jr=(e,t)=>{const r=Ur(e),s=Ur(t);fr(e.getUTCFullYear()),fr(t.getUTCFullYear());const n=t.getUTCFullYear(),a=n-e.getUTCFullYear(),i=Fr(r<60?n-1:n);return Dt(a+(s-r)/i)},Pr=_r(new Date),Rr=jt(Pr.getUTCFullYear());let Dr=jt(Rr+50);const Yr=Bt(Rr+100),qr=jt(Yr.getUTCFullYear()+1),Lr=L(Rr,qr).map((e=>Bt(e))).asArray(),zr=$r(Pr),Gr=new Date;let Vr=1===Gr.getUTCDate()?Bt(Gr.getUTCFullYear(),Gr.getUTCMonth()):Gr.getUTCMonth()<=11?Bt(Gr.getUTCFullYear(),Gr.getUTCMonth()+1):Bt(Gr.getUTCFullYear()+1,0),Br=Bt(Vr.getUTCFullYear()+50,Vr.getUTCMonth());class Hr{id;prettyName;start;end;scenario;categories;scenarios;name;type;notes;#e;sort;#b=void 0;constructor(e,t){this.type=e.type,this.name=e.name,this.id=`${this.type}/${this.name}`,this.prettyName=e.prettyName??e.name,this.scenario=t??this,this.start=e.start??t?.start??Vr,this.end=e.end,this.categories=e.categories??[],this.scenarios=e.scenarios?.length?e.scenarios:["Default"],this.notes=e.notes,this.sort=Number(e.sort||0)}set temporal(e){if(this.#b)throw new Error("Cannot reset .temporal");this.#b=e}get temporal(){return this.#b??fe(".temporal has not been set.")}get[Symbol.toStringTag](){try{return this.#e??(this.#e=`${this.type}[${this.name}]`)}catch{return`${this.constructor.name}.prototype`}}hasCategory(e){return!!this.categories.find((t=>t===e))}inScenario(e){return!!this.scenarios.find((t=>t===e))}static inScenario(e,t){return Array.isArray(t)?!!t.find((t=>t===e)):this.inScenario(e,t.scenarios)}}class Kr extends Hr{value;constructor(e,t){super(e,t),this.value=e.value}}function Wr(e){class t extends e{state;scenario;item;#e=void 0;constructor(e,t,r){super(e,t,r),this.item=e,this.scenario=t,this.state=r}get[Symbol.toStringTag](){try{return this.#e??(this.#e=`${this.type}State[${this.name} #${this.state?.step?.step??"??"}]`)}catch{return`${this.type}State.prototype`}}}return t}const Xr=(e,t,r)=>Wt(t)?Xr(e,Vt[t],r):Wt(r)?Xr(e,t,Vt[r]):r*Jr(e,t,r),Jr=(e,t,r)=>Wt(t)?Jr(e,Vt[t],r):Wt(r)?Jr(e,t,Vt[r]):Math.pow(1+e/t,t/r)-1,Zr=(e,t,r)=>Wt(t)?Zr(e,Vt[t],r):Wt(r)?Zr(e,t,Vt[r]):At(e*t/r);class Qr extends Kr{rate;rateType;paymentPeriod;constructor(e,t){super(e,t),this.rate=e.rate??0,this.rateType=e.rateType||exports.CalendarUnit.year,this.paymentPeriod=e.paymentPeriod||exports.CalendarUnit.year}*stepper(e,t){let r=this.value,s=e.start,n=Jr(this.rate,Jt(this.rateType),exports.CalendarUnit.month),a=Ct;for(;;){this.start,t.addTimeLine("interest",s,this,{amount:a,balance:r});const e=yield{value:r,interest:a,rate:n};n=e.rate,a=At(n*r),r=At(e.value+a),s=e.date}}}class es extends(Wr(Qr)){constructor(e,t,r){super(e,t,r)}}const[ts,rs,ss]=Ae(Qr);class ns extends Kr{paymentPeriod;constructor(e,t){super(e,t);const r=this.end||"incomeStream"===this.type||"incomeTax"===this.type;this.paymentPeriod=e.paymentPeriod??(r?exports.CalendarUnit.month:fe(`Missing payment period in ${this.id}`))}}class as extends ns{fromStream;constructor(e,t){super(e,t),this.fromStream=e.fromStream??fe(`fromStream must be specified for ${this.name}.`)}*stepper(e,t){let r=Zr(this.value,this.paymentPeriod,exports.CalendarUnit.month),s=e.start,n=Ct;for(;;){n=At(n+(s>=this.start?r:Ct));const e=n;t.addTimeLine("pay",s,this,{amount:e,balance:n});const a=yield{value:n,payment:e};n=a.value,s=a.date}}}class is extends(Wr(as)){constructor(e,t,r){super(e,t,r)}}const[os,ls,cs]=Ae(as);class us extends ns{constructor(e,t){super(e,t)}*stepper(e,t){let r=this.value,s=e.start;for(;;){const e=s>=this.start?r:Ct,n=e;t.addTimeLine("receive",s,this,{amount:n,balance:r});const a=yield{value:e,payment:n};r=At(this.value+a.value),s=a.date}}}class ps extends(Wr(us)){constructor(e,t,r){super(e,t,r)}}const[hs,ms,fs]=Ae(us),ys=(e,t)=>{for(const[r,s]of De(t))e[r]=At((e[r]??Ct)+(s??Ct))};class ds extends ns{#_;#v;constructor(e,t){super(e,t),this.#_=ds.parse(e.spec)}static parse(e,t){if("string"==typeof e){const r=e.replace(/[“”]/g,'"');if(/^["\[{]/.test(r))try{return JSON.parse(r)}catch(e){throw new Error(`Error parsing incomeStream ${t??"unknown"}: ${e.message}`)}}return e}get spec(){return this.#v??(this.#v=this.bind(this.#_))}bind(e){const t=e=>e.startsWith("@")?this.scenario.incomeStreams[e.substring(1)].id??fe(`There is no IncomeStream named ${e.substring(1)}`):(this.scenario.incomes[e]??this.scenario.assets[e]??this.scenario.liabilities[e])?.id??fe(`There is no income, asset, or liability named "${e}"`);if(at(e)){if(e.startsWith("@")){const t=e.substring(1);return this.scenario.incomeStreams[t].id}return t(e)}if(Array.isArray(e))return e.map((e=>this.bind(e)));if("object"==typeof e){const r={};let s=0;for(const t in e)s+=e[t];for(const n in e){r[t(n)]={weight:e[n]/s}}return r}throw new Error(`Unknown income stream spec: ${e}`)}withdraw(e,t,r){const s={},n=(e,a)=>{if(at(a)){const n=r[a]?.current;if(n){if(bs(n.item)){const{amount:a,sources:i}=n.item.withdraw(e,t,r);return ys(s,i),a}if(gs(n)){const t=n.item,r=Mt(e,n.value);return n.used=At((n.used??Ct)+r),"liability"===t.type?n.value=At(n.value+r):n.value=At(n.value-r),((e,t)=>{s[e]=At((s[e]??Ct)+t)})(t.id,r),r}throw new Error(`${a} is not a valid source of income.`)}return console.log(`The income source ${a} is not available at ${r.date}.`),Ct}if(Array.isArray(a)){let t=0;for(const r of a)if(t+=n(It(e-t,Ct),r),t>=e)break;return At(t)}if("object"==typeof a){const t=a;let r=0;for(const s in a)r+=n(At(e*t[s].weight),s);return At(r)}throw new Error(`Unknown spec: ${a}`)};return{id:t,amount:n(e,this.spec),sources:s}}*stepper(e,t){for(;;)yield{}}}const gs=e=>e.item&&("asset"===e.item.type||"liability"===e.item.type||"income"===e.item.type);class xs extends(Wr(ds)){constructor(e,t,r){super(e,t,r)}parse(e){return e}}const[bs,_s,vs]=Ae(ds);class ws extends ns{state;constructor(e,t){super(e,t),this.state=e.state}*stepper(e,t){for(;;)yield{}}}class Ss extends(Wr(ws)){constructor(e,t,r){super(e,t,r)}}const[Ts,As,Is]=Ae(ws);class Ms extends Kr{rate;rateType;payment;paymentPeriod;expense;constructor(e,t){super(e,t),this.rate=e.rate??0,this.rateType=e.rateType||exports.CalendarUnit.year,this.payment=e.payment??Ct,this.paymentPeriod=e.paymentPeriod??exports.CalendarUnit.month}*stepper(e,t){let r=this.value,s=e.start,n=Jr(this.rate,Jt(this.rateType),exports.CalendarUnit.month);for(;;){if(r<=0)return;const e=Mt(r,this.payment??Ct);t.addTimeLine("pay",s,this,{amount:e,balance:r});const a=At(n*r),i=At(e-a),o=s>=this.start?r:Ct;t.addTimeLine("interest",s,this,{amount:a,balance:o});const l=yield{value:o,interest:a,principal:i,payment:e,rate:n};r=At(l.value-i),s=l.date}}}class Cs extends(Wr(Ms)){constructor(e,t,r){super(e,t,r)}}const[Es,Os,Ns]=Ae(Ms);class ks extends Hr{text;constructor(e,t){super(e,t),this.text=e.text}*stepper(e,t){let r=e.start;for(;;){let e=r>=this.start?this.text:"";r=(yield{text:e}).date}}}class Us extends(Wr(ks)){constructor(e,t,r){super(e,t,r)}}const[$s,Fs,js]=Ae(ks);const Ps=[{age:0,male:{p:.006304,n:1e5,years:75.97},female:{p:.005229,n:1e5,years:80.96}},{age:1,male:{p:426e-6,n:99370,years:75.45},female:{p:342e-6,n:99477,years:80.39}},{age:2,male:{p:29e-5,n:99327,years:74.48},female:{p:209e-6,n:99443,years:79.42}},{age:3,male:{p:229e-6,n:99298,years:73.5},female:{p:162e-6,n:99422,years:78.43}},{age:4,male:{p:162e-6,n:99276,years:72.52},female:{p:143e-6,n:99406,years:77.45}},{age:5,male:{p:146e-6,n:99260,years:71.53},female:{p:125e-6,n:99392,years:76.46}},{age:6,male:{p:136e-6,n:99245,years:70.54},female:{p:113e-6,n:99379,years:75.47}},{age:7,male:{p:127e-6,n:99232,years:69.55},female:{p:104e-6,n:99368,years:74.47}},{age:8,male:{p:115e-6,n:99219,years:68.56},female:{p:97e-6,n:99358,years:73.48}},{age:9,male:{p:103e-6,n:99208,years:67.57},female:{p:93e-6,n:99348,years:72.49}},{age:10,male:{p:97e-6,n:99197,years:66.57},female:{p:92e-6,n:99339,years:71.5}},{age:11,male:{p:109e-6,n:99188,years:65.58},female:{p:98e-6,n:99330,years:70.5}},{age:12,male:{p:151e-6,n:99177,years:64.59},female:{p:113e-6,n:99320,years:69.51}},{age:13,male:{p:232e-6,n:99162,years:63.6},female:{p:138e-6,n:99309,years:68.52}},{age:14,male:{p:343e-6,n:99139,years:62.61},female:{p:172e-6,n:99295,years:67.53}},{age:15,male:{p:465e-6,n:99105,years:61.63},female:{p:211e-6,n:99278,years:66.54}},{age:16,male:{p:588e-6,n:99059,years:60.66},female:{p:251e-6,n:99257,years:65.55}},{age:17,male:{p:72e-5,n:99001,years:59.7},female:{p:293e-6,n:99232,years:64.57}},{age:18,male:{p:858e-6,n:98929,years:58.74},female:{p:336e-6,n:99203,years:63.59}},{age:19,male:{p:999e-6,n:98845,years:57.79},female:{p:379e-6,n:99170,years:62.61}},{age:20,male:{p:.001146,n:98746,years:56.85},female:{p:425e-6,n:99132,years:61.63}},{age:21,male:{p:.001288,n:98633,years:55.91},female: