diff --git a/LICENSE b/LICENSE index d3bec000..d1c0ae64 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018-2021 Jakub T. Jankiewicz +Copyright (c) 2018-2023 Jakub T. Jankiewicz Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index 00e2a259..8c8d3644 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ .PHONY: publish test coveralls lint zero coverage -VERSION=1.0.0-beta.17 +VERSION=1.0.0-beta.17.1 VERSION_DASH=`echo -n "1.0.0-beta.17" | sed "s/-/%E2%80%93/"` BRANCH=`git branch | grep '^*' | sed 's/* //'` DATE=`date -uR` diff --git a/README.md b/README.md index 9c8293e5..717cdd99 100644 --- a/README.md +++ b/README.md @@ -313,6 +313,6 @@ They should be loaded as R7RS libraries in final 1.0.0 version ## License Released under [MIT](http://opensource.org/licenses/MIT) license
-Copyright (c) 2018-2021 [Jakub T. Jankiewicz](https://jcubic.pl/me) +Copyright (c) 2018-2023 [Jakub T. Jankiewicz](https://jcubic.pl/me) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fjcubic%2Flips.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fjcubic%2Flips?ref=badge_large) diff --git a/dist/lips.js b/dist/lips.js index 81277433..ef09ceb2 100644 --- a/dist/lips.js +++ b/dist/lips.js @@ -4,11 +4,11 @@ * | | \ \ | | | || . \/ __> | | * | | > \ | |_ | || _/\__ \ | | * | | / ^ \ |___||_||_| <___/ | | - * \_\ /_/ \_\ /_/ v. 1.0.0-beta.17 + * \_\ /_/ \_\ /_/ v. 1.0.0-beta.17.1 * * LIPS is Pretty Simple - Scheme based Powerful LISP in JavaScript * - * Copyright (c) 2018-2021 Jakub T. Jankiewicz + * Copyright (c) 2018-2023 Jakub T. Jankiewicz * Released under the MIT license * * includes: @@ -31,7 +31,7 @@ * Copyright (c) 2014-present, Facebook, Inc. * released under MIT license * - * build: Sat, 23 Dec 2023 13:43:06 +0000 + * build: Sat, 23 Dec 2023 13:55:55 +0000 */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : @@ -5777,7 +5777,7 @@ * * LIPS is Pretty Simple - Scheme based powerful LISP in JavaScript * - * Copyright (c) 2018-2021 Jakub T. Jankiewicz + * Copyright (c) 2018-2023 Jakub T. Jankiewicz * Released under the MIT license * * Includes: @@ -5799,7 +5799,7 @@ * The rationalize algorithm is by Per M.A. Bothner, Alan Bawden and Marc Feeley. * source: Kawa, C-Gambit * - * Build time: Sat, 23 Dec 2023 13:43:06 +0000 + * Build time: Sat, 23 Dec 2023 13:55:55 +0000 */ var _excluded = ["token"], _excluded2 = ["stderr", "stdin", "stdout", "command_line"]; @@ -17240,17 +17240,17 @@ // ------------------------------------------------------------------------- var banner = function () { // Rollup tree-shaking is removing the variable if it's normal string because - // obviously 'Sat, 23 Dec 2023 13:43:06 +0000' == '{{' + 'DATE}}'; can be removed + // obviously 'Sat, 23 Dec 2023 13:55:55 +0000' == '{{' + 'DATE}}'; can be removed // but disabling Tree-shaking is adding lot of not used code so we use this // hack instead - var date = LString('Sat, 23 Dec 2023 13:43:06 +0000').valueOf(); + var date = LString('Sat, 23 Dec 2023 13:55:55 +0000').valueOf(); var _date = date === '{{' + 'DATE}}' ? new Date() : new Date(date); var _format = function _format(x) { return x.toString().padStart(2, '0'); }; var _year = _date.getFullYear(); var _build = [_year, _format(_date.getMonth() + 1), _format(_date.getDate())].join('-'); - var banner = "\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter 1.0.0-beta.17 (".concat(_build, ") \nCopyright (c) 2018-").concat(_year, " Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specific function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/, ''); + var banner = "\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter 1.0.0-beta.17.1 (".concat(_build, ") \nCopyright (c) 2018-").concat(_year, " Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specific function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/, ''); return banner; }(); // ------------------------------------------------------------------------- @@ -17281,9 +17281,9 @@ read_only(QuotedPromise, '__class__', 'promise'); // ------------------------------------------------------------------------- var lips = { - version: '1.0.0-beta.17', + version: '1.0.0-beta.17.1', banner: banner, - date: 'Sat, 23 Dec 2023 13:43:06 +0000', + date: 'Sat, 23 Dec 2023 13:55:55 +0000', exec: exec, // unwrap async generator into Promise parse: compose(uniterate_async, parse), diff --git a/dist/lips.min.js b/dist/lips.min.js index a0ad61e3..bfe08165 100644 --- a/dist/lips.min.js +++ b/dist/lips.min.js @@ -4,11 +4,11 @@ * | | \ \ | | | || . \/ __> | | * | | > \ | |_ | || _/\__ \ | | * | | / ^ \ |___||_||_| <___/ | | - * \_\ /_/ \_\ /_/ v. 1.0.0-beta.17 + * \_\ /_/ \_\ /_/ v. 1.0.0-beta.17.1 * * LIPS is Pretty Simple - Scheme based Powerful LISP in JavaScript * - * Copyright (c) 2018-2021 Jakub T. Jankiewicz + * Copyright (c) 2018-2023 Jakub T. Jankiewicz * Released under the MIT license * * includes: @@ -31,7 +31,7 @@ * Copyright (c) 2014-present, Facebook, Inc. * released under MIT license * - * build: Sat, 23 Dec 2023 13:43:06 +0000 + * build: Sat, 23 Dec 2023 13:55:55 +0000 */ (function(e,t){typeof exports==="object"&&typeof module!=="undefined"?module.exports=t():typeof define==="function"&&define.amd?define(t):(e=typeof globalThis!=="undefined"?globalThis:e||self,e.lips=t())})(this,function(){"use strict";function i(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return e}function o(e,t){o=Object.setPrototypeOf||function e(t,r){t.__proto__=r;return t};return o(e,t)}function n(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(e){return false}}function p(e,t,r){if(n()){p=Reflect.construct}else{p=function e(t,r,n){var i=[null];i.push.apply(i,r);var u=Function.bind.apply(t,i);var a=new u;if(n)o(a,n.prototype);return a}}return p.apply(null,arguments)}function u(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function")}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:true,configurable:true}});Object.defineProperty(e,"prototype",{writable:false});if(t)o(e,t)}function _(e){"@babel/helpers - typeof";return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function a(e,t){if(t&&(_(t)==="object"||typeof t==="function")){return t}else if(t!==void 0){throw new TypeError("Derived constructors may only return object or undefined")}return i(e)}function c(e){c=Object.setPrototypeOf?Object.getPrototypeOf:function e(t){return t.__proto__||Object.getPrototypeOf(t)};return c(e)}function r(e){if(Array.isArray(e))return e}function t(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function f(e,t){if(t==null||t>e.length)t=e.length;for(var r=0,n=new Array(t);r=0)continue;r[i]=e[i]}return r}function F(e,t){if(e==null)return{};var r=x(e,t);var n,i;if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(i=0;i=0)continue;if(!Object.prototype.propertyIsEnumerable.call(e,n))continue;r[n]=e[n]}}return r}function k(e,t){var r=e==null?null:typeof Symbol!=="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(r==null)return;var n=[];var i=true;var u=false;var a,o;try{for(r=r.call(e);!(i=(a=r.next()).done);i=true){n.push(a.value);if(t&&n.length===t)break}}catch(e){u=true;o=e}finally{try{if(!i&&r["return"]!=null)r["return"]()}finally{if(u)throw o}}return n}function j(e,t){return r(e)||k(e,t)||l(e,t)||d()}function I(e){this.wrapped=e}function P(e){return new I(e)}function N(u){var a,o;function e(n,i){return new Promise(function(e,t){var r={key:n,arg:i,resolve:e,reject:t,next:null};if(o){o=o.next=r}else{a=o=r;s(n,i)}})}function s(t,e){try{var r=u[t](e);var n=r.value;var i=n instanceof I;Promise.resolve(i?n.wrapped:n).then(function(e){if(i){s(t==="return"?"return":"next",e);return}c(r.done?"return":"normal",e)},function(e){s("throw",e)})}catch(e){c("throw",e)}}function c(e,t){switch(e){case"return":a.resolve({value:t,done:true});break;case"throw":a.reject(t);break;default:a.resolve({value:t,done:false});break}a=a.next;if(a){s(a.key,a.arg)}else{o=null}}this._invoke=e;if(typeof u["return"]!=="function"){this["return"]=undefined}}N.prototype[typeof Symbol==="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this};N.prototype.next=function(e){return this._invoke("next",e)};N.prototype["throw"]=function(e){return this._invoke("throw",e)};N.prototype["return"]=function(e){return this._invoke("return",e)};function e(e){return function(){return new N(e.apply(this,arguments))}}function R(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e["default"]:e}var T={exports:{}};var V={exports:{}};(function(e){var t=function(a){var e=Object.prototype;var f=e.hasOwnProperty;var s;var o=typeof Symbol==="function"?Symbol:{};var i=o.iterator||"@@iterator";var c=o.asyncIterator||"@@asyncIterator";var p=o.toStringTag||"@@toStringTag";function r(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true});return e[t]}try{r({},"")}catch(e){r=function(e,t,r){return e[t]=r}}function _(e,t,r,n){var i=t&&t.prototype instanceof g?t:g;var u=Object.create(i.prototype);var a=new O(n||[]);u._invoke=x(e,r,a);return u}a.wrap=_;function d(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}var v="suspendedStart";var y="suspendedYield";var m="executing";var l="completed";var h={};function g(){}function n(){}function t(){}var b={};r(b,i,function(){return this});var w=Object.getPrototypeOf;var D=w&&w(w(S([])));if(D&&D!==e&&f.call(D,i)){b=D}var u=t.prototype=g.prototype=Object.create(b);n.prototype=t;r(u,"constructor",t);r(t,"constructor",n);n.displayName=r(t,p,"GeneratorFunction");function E(e){["next","throw","return"].forEach(function(t){r(e,t,function(e){return this._invoke(t,e)})})}a.isGeneratorFunction=function(e){var t=typeof e==="function"&&e.constructor;return t?t===n||(t.displayName||t.name)==="GeneratorFunction":false};a.mark=function(e){if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}else{e.__proto__=t;r(e,p,"GeneratorFunction")}e.prototype=Object.create(u);return e};a.awrap=function(e){return{__await:e}};function A(o,s){function c(e,t,r,n){var i=d(o[e],o,t);if(i.type==="throw"){n(i.arg)}else{var u=i.arg;var a=u.value;if(a&&typeof a==="object"&&f.call(a,"__await")){return s.resolve(a.__await).then(function(e){c("next",e,r,n)},function(e){c("throw",e,r,n)})}return s.resolve(a).then(function(e){u.value=e;r(u)},function(e){return c("throw",e,r,n)})}}var t;function e(r,n){function e(){return new s(function(e,t){c(r,n,e,t)})}return t=t?t.then(e,e):e()}this._invoke=e}E(A.prototype);r(A.prototype,c,function(){return this});a.AsyncIterator=A;a.async=function(e,t,r,n,i){if(i===void 0)i=Promise;var u=new A(_(e,t,r,n),i);return a.isGeneratorFunction(t)?u:u.next().then(function(e){return e.done?e.value:u.next()})};function x(a,o,s){var c=v;return function e(t,r){if(c===m){throw new Error("Generator is already running")}if(c===l){if(t==="throw"){throw r}return B()}s.method=t;s.arg=r;while(true){var n=s.delegate;if(n){var i=F(n,s);if(i){if(i===h)continue;return i}}if(s.method==="next"){s.sent=s._sent=s.arg}else if(s.method==="throw"){if(c===v){c=l;throw s.arg}s.dispatchException(s.arg)}else if(s.method==="return"){s.abrupt("return",s.arg)}c=m;var u=d(a,o,s);if(u.type==="normal"){c=s.done?l:y;if(u.arg===h){continue}return{value:u.arg,done:s.done}}else if(u.type==="throw"){c=l;s.method="throw";s.arg=u.arg}}}}function F(e,t){var r=e.iterator[t.method];if(r===s){t.delegate=null;if(t.method==="throw"){if(e.iterator["return"]){t.method="return";t.arg=s;F(e,t);if(t.method==="throw"){return h}}t.method="throw";t.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var n=d(r,e.iterator,t.arg);if(n.type==="throw"){t.method="throw";t.arg=n.arg;t.delegate=null;return h}var i=n.arg;if(!i){t.method="throw";t.arg=new TypeError("iterator result is not an object");t.delegate=null;return h}if(i.done){t[e.resultName]=i.value;t.next=e.nextLoc;if(t.method!=="return"){t.method="next";t.arg=s}}else{return i}t.delegate=null;return h}E(u);r(u,p,"Generator");r(u,i,function(){return this});r(u,"toString",function(){return"[object Generator]"});function k(e){var t={tryLoc:e[0]};if(1 in e){t.catchLoc=e[1]}if(2 in e){t.finallyLoc=e[2];t.afterLoc=e[3]}this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal";delete t.arg;e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}];e.forEach(k,this);this.reset(true)}a.keys=function(r){var n=[];for(var e in r){n.push(e)}n.reverse();return function e(){while(n.length){var t=n.pop();if(t in r){e.value=t;e.done=false;return e}}e.done=true;return e}};function S(t){if(t){var e=t[i];if(e){return e.call(t)}if(typeof t.next==="function"){return t}if(!isNaN(t.length)){var r=-1,n=function e(){while(++r=0;--t){var i=this.tryEntries[t];var u=i.completion;if(i.tryLoc==="root"){return e("end")}if(i.tryLoc<=this.prev){var a=f.call(i,"catchLoc");var o=f.call(i,"finallyLoc");if(a&&o){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&f.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e){this.complete(r.completion,r.afterLoc);C(r);return h}}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(n.type==="throw"){var i=n.arg;C(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){this.delegate={iterator:S(e),resultName:t,nextLoc:r};if(this.method==="next"){this.arg=s}return h}};return a}(e.exports);try{regeneratorRuntime=t}catch(e){if(typeof globalThis==="object"){globalThis.regeneratorRuntime=t}else{Function("r","regeneratorRuntime = r")(t)}}})(V);(function(e){e.exports=V.exports})(T);var z=R(T.exports);var $=typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{};var J=[];var K=[];var G=typeof Uint8Array!=="undefined"?Uint8Array:Array;var H=false;function W(){H=true;var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var t=0,r=e.length;t0){throw new Error("Invalid string. Length must be a multiple of 4")}u=e[o-2]==="="?2:e[o-1]==="="?1:0;a=new G(o*3/4-u);n=u>0?o-4:o;var s=0;for(t=0,r=0;t>16&255;a[s++]=i>>8&255;a[s++]=i&255}if(u===2){i=K[e.charCodeAt(t)]<<2|K[e.charCodeAt(t+1)]>>4;a[s++]=i&255}else if(u===1){i=K[e.charCodeAt(t)]<<10|K[e.charCodeAt(t+1)]<<4|K[e.charCodeAt(t+2)]>>2;a[s++]=i>>8&255;a[s++]=i&255}return a}function Z(e){return J[e>>18&63]+J[e>>12&63]+J[e>>6&63]+J[e&63]}function X(e,t,r){var n;var i=[];for(var u=t;us?s:o+a))}if(n===1){t=e[r-1];i+=J[t>>2];i+=J[t<<4&63];i+="=="}else if(n===2){t=(e[r-2]<<8)+e[r-1];i+=J[t>>10];i+=J[t>>4&63];i+=J[t<<2&63];i+="="}u.push(i);return u.join("")}function te(e,t,r,n,f){var i,u;var l=f*8-n-1;var h=(1<>1;var a=-7;var o=r?f-1:0;var s=r?-1:1;var c=e[t+o];o+=s;i=c&(1<<-a)-1;c>>=-a;a+=l;for(;a>0;i=i*256+e[t+o],o+=s,a-=8){}u=i&(1<<-a)-1;i>>=-a;a+=n;for(;a>0;u=u*256+e[t+o],o+=s,a-=8){}if(i===0){i=1-p}else if(i===h){return u?NaN:(c?-1:1)*Infinity}else{u=u+Math.pow(2,n);i=i-p}return(c?-1:1)*u*Math.pow(2,i-n)}function re(e,t,f,l,r,h){var n,i,u;var a=h*8-r-1;var o=(1<>1;var p=r===23?Math.pow(2,-24)-Math.pow(2,-77):0;var c=l?0:h-1;var _=l?1:-1;var d=t<0||t===0&&1/t<0?1:0;t=Math.abs(t);if(isNaN(t)||t===Infinity){i=isNaN(t)?1:0;n=o}else{n=Math.floor(Math.log(t)/Math.LN2);if(t*(u=Math.pow(2,-n))<1){n--;u*=2}if(n+s>=1){t+=p/u}else{t+=p*Math.pow(2,1-s)}if(t*u>=2){n++;u/=2}if(n+s>=o){i=0;n=o}else if(n+s>=1){i=(t*u-1)*Math.pow(2,r);n=n+s}else{i=t*Math.pow(2,s-1)*Math.pow(2,r);n=0}}for(;r>=8;e[f+c]=i&255,c+=_,i/=256,r-=8){}n=n<0;e[f+c]=n&255,c+=_,n/=256,a-=8){}e[f+c-_]|=d*128}var ne={}.toString;var ie=Array.isArray||function(e){return ne.call(e)=="[object Array]"}; /*! @@ -61,7 +61,7 @@ * * LIPS is Pretty Simple - Scheme based powerful LISP in JavaScript * - * Copyright (c) 2018-2021 Jakub T. Jankiewicz + * Copyright (c) 2018-2023 Jakub T. Jankiewicz * Released under the MIT license * * Includes: @@ -83,5 +83,5 @@ * The rationalize algorithm is by Per M.A. Bothner, Alan Bawden and Marc Feeley. * source: Kawa, C-Gambit * - * Build time: Sat, 23 Dec 2023 13:43:06 +0000 - */var sn=["token"],cn=["stderr","stdin","stdout","command_line"];function fn(i){var u=ln();return function e(){var t=c(i),r;if(u){var n=c(this).constructor;r=Reflect.construct(t,arguments,n)}else{r=t.apply(this,arguments)}return a(this,r)}}function ln(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(e){return false}}function hn(t,e){var r=typeof Symbol!=="undefined"&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=pn(t))||e&&t&&typeof t.length==="number"){if(r)t=r;var n=0;var i=function e(){};return{s:i,n:function e(){if(n>=t.length)return{done:true};return{done:false,value:t[n++]}},e:function e(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=true,a=false,o;return{s:function e(){r=r.call(t)},n:function e(){var t=r.next();u=t.done;return t},e:function e(t){a=true;o=t},f:function e(){try{if(!u&&r["return"]!=null)r["return"]()}finally{if(a)throw o}}}}function pn(e,t){if(!e)return;if(typeof e==="string")return _n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor)r=e.constructor.name;if(r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _n(e,t)}function _n(e,t){if(t==null||t>e.length)t=e.length;for(var r=0,n=new Array(t);r1&&arguments[1]!==undefined?arguments[1]:null;var n=arguments[1]===true;function t(e){if(!Cn()){return}var t=qo.get("repr")(e);if(r===null||r instanceof RegExp&&r.test(t)){console.log(qo.get("type")(e)+": "+t)}if(n){console.log(e)}}if(ra(e)){e.then(t)}else{t(e)}return e}function Cn(){return Yo&&Yo.get("DEBUG",{throwError:false})}function On(e){return e?"(?:#".concat(e,"(?:#[ie])?|#[ie]#").concat(e,")"):"(?:#[ie])?"}function Sn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+/").concat(t,"+")}function Bn(e,t){return"".concat(On(e),"(?:[+-]?(?:").concat(t,"+/").concat(t,"+|nan.0|inf.0|").concat(t,"+))?(?:[+-]i|[+-]?(?:").concat(t,"+/").concat(t,"+|").concat(t,"+|nan.0|inf.0)i)(?=[()[\\]\\s]|$)")}function jn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+")}var In=/^#\/((?:\\\/|[^/]|\[[^\]]*\/[^\]]*\])+)\/([gimyus]*)$/;var Pn="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+)(?:[eE][-+]?[0-9]+)?)|[0-9]+\\.)";var Nn="(?:#[ie])?(?:[+-]?(?:[0-9]+/[0-9]+|nan.0|inf.0|".concat(Pn,"|[+-]?[0-9]+))?(?:").concat(Pn,"|[+-](?:[0-9]+/[0-9]+|[0-9]+|nan.0|inf.0))i");var Rn=new RegExp("^(#[ie])?".concat(Pn,"$"),"i");function Tn(e,t){var r=e==="x"?"(?!\\+|".concat(t,")"):"(?!\\.|".concat(t,")");var n="";if(e===""){n="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+(?![0-9]))(?:[eE][-+]?[0-9]+)?))"}return new RegExp("^((?:(?:".concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+(?!").concat(t,")|[+-]?").concat(t,"+)").concat(r,")?)(").concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+|[+-]?").concat(t,"+|[+-])i$"),"i")}var Ln=function(){var u={};[[10,"","[0-9]"],[16,"x","[0-9a-fA-F]"],[8,"o","[0-7]"],[2,"b","[01]"]].forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];u[r]=Tn(n,i)});return u}();var Un={alarm:"",backspace:"\b",delete:"",escape:"",newline:"\n",null:"\0",return:"\r",space:" ",tab:"\t",dle:"",soh:"",dc1:"",stx:"",dc2:"",etx:"",dc3:"",eot:"",dc4:"",enq:"",nak:"",ack:"",syn:"",bel:"",etb:"",bs:"\b",can:"",ht:"\t",em:"",lf:"\n",sub:"",vt:"\v",esc:"",ff:"\f",fs:"",cr:"\r",gs:"",so:"",rs:"",si:"",us:"",del:""};function Mn(e){var t=[];var r=0;var n=e.length;while(r=55296&&i<=56319&&r1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);var n=r.number.split("/");var i=fo({num:C([n[0],r.radix||t]),denom:C([n[1],r.radix||t])});if(r.inexact){return i.valueOf()}else{return i}}function ri(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);if(r.inexact){return uo(parseInt(r.number,r.radix||t))}return C([r.number,r.radix||t])}function ni(e){var t=e.match(/#\\x([0-9a-f]+)$/i);var r;if(t){var n=parseInt(t[1],16);r=String.fromCodePoint(n)}else{t=e.match(/#\\(.+)$/);if(t){r=t[1]}}if(r){return za(r)}throw new Error("Parse: invalid character")}function ii(e){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;function t(e){var t;if(e==="+"){t=C(1)}else if(e==="-"){t=C(-1)}else if(e.match(Hn)){t=C([e,i])}else if(e.match(Wn)){var r=e.split("/");t=fo({num:C([r[0],i]),denom:C([r[1],i])})}else if(e.match(Rn)){var n=oi(e);if(u.exact){return n.toRational()}return n}else if(e.match(/nan.0$/)){return C(NaN)}else if(e.match(/inf.0$/)){if(e[0]==="-"){return C(Number.NEGATIVE_INFINITY)}return C(Number.POSITIVE_INFINITY)}else{throw new Error("Internal Parser Error")}if(u.inexact){return uo(t.valueOf())}return t}var u=ei(e);i=u.radix||i;var r;var n=u.number.match(Zn);if(i!==10&&n){r=n}else{r=u.number.match(Ln[i])}var a,o;o=t(r[2]);if(r[1]){a=t(r[1])}else{a=C(0)}if(o.cmp(0)===0&&o.__type__==="bigint"){return a}return io({im:o,re:a})}function ui(e){return parseInt(e.toString(),10)===e}function ai(e){var t=e.match(/^(([-+]?[0-9]*)(?:\.([0-9]+))?)e([-+]?[0-9]+)/i);if(t){var r=parseInt(t[4],10);var n;var i=t[1].replace(/[-+]?([0-9]*)\..+$/,"$1").length;var u=t[3]&&t[3].length;if(i0){return C(u).mul(o)}}}r=uo(r);if(t.exact){return r.toRational()}return r}function si(e){e=e.replace(/\\x([0-9a-f]+);/gi,function(e,t){return"\\u"+t.padStart(4,"0")}).replace(/\n/g,"\\n");var t=e.match(/(\\*)(\\x[0-9A-F])/i);if(t&&t[1].length%2===0){throw new Error("Invalid string literal, unclosed ".concat(t[2]))}try{return $a(JSON.parse(e))}catch(e){var r=e.message.replace(/in JSON /,"").replace(/.*Error: /,"");throw new Error("Invalid string literal: ".concat(r))}}function ci(e){if(e.match(/^\|.*\|$/)){e=e.replace(/(^\|)|(\|$)/g,"");var r={t:"\t",r:"\r",n:"\n"};e=e.replace(/\\(x[^;]+);/g,function(e,t){return String.fromCharCode(parseInt("0"+t,16))}).replace(/\\(.)/g,function(e,t){return r[t]||t})}return new L(e)}function fi(e){if(Mo.hasOwnProperty(e)){return Mo[e]}if(e.match(/^"[\s\S]*"$/)){return si(e)}else if(e[0]==="#"){var t=e.match(In);if(t){return new RegExp(t[1],t[2])}else if(e.match(Vn)){return ni(e)}var r=e.match(/#\\(.+)/);if(r&&Mn(r[1]).length===1){return ni(e)}}if(e.match(/[0-9a-f]|[+-]i/i)){if(e.match(Gn)){return ri(e)}else if(e.match(Rn)){return oi(e)}else if(e.match(Kn)){return ti(e)}else if(e.match(Jn)){return ii(e)}}if(e.match(/^#[iexobd]/)){throw new Error("Invalid numeric constant: "+e)}return ci(e)}function li(e){return!(["(",")","[","]"].includes(e)||Bi.names().includes(e))}function hi(e){return li(e)&&!(e.match(In)||e.match(/^"[\s\S]*"$/)||e.match(Gn)||e.match(Rn)||e.match(Jn)||e.match(Kn)||e.match(Vn)||["#t","#f","nil","true","false"].includes(e))}var pi=/"(?:\\[\S\s]|[^"])*"?/g;function _i(e){if(typeof e==="string"){var t=/([-\\^$[\]()+{}?*.|])/g;return e.replace(t,"\\$1")}return e}function di(){this.data=[]}di.prototype.push=function(e){this.data.push(e)};di.prototype.top=function(){return this.data[this.data.length-1]};di.prototype.pop=function(){return this.data.pop()};di.prototype.is_empty=function(){return!this.data.length};function vi(e){if(e instanceof $a){e=e.valueOf()}var t=new s(e,{whitespace:true});var r=[];while(true){var n=t.peek(true);if(n===Fo){break}r.push(n);t.skip()}return r}function yi(e){var t=e.token,r=F(e,sn);if(t.match(/^"[\s\S]*"$/)&&t.match(/\n/)){var n=new RegExp("^ {1,"+(e.col+1)+"}","mg");t=t.replace(n,"")}return vn({token:t},r)}function mi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(){};this.fn=e;this.cont=t}mi.prototype.toString=function(){return"#"};function gi(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof $a){e=e.toString()}if(t){return vi(e)}else{var r=vi(e).map(function(e){if(e.token==="#\\ "){return e.token}return e.token.trim()}).filter(function(e){return e&&!e.match(/^;/)&&!e.match(/^#\|[\s\S]*\|#$/)});return Di(r)}}function Di(e){var t=0;var r=null;var n=[];for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:null;if(e instanceof L){if(e.is_gensym()){return e}e=e.valueOf()}if(xi(e)){return L(e)}if(e!==null){return r(e,Symbol("#:".concat(e)))}t++;return r(t,Symbol("#:g".concat(t)))}}();function ki(e){var r=this;var n={pending:true,rejected:false,fulfilled:false,reason:undefined,type:undefined};e=e.then(function(e){n.type=us(e);n.fulfilled=true;n.pending=false;return e});$i(this,"_promise",e,{hidden:true});if(Xu(e["catch"])){e=e["catch"](function(e){n.rejected=true;n.pending=false;n.reason=e})}Object.keys(n).forEach(function(t){Object.defineProperty(r,"__".concat(t,"__"),{enumerable:true,get:function e(){return n[t]}})});$i(this,"__promise__",e);this.then=false}ki.prototype.then=function(e){return new ki(this.valueOf().then(e))};ki.prototype["catch"]=function(e){return new ki(this.valueOf()["catch"](e))};ki.prototype.valueOf=function(){if(!this._promise){throw new Error("QuotedPromise: invalid promise created")}return this._promise};ki.prototype.toString=function(){if(this.__pending__){return ki.pending_str}if(this.__rejected__){return ki.rejected_str}return"#")};ki.pending_str="#";ki.rejected_str="#";function Ci(e){if(Array.isArray(e)){return Promise.all(Oi(e)).then(Si)}return e}function Oi(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof ki){t[r]=new Bo(n)}else{t[r]=n}}return t}function Si(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof Bo){t[r]=n.valueOf()}else{t[r]=n}}return t}var Bi={LITERAL:Symbol["for"]("literal"),SPLICE:Symbol["for"]("splice"),SYMBOL:Symbol["for"]("symbol"),names:function e(){return Object.keys(this.__list__)},type:function e(t){return this.get(t).type},get:function e(t){return this.__list__[t]},off:function e(t){var r=this;var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(Array.isArray(t)){t.forEach(function(e){return r.off(e,n)})}else if(n===null){delete this.__events__[t]}else{this.__events__=this.__events__.filter(function(e){return e!==n})}},on:function e(t,r){var n=this;if(Array.isArray(t)){t.forEach(function(e){return n.on(e,r)})}else if(!this.__events__[t]){this.__events__[t]=[r]}else{this.__events__[t].push(r)}},trigger:function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i",new L("quote-promise"),Bi.LITERAL]];var Ri=Ni.map(function(e){return e[0]});Object.freeze(Ri);Object.defineProperty(Bi,"__builtins__",{writable:false,value:Ri});Ni.forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];Bi.append(r,n,i)});var s=function(){function p(e){var t=this;var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=r.whitespace,i=n===void 0?false:n;D(this,p);$i(this,"__input__",e.replace(/\r/g,""));var u={};["_i","_whitespace","_col","_newline","_line","_state","_next","_token","_prev_char"].forEach(function(r){Object.defineProperty(t,r,{configurable:false,enumerable:false,get:function e(){return u[r]},set:function e(t){u[r]=t}})});this._whitespace=i;this._i=this._line=this._col=this._newline=0;this._state=this._next=this._token=null;this._prev_char=""}A(p,[{key:"get",value:function e(t){return this.__internal[t]}},{key:"set",value:function e(t,r){this.__internal[t]=r}},{key:"token",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(t){var r=this._line;if(this._whitespace&&this._token==="\n"){--r}return{token:this._token,col:this._col,offset:this._i,line:r}}return this._token}},{key:"peek",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this._i>=this.__input__.length){return Fo}if(this._token){return this.token(t)}var r=this.next_token();if(r){this._token=this.__input__.substring(this._i,this._next);return this.token(t)}return Fo}},{key:"skip",value:function e(){if(this._next!==null){this._token=null;this._i=this._next}}},{key:"read_line",value:function e(){var t=this.__input__.length;if(this._i>=t){return Fo}for(var r=this._i;r=r){return Fo}if(t+this._i>=r){return this.read_rest()}var n=this._i+t;var i=this.__input__.substring(this._i,n);var u=i.match(/\n/g);if(u){this._line+=u.length}this._i=n;return i}},{key:"peek_char",value:function e(){if(this._i>=this.__input__.length){return Fo}return za(this.__input__[this._i])}},{key:"read_char",value:function e(){var t=this.peek_char();this.skip_char();return t}},{key:"skip_char",value:function e(){if(this._i1&&arguments[1]!==undefined?arguments[1]:{},r=t.prev_char,n=t["char"],i=t.next_char;var u=j(e,4),a=u[0],o=u[1],s=u[2],f=u[3];if(e.length!==5){throw new Error("Lexer: Invalid rule of length ".concat(e.length))}if(!n.match(a)){return false}if(!Ti(o,r)){return false}if(!Ti(s,i)){return false}if(f!==this._state){return false}return true}},{key:"next_token",value:function f(){if(this._i>=this.__input__.length){return false}var e=true;e:for(var t=this._i,r=this.__input__.length;t2&&arguments[2]!==undefined?arguments[2]:null;var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;if(t.length===0){throw new Error("Lexer: invalid literal rule")}if(t.length===1){return[[t,n,i,null,null]]}var u=[];for(var a=0,o=t.length;a1&&arguments[1]!==undefined?arguments[1]:{},r=t.env,n=t.meta,i=n===void 0?false:n,u=t.formatter,a=u===void 0?yi:u;D(this,o);if(e instanceof $a){e=e.toString()}$i(this,"_formatter",a,{hidden:true});$i(this,"__lexer__",new s(e));$i(this,"__env__",r);$i(this,"_meta",i,{hidden:true});$i(this,"_refs",[],{hidden:true});$i(this,"_state",{parentheses:0},{hidden:true})}A(o,[{key:"resolve",value:function e(t){return this.__env__&&this.__env__.get(t,{throwError:false})}},{key:"peek",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=this.__lexer__.peek(true);if(!(r===Fo)){t.next=4;break}return t.abrupt("return",Fo);case 4:if(!this.is_comment(r.token)){t.next=7;break}this.skip();return t.abrupt("continue",0);case 7:if(!(r.token==="#;")){t.next=14;break}this.skip();if(!(this.__lexer__.peek()===Fo)){t.next=11;break}throw new Error("Lexer: syntax error eof found after comment");case 11:t.next=13;return this._read_object();case 13:return t.abrupt("continue",0);case 14:return t.abrupt("break",17);case 17:r=this._formatter(r);if(!this._meta){t.next=20;break}return t.abrupt("return",r);case 20:return t.abrupt("return",r.token);case 21:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"reset",value:function e(){this._refs.length=0}},{key:"skip",value:function e(){this.__lexer__.skip()}},{key:"read",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;this.skip();return t.abrupt("return",r);case 5:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"match_datum_label",value:function e(t){var r=t.match(/^#([0-9]+)=$/);return r&&r[1]}},{key:"match_datum_ref",value:function e(t){var r=t.match(/^#([0-9]+)#$/);return r&&r[1]}},{key:"is_open",value:function e(t){var r=["(","["].includes(t);if(r){this._state.parentheses++}return r}},{key:"is_close",value:function e(t){var r=[")","]"].includes(t);if(r){this._state.parentheses--}return r}},{key:"read_list",value:function(){var e=B(z.mark(function e(){var r,n,i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=U,n=r;case 1:t.next=4;return this.peek();case 4:i=t.sent;if(!(i===Fo)){t.next=7;break}return t.abrupt("break",27);case 7:if(!this.is_close(i)){t.next=10;break}this.skip();return t.abrupt("break",27);case 10:if(!(i==="."&&r!==U)){t.next=17;break}this.skip();t.next=14;return this._read_object();case 14:n.cdr=t.sent;t.next=25;break;case 17:t.t0=M;t.next=20;return this._read_object();case 20:t.t1=t.sent;t.t2=U;u=new t.t0(t.t1,t.t2);if(r===U){r=u}else{n.cdr=u}n=u;case 25:t.next=1;break;case 27:return t.abrupt("return",r);case 28:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"read_value",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.read();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}throw new Error("Parser: Expected token eof found");case 5:return t.abrupt("return",fi(r));case 6:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"is_comment",value:function e(t){return t.match(/^;/)||t.match(/^#\|/)&&t.match(/\|#$/)}},{key:"evaluate",value:function e(t){return _s(t,{env:this.__env__,error:function e(t){throw t}})}},{key:"read_object",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:this.reset();t.next=3;return this._read_object();case 3:r=t.sent;if(r instanceof Ui){r=r.valueOf()}if(!this._refs.length){t.next=7;break}return t.abrupt("return",this._resolve_object(r));case 7:return t.abrupt("return",r);case 8:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"balanced",value:function e(){return this._state.parentheses===0}},{key:"ballancing_error",value:function e(t){var r=this._state.parentheses;var n=new Error("Parser: expected parenthesis but eof found");var i=new RegExp("\\){".concat(r,"}$"));n.__code__=[t.toString().replace(i,"")];throw n}},{key:"_resolve_object",value:function(){var t=B(z.mark(function e(r){var n=this;var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!Array.isArray(r)){t.next=2;break}return t.abrupt("return",r.map(function(e){return n._resolve_object(e)}));case 2:if(!wu(r)){t.next=6;break}i={};Object.keys(r).forEach(function(e){i[e]=n._resolve_object(r[e])});return t.abrupt("return",i);case 6:if(!(r instanceof M)){t.next=8;break}return t.abrupt("return",this._resolve_pair(r));case 8:return t.abrupt("return",r);case 9:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_resolve_pair",value:function(){var t=B(z.mark(function e(r){return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M)){t.next=15;break}if(!(r.car instanceof Ui)){t.next=7;break}t.next=4;return r.car.valueOf();case 4:r.car=t.sent;t.next=8;break;case 7:this._resolve_pair(r.car);case 8:if(!(r.cdr instanceof Ui)){t.next=14;break}t.next=11;return r.cdr.valueOf();case 11:r.cdr=t.sent;t.next=15;break;case 14:this._resolve_pair(r.cdr);case 15:return t.abrupt("return",r);case 16:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_read_object",value:function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}return t.abrupt("return",r);case 5:if(!ji(r)){t.next=39;break}n=Bi.get(r);i=Ii(r);this.skip();t.next=11;return this._read_object();case 11:a=t.sent;if(i){t.next=26;break}o=this.__env__.get(n.symbol);if(!(typeof o==="function")){t.next=26;break}if(!Pi(r)){t.next=19;break}return t.abrupt("return",o.call(this.__env__,a));case 19:if(!(a===U)){t.next=23;break}return t.abrupt("return",o.apply(this.__env__));case 23:if(!(a instanceof M)){t.next=25;break}return t.abrupt("return",o.apply(this.__env__,a.to_array(false)));case 25:throw new Error("Parse Error: Invalid parser extension "+"invocation ".concat(n.symbol));case 26:if(Pi(r)){u=new M(n.symbol,new M(a,U))}else{u=new M(n.symbol,a)}if(!i){t.next=29;break}return t.abrupt("return",u);case 29:if(!(o instanceof Vu)){t.next=38;break}t.next=32;return this.evaluate(u);case 32:s=t.sent;if(!(s instanceof M||s instanceof L)){t.next=35;break}return t.abrupt("return",M.fromArray([L("quote"),s]));case 35:return t.abrupt("return",s);case 38:throw new Error("Parse Error: invalid parser extension: "+n.symbol);case 39:c=this.match_datum_ref(r);if(!(c!==null)){t.next=45;break}this.skip();if(!this._refs[c]){t.next=44;break}return t.abrupt("return",new Ui(c,this._refs[c]));case 44:throw new Error("Parse Error: invalid datum label #".concat(c,"#"));case 45:f=this.match_datum_label(r);if(!(f!==null)){t.next=52;break}this.skip();this._refs[f]=this._read_object();return t.abrupt("return",this._refs[f]);case 52:if(!this.is_open(r)){t.next=57;break}this.skip();return t.abrupt("return",this.read_list());case 57:return t.abrupt("return",this.read_value());case 58:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}]);return o}();var Ui=function(){function r(e,t){D(this,r);this.name=e;this.data=t}A(r,[{key:"valueOf",value:function e(){return this.data}}]);return r}();function Mi(e,t){return qi.apply(this,arguments)}function qi(){qi=e(z.mark(function e(r,n){var i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!n){if(qo){n=qo.get("**interaction-environment**",{throwError:false})}else{n=Yo}}i=new Li(r,{env:n});case 2:t.next=5;return P(i.read_object());case 5:u=t.sent;if(!i.balanced()){i.ballancing_error(u)}if(!(u===Fo)){t.next=9;break}return t.abrupt("break",13);case 9:t.next=11;return u;case 11:t.next=2;break;case 13:case"end":return t.stop()}}},e)}));return qi.apply(this,arguments)}function Yi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(e){return e};var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(ra(e)){var n=e.then(t);if(r===null){return n}else{return n["catch"](r)}}if(e instanceof Array){return Vi(e,t,r)}if(wu(e)){return zi(e,t,r)}return t(e)}function Vi(t,r,e){if(t.find(ra)){return Yi(Ci(t),function(e){if(Object.isFrozen(t)){Object.freeze(e)}return r(e)},e)}return r(t)}function zi(t,e,r){var i=Object.keys(t);var n=[],u=[];var a=i.length;while(a--){var o=i[a];var s=t[o];n[a]=s;if(ra(s)){u.push(s)}}if(u.length){return Yi(Ci(n),function(e){var n={};e.forEach(function(e,t){var r=i[t];n[r]=e});if(Object.isFrozen(t)){Object.freeze(n)}return n},r)}return e(t)}function $i(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{},i=n.hidden,u=i===void 0?false:i;Object.defineProperty(e,t,{value:r,configurable:true,enumerable:!u})}function Ji(e){return Ki.apply(this,arguments)}function Ki(){Ki=B(z.mark(function e(r){var n,i,u,a,o,s,c;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=[];i=false;u=false;t.prev=3;o=yn(r);case 5:t.next=7;return o.next();case 7:if(!(i=!(s=t.sent).done)){t.next=13;break}c=s.value;n.push(c);case 10:i=false;t.next=5;break;case 13:t.next=19;break;case 15:t.prev=15;t.t0=t["catch"](3);u=true;a=t.t0;case 19:t.prev=19;t.prev=20;if(!(i&&o["return"]!=null)){t.next=24;break}t.next=24;return o["return"]();case 24:t.prev=24;if(!u){t.next=27;break}throw a;case 27:return t.finish(24);case 28:return t.finish(19);case 29:return t.abrupt("return",n);case 30:case"end":return t.stop()}}},e,null,[[3,15,19,29],[20,,24,28]])}));return Ki.apply(this,arguments)}function Gi(e,t){if(t instanceof RegExp){return function(e){return String(e).match(t)}}else if(Xu(t)){return t}throw new Error("Invalid matcher")}function y(e,t,r,n){if(typeof e!=="string"){t=arguments[0];r=arguments[1];n=arguments[2];e=null}if(r){if(n){t.__doc__=r}else{t.__doc__=Hi(r)}}if(e){t.__name__=e}else if(t.name&&!Ca(t)){t.__name__=t.name}return t}function Hi(e){return e.split("\n").map(function(e){return e.trim()}).join("\n")}function Wi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var r=e.length;if(t<=0){throw Error("previousSexp: Invalid argument sexp = ".concat(t))}e:while(t--&&r>=0){var n=1;while(n>0){var i=e[--r];if(!i){break e}if(i==="("||i.token==="("){n--}else if(i===")"||i.token===")"){n++}}r--}return e.slice(r+1)}function Qi(e){if(!e||!e.length){return 0}var t=e.length;if(e[t-1].token==="\n"){return 0}while(--t){if(e[t].token==="\n"){var r=(e[t+1]||{}).token;if(r){return r.length}}}return 0}function Zi(e,t){return f(e,t)===t.length;function f(r,n){function e(e,t){var r=hn(e),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;var u=f(i,t);if(u!==-1){return u}}}catch(e){r.e(e)}finally{r.f()}return-1}function t(){return r[u]===Symbol["for"]("symbol")&&!hi(n[o])}function i(){var e=r[u+1];var t=n[o+1];if(e!==undefined&&t!==undefined){return f([e],[t])}}var u=0;var a={};for(var o=0;o0){continue}}else if(t()){return-1}}else if(r[u]instanceof Array){var c=f(r[u],n.slice(o));if(c===-1||c+o>n.length){return-1}o+=c-1;u++;continue}else{return-1}u++}if(r.length!==u){return-1}return n.length}}function Xi(e){this.__code__=e.replace(/\r/g,"")}Xi.defaults={offset:0,indent:2,exceptions:{specials:[/^(?:#:)?(?:define(?:-values|-syntax|-macro|-class|-record-type)?|(?:call-with-(?:input-file|output-file|port))|lambda|let-env|try|catch|when|unless|while|syntax-rules|(let|letrec)(-syntax|\*)?)$/],shift:{1:["&","#"]}}};Xi.match=Zi;Xi.prototype._options=function e(t){var r=Xi.defaults;if(typeof t==="undefined"){return Object.assign({},r)}var n=t&&t.exceptions||{};var i=n.specials||[];var u=n.shift||{1:[]};return vn(vn(vn({},r),t),{},{exceptions:{specials:[].concat(q(r.exceptions.specials),q(i)),shift:vn(vn({},u),{},{1:[].concat(q(r.exceptions.shift[1]),q(u[1]))})}})};Xi.prototype.indent=function e(t){var r=wi(this.__code__,true);return this._indent(r,t)};Xi.exception_shift=function(u,e){function t(e){if(!e.length){return false}if(e.indexOf(u)!==-1){return true}else{var t=e.filter(function(e){return e instanceof RegExp});if(!t.length){return false}var r=hn(t),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;if(u.match(i)){return true}}}catch(e){r.e(e)}finally{r.f()}}return false}if(t(e.exceptions.specials)){return e.indent}var r=e.exceptions.shift;for(var n=0,i=Object.entries(r);n0){t.offset=0}if(n.toString()===e.toString()&&ms(n)){return t.offset+n[0].col}else if(n.length===1){return t.offset+n[0].col+1}else{var u=-1;if(i){var a=Xi.exception_shift(i.token,t);if(a!==-1){u=a}}if(u===-1){u=Xi.exception_shift(n[1].token,t)}if(u!==-1){return t.offset+n[0].col+u}else if(n[0].line3&&n[1].line===n[3].line){if(n[1].token==="("||n[1].token==="["){return t.offset+n[1].col}return t.offset+n[3].col}else if(n[0].line===n[1].line){return t.offset+t.indent+n[0].col}else{var o=n.slice(2);for(var s=0;s")};eu.prototype.match=function(e){return e.match(this.pattern)};function tu(){for(var e=arguments.length,t=new Array(e),r=0;r")};Xi.Pattern=tu;Xi.Ahead=eu;var ru=/^[[(]$/;var nu=/^[\])]$/;var iu=/[^()[\]]/;var uu=new eu(/[^)\]]/);var au=Symbol["for"]("*");var ou=new tu([ru,au,nu],[iu],"+");var su=new tu([ru,au,nu],"+");var cu=new tu([Symbol["for"]("symbol")],"?");var fu=new tu([Symbol["for"]("symbol")],"*");var lu=[ru,fu,nu];var hu=new tu([ru,Symbol["for"]("symbol"),au,nu],"+");var pu=vu("define","lambda","define-macro","syntax-rules");var _u=/^(?!.*\b(?:[()[\]]|define(?:-macro)?|let(?:\*|rec|-env|-syntax|)?|lambda|syntax-rules)\b).*$/;var du=/^(?:#:)?(let(?:\*|rec|-env|-syntax)?)$/;function vu(){for(var e=arguments.length,t=new Array(e),r=0;r0&&!i[e]){i[e]=Wi(n,e)}});var u=hn(t),p;try{for(u.s();!(p=u.n()).done;){var a=j(p.value,3),_=a[0],o=a[1],s=a[2];o=o.valueOf();var d=o>0?i[o]:n;var v=d.filter(function(e){return e.trim()&&!ji(e)});var y=h(d);var m=Zi(_,v);var g=e.slice(r).find(function(e){return e.trim()&&!ji(e)});if(m&&(s instanceof eu&&s.match(g)||!s)){var c=r-y;if(e[c]!=="\n"){if(!e[c].trim()){e[c]="\n"}else{e.splice(c,0,"\n");r++}}r+=y;continue e}}}catch(e){u.e(e)}finally{u.f()}}this.__code__=e.join("");return this};Xi.prototype._spaces=function(e){return new Array(e+1).join(" ")};Xi.prototype.format=function c(e){var t=this.__code__.replace(/[ \t]*\n[ \t]*/g,"\n ");var r=wi(t,true);var n=this._options(e);var i=0;var u=0;for(var a=0;a0&&arguments[0]!==undefined?arguments[0]:true;var n=new Map;function i(e){if(e instanceof M){if(n.has(e)){return n.get(e)}var t=new M;n.set(e,t);if(r){t.car=i(e.car)}else{t.car=e.car}t.cdr=i(e.cdr);t[ga]=e[ga];return t}return e}return i(this)};M.prototype.last_pair=function(){var e=this;while(true){if(e.cdr===U){return e}e=e.cdr}};M.prototype.to_array=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;var t=[];if(this.car instanceof M){if(e){t.push(this.car.to_array())}else{t.push(this.car)}}else{t.push(this.car.valueOf())}if(this.cdr instanceof M){t=t.concat(this.cdr.to_array())}return t};M.fromArray=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof M||r&&e instanceof Array&&e[ya]){return e}if(t===false){var n=U;for(var i=e.length;i--;){n=new M(e[i],n)}return n}if(e.length&&!(e instanceof Array)){e=q(e)}var u=U;var a=e.length;while(a--){var o=e[a];if(o instanceof Array){o=M.fromArray(o,t,r)}else if(typeof o==="string"){o=$a(o)}else if(typeof o==="number"&&!Number.isNaN(o)){o=C(o)}u=new M(o,u)}return u};M.prototype.to_object=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var t=this;var r={};while(true){if(t instanceof M&&t.car instanceof M){var n=t.car;var i=n.car;if(i instanceof L){i=i.__name__}if(i instanceof $a){i=i.valueOf()}var u=n.cdr;if(u instanceof M){u=u.to_object(e)}if(ts(u)){if(!e){u=u.valueOf()}}r[i]=u;t=t.cdr}else{break}}return r};M.fromPairs=function(e){return e.reduce(function(e,t){return new M(new M(new L(t[0]),t[1]),e)},U)};M.fromObject=function(t){var e=Object.keys(t).map(function(e){return[e,t[e]]});return M.fromPairs(e)};M.prototype.reduce=function(e){var t=this;var r=U;while(true){if(t!==U){r=e(r,t.car);t=t.cdr}else{break}}return r};M.prototype.reverse=function(){if(this.haveCycles()){throw new Error("You can't reverse list that have cycles")}var e=this;var t=U;while(e!==U){var r=e.cdr;e.cdr=t;t=e;e=r}return t};M.prototype.transform=function(n){function i(e){if(e instanceof M){if(e.replace){delete e.replace;return e}var t=n(e.car);if(t instanceof M){t=i(t)}var r=n(e.cdr);if(r instanceof M){r=i(r)}return new M(t,r)}return e}return i(this)};M.prototype.map=function(e){if(typeof this.car!=="undefined"){return new M(e(this.car),this.cdr===U?U:this.cdr.map(e))}else{return U}};var bu=new Map;function wu(e){return e&&_(e)==="object"&&e.constructor===Object}var Du=Object.getOwnPropertyNames(Array.prototype);var Eu=[];Du.forEach(function(e){Eu.push(Array[e],Array.prototype[e])});function Au(e){e=sa(e);return Eu.includes(e)}function xu(e){return Xu(e)&&(Ca(e)||e.__doc__)}function Fu(r){var e=r.constructor||Object;var n=wu(r);var i=Xu(r[Symbol.asyncIterator])||Xu(r[Symbol.iterator]);var u;if(bu.has(e)){u=bu.get(e)}else{bu.forEach(function(e,t){t=sa(t);if(r.constructor===t&&(t===Object&&n&&!i||t!==Object)){u=e}})}return u}var ku=new Map;[[true,"#t"],[false,"#f"],[null,"null"],[undefined,"#"]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ku.set(r,n)});function Cu(r){if(r&&_(r)==="object"){var n={};var e=Object.getOwnPropertySymbols(r);e.forEach(function(e){var t=e.toString().replace(/Symbol\(([^)]+)\)/,"$1");n[t]=Pu(r[e])});var t=Object.getOwnPropertyNames(r);t.forEach(function(e){var t=r[e];if(t&&_(t)==="object"&&t.constructor===Object){n[e]=Cu(t)}else{n[e]=Pu(t)}});return n}return r}function Ou(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function Su(e,t){return e.hasOwnProperty(t)&&Xu(e.toString)}function Bu(e){if(Ba(e)){return"#"}var t=e.prototype&&e.prototype.constructor;if(Xu(t)&&Ca(t)){if(e[ba]&&t.hasOwnProperty("__name__")){var r=t.__name__;if($a.isString(r)){r=r.toString();return"#")}return"#"}}if(e.hasOwnProperty("__name__")){var n=e.__name__;if(_(n)==="symbol"){n=Ai(n)}if(typeof n==="string"){return"#")}}if(Su(e,"toString")){return e.toString()}else if(e.name&&!Ca(e)){return"#")}else{return"#"}}var ju=new Map;[[Error,function(e){return e.message}],[M,function(e,t){var r=t.quote,n=t.skip_cycles,i=t.pair_args;if(!n){e.markCycles()}return e.toString.apply(e,[r].concat(q(i)))}],[za,function(e,t){var r=t.quote;if(r){return e.toString()}return e.valueOf()}],[$a,function(e,t){var r=t.quote;e=e.toString();if(r){return JSON.stringify(e).replace(/\\n/g,"\n")}return e}],[RegExp,function(e){return"#"+e.toString()}]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ju.set(r,n)});var Iu=[L,C,Vu,jo,ho,po,So,ki];function Pu(e,t,c){if(typeof jQuery!=="undefined"&&e instanceof jQuery.fn.init){return"#"}if(ku.has(e)){return ku.get(e)}if(Nu(e)){return"#"}if(e){var r=e.constructor;if(ju.has(r)){for(var n=arguments.length,f=new Array(n>3?n-3:0),i=3;i"}if(e===null){return"null"}if(_(e)==="object"){var a=e.constructor;if(!a){a=Object}var o;if(typeof a.__class__==="string"){o=a.__class__}else{var s=Fu(e);if(s){if(Xu(s)){return s(e,t)}else{throw new Error("toString: Invalid repr value")}}o=a.name}if(Xu(e.toString)&&Ca(e.toString)){return e.toString().valueOf()}if(us(e)==="instance"){if(Ca(a)&&a.__name__){o=a.__name__.valueOf()}else if(!Ba(a)){o="instance"}}if(ns(e,Symbol.iterator)){if(o){return"#")}return"#"}if(ns(e,Symbol.asyncIterator)){if(o){return"#")}return"#"}if(o!==""){return"#<"+o+">"}return"#"}if(typeof e!=="string"){return e.toString()}return e}function Nu(e){return e&&_(e)==="object"&&e.hasOwnProperty&&e.hasOwnProperty("constructor")&&typeof e.constructor==="function"&&e.constructor.prototype===e}M.prototype.markCycles=function(){Ru(this);return this};M.prototype.haveCycles=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!e){return this.haveCycles("car")||this.haveCycles("cdr")}return!!(this[ga]&&this[ga][e])};function Ru(e){var t=[];var i=[];var u=[];function a(e){if(!t.includes(e)){t.push(e)}}function o(e,t,r,n){if(r instanceof M){if(n.includes(r)){if(!u.includes(r)){u.push(r)}if(!e[ga]){e[ga]={}}e[ga][t]=r;if(!i.includes(e)){i.push(e)}return true}}}var s=gi(function e(t,r){if(t instanceof M){delete t.ref;delete t[ga];a(t);r.push(t);var n=o(t,"car",t.car,r);var i=o(t,"cdr",t.cdr,r);if(!n){s(t.car,r.slice())}if(!i){return new mi(function(){return e(t.cdr,r.slice())})}}});function r(e,t){if(e[ga][t]instanceof M){var r=n.indexOf(e[ga][t]);e[ga][t]="#".concat(r,"#")}}s(e,[]);var n=t.filter(function(e){return u.includes(e)});n.forEach(function(e,t){e[ma]="#".concat(t,"=")});i.forEach(function(e){r(e,"car");r(e,"cdr")})}M.prototype.toString=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.nested,n=r===void 0?false:r;var i=[];if(this[ma]){i.push(this[ma]+"(")}else if(!n){i.push("(")}var u;if(this[ga]&&this[ga].car){u=this[ga].car}else{u=Pu(this.car,e,true)}if(u!==undefined){i.push(u)}if(this.cdr instanceof M){if(this[ga]&&this[ga].cdr){i.push(" . ");i.push(this[ga].cdr)}else{if(this.cdr[ma]){i.push(" . ")}else{i.push(" ")}var a=this.cdr.toString(e,{nested:true});i.push(a)}}else if(this.cdr!==U){i=i.concat([" . ",Pu(this.cdr,e,true)])}if(!n||this[ma]){i.push(")")}return i.join("")};M.prototype.set=function(e,t){this[e]=t;if(t instanceof M){this.markCycles()}};M.prototype.append=function(e){if(e instanceof Array){return this.append(M.fromArray(e))}var t=this;if(t.car===undefined){if(e instanceof M){this.car=e.car;this.cdr=e.cdr}else{this.car=e}}else if(e!==U){while(true){if(t instanceof M&&t.cdr!==U){t=t.cdr}else{break}}t.cdr=e}return this};M.prototype.serialize=function(){return[this.car,this.cdr]};M.prototype[Symbol.iterator]=function(){var r=this;return{next:function e(){var t=r;r=t.cdr;if(t===U){return{value:undefined,done:true}}else{return{value:t.car,done:false}}}}};function Tu(e){return e<0?-e:e}function Lu(e,t){var r=m(t),n=r[0],i=r.slice(1);while(i.length>0){var u=i,a=j(u,1),o=a[0];if(!e(n,o)){return false}var s=i;var c=m(s);n=c[0];i=c.slice(1)}return true}function Uu(e,t){if(Xu(e)){return Xu(t)&&sa(e)===sa(t)}else if(e instanceof C){if(!(t instanceof C)){return false}var r;if(e.__type__===t.__type__){if(e.__type__==="complex"){r=e.__im__.__type__===t.__im__.__type__&&e.__re__.__type__===t.__re__.__type__}else{r=true}if(r&&e.cmp(t)===0){if(e.valueOf()===0){return Object.is(e.valueOf(),t.valueOf())}return true}}return false}else if(typeof e==="number"){if(typeof t!=="number"){return false}if(Number.isNaN(e)){return Number.isNaN(t)}if(e===Number.NEGATIVE_INFINITY){return t===Number.NEGATIVE_INFINITY}if(e===Number.POSITIVE_INFINITY){return t===Number.POSITIVE_INFINITY}return Uu(C(e),C(t))}else if(e instanceof za){if(!(t instanceof za)){return false}return e.__char__===t.__char__}else{return e===t}}function Mu(e,t){if(us(e)!==us(t)){return false}if(!qu(e)){return false}if(e instanceof RegExp){return e.source===t.source}if(e instanceof $a){return e.valueOf()===t.valueOf()}return Uu(e,t)}function qu(e){return e instanceof L||$a.isString(e)||e===U||e===null||e instanceof za||e instanceof C||e===true||e===false}var Yu=function(){if(Math.trunc){return Math.trunc}else{return function(e){if(e===0){return 0}else if(e<0){return Math.ceil(e)}else{return Math.floor(e)}}}}();function Vu(e,t,r,n){if(typeof this!=="undefined"&&this.constructor!==Vu||typeof this==="undefined"){return new Vu(e,t)}h("Macro",e,"string",1);h("Macro",t,"function",2);if(r){if(n){this.__doc__=r}else{this.__doc__=Hi(r)}}this.__name__=e;this.__fn__=t}Vu.defmacro=function(e,t,r,n){var i=new Vu(e,t,r,n);i.__defmacro__=true;return i};Vu.prototype.invoke=function(e,t,r){var n=t.env,i=t.dynamic_scope,u=t.error;var a={dynamic_scope:i,error:u,macro_expand:r};var o=this.__fn__.call(n,e,a,this.__name__);return o};Vu.prototype.toString=function(){return"#")};var zu="define-macro";var $u=-1e4;function Ju(c){return function(){var r=B(z.mark(function e(r,m){var u,g,n,i,s,D,E,A,x,F,k,b,a,w,o;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:o=function e(){o=B(z.mark(function e(r,n,i){var h,u,a,p,o,_,s,d,c,v,f,l,y;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M&&r.car instanceof L)){t.next=50;break}if(!r[ya]){t.next=3;break}return t.abrupt("return",r);case 3:h=r.car.valueOf();u=i.get(r.car,{throwError:false});a=D(r.car);p=a||E(u,r)||A(u);if(!(p&&r.cdr.car instanceof M)){t.next=28;break}if(!a){t.next=15;break}g=F(r.cdr.car);t.next=12;return b(r.cdr.car,n);case 12:o=t.sent;t.next=17;break;case 15:g=x(r.cdr.car);o=r.cdr.car;case 17:t.t0=M;t.t1=r.car;t.t2=M;t.t3=o;t.next=23;return w(r.cdr.cdr,n,i);case 23:t.t4=t.sent;t.t5=new t.t2(t.t3,t.t4);return t.abrupt("return",new t.t0(t.t1,t.t5));case 28:if(!k(h,u)){t.next=50;break}_=u instanceof Ku?r:r.cdr;t.next=32;return u.invoke(_,vn(vn({},m),{},{env:i}),true);case 32:s=t.sent;if(!(u instanceof Ku)){t.next=41;break}d=s,c=d.expr,v=d.scope;if(!(c instanceof M)){t.next=40;break}if(!(n!==-1&&n<=1||n<$u)){t.next=38;break}return t.abrupt("return",c);case 38:if(n!==-1){n=n-1}return t.abrupt("return",w(c,n,v));case 40:s=c;case 41:if(!(s instanceof L)){t.next=43;break}return t.abrupt("return",Io(s));case 43:if(!(s instanceof M)){t.next=48;break}if(!(n!==-1&&n<=1||n<$u)){t.next=46;break}return t.abrupt("return",s);case 46:if(n!==-1){n=n-1}return t.abrupt("return",w(s,n,i));case 48:if(!qu(s)){t.next=50;break}return t.abrupt("return",s);case 50:f=r.car;if(!(f instanceof M)){t.next=55;break}t.next=54;return w(f,n,i);case 54:f=t.sent;case 55:l=r.cdr;if(!(l instanceof M)){t.next=60;break}t.next=59;return w(l,n,i);case 59:l=t.sent;case 60:y=new M(f,l);return t.abrupt("return",y);case 62:case"end":return t.stop()}}},e)}));return o.apply(this,arguments)};w=function e(t,r,n){return o.apply(this,arguments)};a=function e(){a=B(z.mark(function e(r,n){var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r===U)){t.next=2;break}return t.abrupt("return",U);case 2:i=r.car;t.t0=M;t.t1=M;t.t2=i.car;t.next=8;return w(i.cdr,n,u);case 8:t.t3=t.sent;t.t4=new t.t1(t.t2,t.t3);t.next=12;return b(r.cdr);case 12:t.t5=t.sent;return t.abrupt("return",new t.t0(t.t4,t.t5));case 14:case"end":return t.stop()}}},e)}));return a.apply(this,arguments)};b=function e(t,r){return a.apply(this,arguments)};k=function e(t,r){return r instanceof Vu&&r.__defmacro__&&!g.includes(t)};F=function e(t){return[].concat(q(g),q(t.to_array(false).map(function(e){if(e instanceof M){return e.car.valueOf()}throw new Error("macroexpand: Invalid let binding")})))};x=function e(t){var r=[];while(true){if(t!==U){if(t instanceof L){r.push(t.valueOf());break}r.push(t.car.valueOf());t=t.cdr}else{break}}return[].concat(q(g),r)};A=function e(t){return t===i};E=function e(t,r){return t===s&&r.cdr.car instanceof M};D=function e(t){var r=t.valueOf();return n.includes(r)};u=m["env"]=this;g=[];n=["let","let*","letrec"];i=qo.get("lambda");s=qo.get("define");if(!(r.cdr instanceof M&&C.isNumber(r.cdr.car))){t.next=21;break}t.t0=Io;t.next=19;return w(r,r.cdr.car.valueOf(),u);case 19:t.t1=t.sent.car;return t.abrupt("return",(0,t.t0)(t.t1));case 21:if(!c){t.next=27;break}t.t2=Io;t.next=25;return w(r,1,u);case 25:t.t3=t.sent.car;return t.abrupt("return",(0,t.t2)(t.t3));case 27:t.t4=Io;t.next=30;return w(r,-1,u);case 30:t.t5=t.sent.car;return t.abrupt("return",(0,t.t4)(t.t5));case 32:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()}function Ku(e,t){this.__env__=t;this.__fn__=e;this.__defmacro__=true}Ku.__merge_env__=Symbol["for"]("merge");Ku.prototype=Object.create(Vu.prototype);Ku.prototype.invoke=function(e,t,r){var n=t.error,i=t.env;var u={error:n,env:i,dynamic_scope:this.__env__,macro_expand:r};return this.__fn__.call(i,e,u,this.__name__||"syntax")};Ku.prototype.constructor=Ku;Ku.prototype.toString=function(){if(this.__name__){return"#")}return"#"};Ku.className="syntax";var Gu=function(e){u(r,e);var t=fn(r);function r(){D(this,r);return t.apply(this,arguments)}return A(r)}(Ku);Ku.Parameter=Gu;function Hu(e,t,w,D){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var E={"...":{symbols:{},lists:[]},symbols:{}};var A=r.expansion,k=r.define;function x(e){if(Cn()){console.log(e)}}x(w);function F(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;x({code:t&&Pu(t,true),pattern:e&&Pu(e,true)});if(qu(e)&&!(e instanceof L)){return Mu(e,t)}if(e instanceof L&&w.includes(e.literal())){var c=A.ref(t);if(L.is(t,e)){if(typeof c==="undefined"){return true}return c===k||c===qo}return false}if(e instanceof M&&e.car instanceof M&&e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){x(">> 0");if(t===U){x({pattern:e.toString()});if(e.car.car instanceof L){if(e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){var f=e.car.car.valueOf();var l=e.last_pair();if(L.is(l.car,D)){E["..."].symbols[f]=null;return true}else{return false}}var h=e.car.car.valueOf();if(E["..."].symbols[h]){throw new Error("syntax: named ellipsis can only "+"appear onces")}E["..."].symbols[h]=t}}}if(e instanceof M&&e.cdr instanceof M&&L.is(e.cdr.car,D)){if(e.cdr.cdr!==U){if(e.cdr.cdr instanceof M){var p=e.cdr.cdr.length();var _=t.length();var i=t;while(_-1>p){i=i.cdr;_--}var d=i.cdr;i.cdr=U;if(!F(e.cdr.cdr,d,r,n)){return false}}}if(e.car instanceof L){var u=e.car.__name__;if(E["..."].symbols[u]&&!r.includes(u)&&!n){throw new Error("syntax: named ellipsis can only appear onces")}x(">> 1");if(t===U){x(">> 2");if(n){x("NIL");E["..."].symbols[u]=U}else{x("NULL");E["..."].symbols[u]=null}}else if(t instanceof M&&(t.car instanceof M||t.car===U)){x(">> 3 "+n);if(n){if(E["..."].symbols[u]){var a=E["..."].symbols[u];if(a===U){a=new M(U,new M(t,U))}else{a=a.append(new M(t,U))}E["..."].symbols[u]=a}else{E["..."].symbols[u]=new M(t,U)}}else{x(">> 4");E["..."].symbols[u]=new M(t,U)}}else{x(">> 6");if(t instanceof M){x(">> 7 "+n);r.push(u);if(!E["..."].symbols[u]){E["..."].symbols[u]=new M(t,U)}else{var v=E["..."].symbols[u];E["..."].symbols[u]=v.append(new M(t,U))}x({IIIIII:E["..."].symbols[u].toString()})}else{x(">> 8");return false}}return true}else if(e.car instanceof M){var y=q(r);if(t===U){x(">> 9");E["..."].lists.push(U);return true}x(">> 10");var m=t;while(m instanceof M){if(!F(e.car,m.car,y,true)){return false}m=m.cdr}return true}return false}if(e instanceof L){if(L.is(e,D)){throw new Error("syntax: invalid usage of ellipsis")}x(">> 11");var o=e.__name__;if(w.includes(o)){return true}x({name:o,ellipsis:n});if(n){E["..."].symbols[o]=E["..."].symbols[o]||[];E["..."].symbols[o].push(t)}E.symbols[o]=t;if(!E.symbols[o]);return true}if(e instanceof M&&t instanceof M){x(">> 12");x({a:12,code:t&&t.toString(),pattern:e.toString()});if(t.cdr===U){var g=e.car instanceof L&&e.cdr instanceof L;if(g){if(!F(e.car,t.car,r,n)){return false}x(">> 12 | 1");var s=e.cdr.valueOf();if(!(s in E.symbols)){E.symbols[s]=U}s=e.car.valueOf();if(!(s in E.symbols)){E.symbols[s]=t.car}return true}}x({pattern:e.toString(),code:t.toString()});if(e.cdr instanceof M&&e.car instanceof L&&e.cdr.cdr instanceof M&&e.cdr.car instanceof L&&L.is(e.cdr.cdr.car,D)&&e.cdr.cdr.cdr instanceof M&&!L.is(e.cdr.cdr.cdr.car,D)&&F(e.car,t.car,r,n)&&F(e.cdr.cdr.cdr,t.cdr,r,n)){var b=e.cdr.car.__name__;x({pattern:e.car.toString(),code:t.car.toString(),name:b});if(w.includes(b)){return true}E["..."].symbols[b]=null;return true}x("recur");if(F(e.car,t.car,r,n)&&F(e.cdr,t.cdr,r,n)){return true}}else if(e===U&&(t===U||t===undefined)){return true}else if(e.car instanceof M&&L.is(e.car.car,D)){throw new Error("syntax: invalid usage of ellipsis")}else{return false}}if(F(e,t)){return E}}function Wu(e,i){function u(t){if(t instanceof M){if(!i.length){return t}var e=u(t.car);var r=u(t.cdr);return new M(e,r)}else if(t instanceof L){var n=i.find(function(e){return e.gensym===t});if(n){return L(n.name)}return t}else{return t}}return u(e)}function Qu(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var O=e.bindings,t=e.expr,S=e.scope,a=e.symbols,f=e.names,B=e.ellipsis;var c={};function o(e){if(e instanceof L){return true}return["string","symbol"].includes(_(e))}function j(e){if(!o(e)){var t=us(e);throw new Error("syntax: internal error, need symbol got ".concat(t))}var r=e.valueOf();if(r===B){throw new Error("syntax: internal error, ellipis not transformed")}var n=_(r);if(["string","symbol"].includes(n)){if(r in O.symbols){return O.symbols[r]}else if(n==="string"&&r.match(/\./)){var i=r.split(".");var u=i[0];if(u in O.symbols){return M.fromArray([L("."),O.symbols[u]].concat(i.slice(1).map(function(e){return $a(e)})))}}}if(a.includes(r)){return L(r)}return s(r)}function I(e){if(Cn()){console.log(e)}}function s(e){if(!c[e]){var t=S.ref(e);var r=Fi(e);if(t){var n=S.get(e);S.set(r,n)}else{var i=S.get(e,{throwError:false});if(typeof i!=="undefined"){S.set(r,i)}}f.push({name:e,gensym:r});c[e]=r;if(typeof e==="string"&&e.match(/\./)){var u=e.split(".").filter(Boolean),a=m(u),o=a[0],s=a.slice(1);if(c[o]){Fa(r,"__object__",[c[o]].concat(q(s)))}}}return c[e]}function P(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:function(){};var i=r.nested;I(" ==> "+e.toString(true));I(t);if(e instanceof L){var u=e.valueOf();I("[t 1");if(t[u]){if(t[u]instanceof M){var c=t[u],f=c.car,l=c.cdr;if(i){var h=f.car,p=f.cdr;if(p!==U){n(u,new M(p,U))}return h}if(l!==U){n(u,l)}return f}else if(t[u]instanceof Array){n(u,t[u].slice(1));return t[u][0]}}return j(u)}if(e instanceof M){if(e.car instanceof L&&e.cdr instanceof M&&L.is(e.cdr.car,B)){I("[t 2");var a=e.car.valueOf();var o=t[a];I({expr:e.toString(true),name:a,bindings:t,item:o});if(o===null){return}else if(o){I({b:t[a].toString()});if(o instanceof M){I("[t 2 Pair "+i);I({______:o.toString()});var s=o.car,_=o.cdr;if(i){if(_!==U){I("|| next 1");n(a,_)}I({car:s.toString()});return s}else{if(s.cdr!==U){I("|| next 2");n(a,new M(s.cdr,_))}I({car:s.car.toString()});return s.car}}else if(o instanceof Array){I("[t 2 Array "+i);if(i){n(a,o.slice(1));return M.fromArray(o)}else{var d=o.slice(1);if(d.length){n(a,d)}return o[0]}}else{return o}}}I("[t 3 recur "+e.toString());var v=P(e.car,t,r,n);var y=P(e.cdr,t,r,n);return new M(v,y)}return e}function R(t,r){var e=Object.values(t);var n=Object.getOwnPropertySymbols(t);if(n.length){e.push.apply(e,q(n.map(function(e){return t[e]})))}return e.length&&e.every(function(e){if(e===null){return!r}return e instanceof M||e===U||e instanceof Array&&e.length})}function T(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function N(i){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},e=n.disabled;I("traverse>> "+Pu(i));if(i instanceof M){if(!e&&i.car instanceof M&&L.is(i.car.car,B)){return N(i.car.cdr,{disabled:true})}if(i.cdr instanceof M&&L.is(i.cdr.car,B)&&!e){I(">> 1");var t=O["..."].symbols;var f=Object.values(t);if(f.length&&f.every(function(e){return e===null})){return N(i.cdr.cdr,{disabled:e})}var l=T(t);var u=i.car instanceof L&&L.is(i.cdr.cdr.car,B);if(i.car instanceof M||u){if(O["..."].lists[0]===U){return U}var h=i.car;if(u){h=new M(i.car,new M(i.cdr.car,U))}I(">> 2");var a;if(l.length){I(">> 2 (a)");var o=vn({},t);a=U;var p=function e(){if(!R(o)){return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(h,o,{nested:true},t);if(r!==undefined){if(u){if(a===U){a=r}else{a=a.append(r)}}else{a=new M(r,a)}}o=n};while(true){var _=p();if(_==="break")break}if(a!==U&&!u){a=a.reverse()}if(i.cdr.cdr!==U&&!L.is(i.cdr.cdr.car,B)){var d=N(i.cdr.cdr,{disabled:e});return a.append(d)}return a}else{I(">> 3");var v=P(i.car,t,{nested:true});if(v){return new M(v,U)}return U}}else if(i.car instanceof L){I(">> 4");if(L.is(i.cdr.cdr.car,B)){I(">> 4 (a)")}else{I(">> 4 (b)")}var y=i.car.__name__;var s=Y({},y,t[y]);var m=t[y]===null;var c=U;var g=function e(){if(!R(s,true)){I({bind:s});return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(i,s,{nested:false},t);I({value:r.toString()});if(typeof r!=="undefined"){c=new M(r,c)}s=n};while(true){var b=g();if(b==="break")break}if(c!==U){c=c.reverse()}if(i.cdr instanceof M){if(i.cdr.cdr instanceof M||i.cdr.cdr instanceof L){var w=N(i.cdr.cdr,{disabled:e});if(m){return w}I("<<<< 1");c.append(w)}}I("<<<< 2");return c}}var D=N(i.car,{disabled:e});var r;var E;if(i.car instanceof L){var A=S.get(i.car,{throwError:false});E=A instanceof Vu&&A.__name__==="syntax-rules"}if(E){if(i.cdr.car instanceof L){r=new M(N(i.cdr.car,{disabled:e}),new M(i.cdr.cdr.car,N(i.cdr.cdr.cdr,{disabled:e})))}else{r=new M(i.cdr.car,N(i.cdr.cdr,{disabled:e}))}I("REST >>>> "+r.toString())}else{r=N(i.cdr,{disabled:e})}I({a:true,car:Pu(i.car),cdr:Pu(i.cdr),head:Pu(D),rest:Pu(r)});return new M(D,r)}if(i instanceof L){if(e&&L.is(i,B)){return i}var x=Object.keys(O["..."].symbols);var F=i.literal();if(x.includes(F)){var k="missing ellipsis symbol next to name `".concat(F,"'");throw new Error("syntax-rules: ".concat(k))}var C=j(i);if(typeof C!=="undefined"){return C}}return i}return N(t,{})}function Zu(e){return na(e)||e===U||e===null}function Xu(e){return typeof e==="function"&&typeof e.bind==="function"}function ea(e){return e instanceof hs}function ta(e){return Xu(e)||ea(e)}function ra(e){if(e instanceof ki){return false}if(e instanceof Promise){return true}return e&&Xu(e.then)}function na(e){return typeof e==="undefined"}function ia(e){switch(_(e)){case"string":return $a(e);case"bigint":return C(e);case"number":if(Number.isNaN(e)){return Uo}else{return C(e)}}return e}function ua(n,i){var e=Object.getOwnPropertyNames(n);var t=Object.getOwnPropertySymbols(n);e.concat(t).forEach(function(e){var t=i(n[e]);var r=Object.getOwnPropertyDescriptor(n,e);if(!r||r.writable&&n[e]!==t){n[e]=t}});return n}function aa(t){var e=[$a,C].some(function(e){return t instanceof e});if(e){return t.valueOf()}if(t instanceof Array){return t.map(aa)}if(t instanceof ki){delete t.then}if(wu(t)){return ua(t,aa)}return t}function oa(e,t){if(e instanceof M){e.markCycles();return Io(e)}if(Xu(e)){if(t){return ca(e,t)}}return ia(e)}function sa(e){if(la(e)){return e[va]}return e}function ca(e,t){if(e[Symbol["for"]("__bound__")]){return e}var r=e.bind(t);var n=Object.getOwnPropertyNames(e);var i=hn(n),u;try{for(i.s();!(u=i.n()).done;){var a=u.value;if(xa(a)){try{r[a]=e[a]}catch(e){}}}}catch(e){i.e(e)}finally{i.f()}Fa(r,"__fn__",e);Fa(r,"__context__",t);Fa(r,"__bound__",true);if(Ba(e)){Fa(r,"__native__",true)}if(wu(t)&&Ca(e)){Fa(r,"__method__",true)}r.valueOf=function(){return e};return r}function fa(e){return la(e)&&e[Symbol["for"]("__context__")]===Object}function la(e){return!!(Xu(e)&&e[va])}function ha(e){if(Xu(e)){var t=e[da];if(t&&(t===Gs||t.constructor&&t.constructor.__class__)){return true}}return false}function pa(e){return e instanceof ho||e instanceof po}function _a(e){if(Xu(e)){if(pa(e[da])){return true}}return false}var da=Symbol["for"]("__context__");var va=Symbol["for"]("__fn__");var ya=Symbol["for"]("__data__");var ma=Symbol["for"]("__ref__");var ga=Symbol["for"]("__cycles__");var ba=Symbol["for"]("__class__");var wa=Symbol["for"]("__method__");var Da=Symbol["for"]("__prototype__");var Ea=Symbol["for"]("__lambda__");var Aa=["name","length","caller","callee","arguments","prototype"];function xa(e){return!Aa.includes(e)}function Fa(e,t,r){Object.defineProperty(e,Symbol["for"](t),{get:function e(){return r},set:function e(){},configurable:false,enumerable:false})}function ka(t,r){try{Object.defineProperty(t,"length",{get:function e(){return r}});return t}catch(e){var n=new Array(r).fill(0).map(function(e,t){return"a"+t}).join(",");var i=new Function("f","return function(".concat(n,") {\n return f.apply(this, arguments);\n };"));return i(t)}}function Ca(e){return e&&e[Ea]}function Oa(e){return e&&e[wa]}function Sa(e){return Ca(e)&&!e[Da]&&!Oa(e)&&!_a(e)}function Ba(e){var t=Symbol["for"]("__native__");return Xu(e)&&e.toString().match(/\{\s*\[native code\]\s*\}/)&&(e.name.match(/^bound /)&&e[t]===true||!e.name.match(/^bound /)&&!e[t])}function ja(e){var g;switch(e){case Symbol["for"]("letrec"):g="letrec";break;case Symbol["for"]("let"):g="let";break;case Symbol["for"]("let*"):g="let*";break;default:throw new Error("Invalid let_macro value")}return Vu.defmacro(g,function(t,e){var f=e.dynamic_scope,l=e.error,n=e.macro_expand;var h;if(t.car instanceof L){if(!(t.cdr.car instanceof M||t.cdr.car===U)){throw new Error("let require list of pairs")}var r;if(t.cdr.car===U){h=U;r=U}else{r=t.cdr.car.map(function(e){return e.car});h=t.cdr.car.map(function(e){return e.cdr.car})}return M.fromArray([L("letrec"),[[t.car,M(L("lambda"),M(r,t.cdr.cdr))]],M(t.car,h)])}else if(n){return}var p=this;h=qo.get("list->array")(t.car);var _=p.inherit(g);var d,v;if(g==="let*"){v=_}else if(g==="let"){d=[]}var y=0;function m(){var e=new M(new L("begin"),t.cdr);return _s(e,{env:_,dynamic_scope:f,error:l})}return function t(){var r=h[y++];if(f){f=g==="let*"?_:p}if(!r){if(d&&d.length){var e=d.map(function(e){return e.value});var n=e.filter(ra);if(n.length){return Ci(e).then(function(e){for(var t=0,r=e.length;t1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;var i=this;if(r){r=this}var u=e;var a=[];while(u instanceof M){a.push(_s(u.car,{env:i,dynamic_scope:r,error:n}));u=u.cdr}var o=a.filter(ra).length;if(o){return Ci(a).then(s.bind(this))}else{return s.call(this,a)}})}function Pa(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2?n-2:0),u=2;u1&&arguments[1]!==undefined?arguments[1]:null;return function(){for(var e=arguments.length,t=new Array(e),r=0;r1?e-1:0),r=1;r=a){return u.apply(this,n)}else{return i}}return i.apply(this,arguments)}}function Va(n,i){h("limit",i,"function",2);return function(){for(var e=arguments.length,t=new Array(e),r=0;r1){e=e.toLowerCase();if(za.__names__[e]){t=e;e=za.__names__[e]}else{throw new Error("Internal: Unknown named character")}}else{t=za.__rev_names__[e]}Object.defineProperty(this,"__char__",{value:e,enumerable:true});if(t){Object.defineProperty(this,"__name__",{value:t,enumerable:true})}}za.__names__=Un;za.__rev_names__={};Object.keys(za.__names__).forEach(function(e){var t=za.__names__[e];za.__rev_names__[t]=e});za.prototype.toUpperCase=function(){return za(this.__char__.toUpperCase())};za.prototype.toLowerCase=function(){return za(this.__char__.toLowerCase())};za.prototype.toString=function(){return"#\\"+(this.__name__||this.__char__)};za.prototype.valueOf=za.prototype.serialize=function(){return this.__char__};function $a(e){if(typeof this!=="undefined"&&!(this instanceof $a)||typeof this==="undefined"){return new $a(e)}if(e instanceof Array){this.__string__=e.map(function(e,t){h("LString",e,"character",t+1);return e.toString()}).join("")}else{this.__string__=e.valueOf()}}{var Ja=["length","constructor"];var Ka=Object.getOwnPropertyNames(String.prototype).filter(function(e){return!Ja.includes(e)});var Ga=function e(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r0){r.push(this.__string__.substring(0,e))}r.push(t);if(e1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof C){return e}if(typeof this!=="undefined"&&!(this instanceof C)||typeof this==="undefined"){return new C(e,t)}if(typeof e==="undefined"){throw new Error("Invalid LNumber constructor call")}var r=C.getType(e);if(C.types[r]){return C.types[r](e,t)}var n=e instanceof Array&&$a.isString(e[0])&&C.isNumber(e[1]);if(e instanceof C){return C(e.value)}if(!C.isNumber(e)&&!n){throw new Error("You can't create LNumber from ".concat(us(e)))}if(e===null){e=0}var i;if(n){var c=e,u=j(c,2),a=u[0],o=u[1];if(a instanceof $a){a=a.valueOf()}if(o instanceof C){o=o.valueOf()}var f=a.match(/^([+-])/);var l=false;if(f){a=a.replace(/^[+-]/,"");if(f[1]==="-"){l=true}}}if(Number.isNaN(e)){return uo(e)}else if(typeof BigInt!=="undefined"){if(typeof e!=="bigint"){if(n){var s;switch(o){case 8:s="0o";break;case 16:s="0x";break;case 2:s="0b";break;case 10:s="";break}if(typeof s==="undefined"){var h=BigInt(o);i=q(a).map(function(e,t){return BigInt(parseInt(e,o))*ro(h,BigInt(t))}).reduce(function(e,t){return e+t})}else{i=BigInt(s+a)}}else{i=BigInt(e)}if(l){i*=BigInt(-1)}}else{i=e}return lo(i,true)}else if(typeof xn!=="undefined"&&!(e instanceof xn)){if(e instanceof Array){return lo(p(xn,q(e)))}return lo(new xn(e))}else if(n){this.constant(parseInt(a,o),"integer")}else{this.constant(e,"integer")}}C.prototype.constant=function(e,t){Object.defineProperty(this,"__value__",{value:e,enumerable:true});Object.defineProperty(this,"__type__",{value:t,enumerable:true})};C.types={float:function e(t){return new uo(t)},complex:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isComplex(t)){t={im:0,re:t}}return new io(t,r)},rational:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isRational(t)){t={num:t,denom:1}}return new fo(t,r)}};C.prototype.serialize=function(){return this.__value__};C.prototype.isNaN=function(){return Number.isNaN(this.__value__)};C.prototype.gcd=function(e){var t=this.abs();e=e.abs();if(e.cmp(t)===1){var r=t;t=e;e=r}while(true){t=t.rem(e);if(t.cmp(0)===0){return e}e=e.rem(t);if(e.cmp(0)===0){return t}}};C.isFloat=function e(t){return t instanceof uo||Number(t)===t&&t%1!==0};C.isNumber=function(e){return e instanceof C||C.isNative(e)||C.isBN(e)};C.isComplex=function(e){if(!e){return false}var t=e instanceof io||(C.isNumber(e.im)||Number.isNaN(e.im))&&(C.isNumber(e.re)||Number.isNaN(e.re));return t};C.isRational=function(e){if(!e){return false}return e instanceof fo||C.isNumber(e.num)&&C.isNumber(e.denom)};C.isInteger=function(e){if(!(C.isNative(e)||e instanceof C)){return false}if(C.isFloat(e)){return false}if(C.isRational(e)){return false}if(C.isComplex(e)){return false}return true};C.isNative=function(e){return typeof e==="bigint"||typeof e==="number"};C.isBigInteger=function(e){return e instanceof lo||typeof e==="bigint"||C.isBN(e)};C.isBN=function(e){return typeof xn!=="undefined"&&e instanceof xn};C.getArgsType=function(e,t){if(e instanceof uo||t instanceof uo){return uo}if(e instanceof lo||t instanceof lo){return lo}return C};C.prototype.toString=function(e){if(Number.isNaN(this.__value__)){return"+nan.0"}if(e>2&&e<36){return this.__value__.toString(e)}return this.__value__.toString()};C.prototype.asType=function(e){var t=C.getType(this);return C.types[t]?C.types[t](e):C(e)};C.prototype.isBigNumber=function(){return typeof this.__value__==="bigint"||typeof xn!=="undefined"&&!(this.value instanceof xn)};["floor","ceil","round"].forEach(function(e){C.prototype[e]=function(){if(this["float"]||C.isFloat(this.__value__)){return C(Math[e](this.__value__))}else{return C(Math[e](this.valueOf()))}}});C.prototype.valueOf=function(){if(C.isNative(this.__value__)){return Number(this.__value__)}else if(C.isBN(this.__value__)){return this.__value__.toNumber()}};var Za=function(){var e=function e(t,r){return[t,r]};return{bigint:{bigint:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},integer:{integer:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},float:{bigint:function e(t,r){return[t,r&&uo(r.valueOf())]},integer:function e(t,r){return[t,r&&uo(r.valueOf())]},float:e,rational:function e(t,r){return[t,r&&uo(r.valueOf())]},complex:function e(t,r){return[{re:t,im:uo(0)},r]}},complex:{bigint:t("bigint"),integer:t("integer"),float:t("float"),rational:t("rational"),complex:function f(e,t){var r=C.coerce(e.__re__,t.__re__),n=j(r,2),i=n[0],u=n[1];var a=C.coerce(e.__im__,t.__im__),o=j(a,2),s=o[0],c=o[1];return[{im:s,re:i},{im:c,re:u}]}},rational:{bigint:function e(t,r){return[t,r&&{num:r,denom:1}]},integer:function e(t,r){return[t,r&&{num:r,denom:1}]},float:function e(t,r){return[uo(t.valueOf()),r]},rational:e,complex:function e(t,r){return[{im:Xa(t.__type__,r.__im__.__type__,0)[0],re:Xa(t.__type__,r.__re__.__type__,t)[0]},{im:Xa(t.__type__,r.__im__.__type__,r.__im__)[0],re:Xa(t.__type__,r.__re__.__type__,r.__re__)[0]}]}}};function t(r){return function(e,t){return[{im:Xa(r,e.__im__.__type__,0,e.__im__)[1],re:Xa(r,e.__re__.__type__,0,e.__re__)[1]},{im:Xa(r,e.__im__.__type__,0,0)[1],re:Xa(r,t.__type__,0,t)[1]}]}}}();function Xa(e,t,r,n){return Za[e][t](r,n)}C.coerce=function(e,t){var r=C.getType(e);var n=C.getType(t);if(!Za[r]){throw new Error("LNumber::coerce unknown lhs type ".concat(r))}else if(!Za[r][n]){throw new Error("LNumber::coerce unknown rhs type ".concat(n))}var i=Za[r][n](e,t);return i.map(function(e){return C(e,true)})};C.prototype.coerce=function(e){if(!(typeof e==="number"||e instanceof C)){throw new Error("LNumber: you can't coerce ".concat(us(e)))}if(typeof e==="number"){e=C(e)}return C.coerce(this,e)};C.getType=function(e){if(e instanceof C){return e.__type__}if(C.isFloat(e)){return"float"}if(C.isComplex(e)){return"complex"}if(C.isRational(e)){return"rational"}if(typeof e==="number"){return"integer"}if(typeof BigInt!=="undefined"&&typeof e!=="bigint"||typeof xn!=="undefined"&&!(e instanceof xn)){return"bigint"}};C.prototype.isFloat=function(){return!!(C.isFloat(this.__value__)||this["float"])};var eo={add:"+",sub:"-",mul:"*",div:"/",rem:"%",or:"|",and:"&",neg:"~",shl:">>",shr:"<<"};var to={};Object.keys(eo).forEach(function(t){to[eo[t]]=t;C.prototype[t]=function(e){return this.op(eo[t],e)}});C._ops={"*":function e(t,r){return t*r},"+":function e(t,r){return t+r},"-":function e(t,r){if(typeof r==="undefined"){return-t}return t-r},"/":function e(t,r){return t/r},"%":function e(t,r){return t%r},"|":function e(t,r){return t|r},"&":function e(t,r){return t&r},"~":function e(t){return~t},">>":function e(t,r){return t>>r},"<<":function e(t,r){return t<1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof io)||typeof this==="undefined"){return new io(e,t)}if(e instanceof io){return io({im:e.__im__,re:e.__re__})}if(C.isNumber(e)&&t){if(!t){return Number(e)}}else if(!C.isComplex(e)){var r="Invalid constructor call for LComplex expect &(:im :re ) object but got ".concat(Pu(e));throw new Error(r)}var n=e.im instanceof C?e.im:C(e.im);var i=e.re instanceof C?e.re:C(e.re);this.constant(n,i)}io.prototype=Object.create(C.prototype);io.prototype.constructor=io;io.prototype.constant=function(e,t){Object.defineProperty(this,"__im__",{value:e,enumerable:true});Object.defineProperty(this,"__re__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"complex",enumerable:true})};io.prototype.serialize=function(){return{re:this.__re__,im:this.__im__}};io.prototype.toRational=function(e){if(C.isFloat(this.__im__)&&C.isFloat(this.__re__)){var t=uo(this.__im__).toRational(e);var r=uo(this.__re__).toRational(e);return io({im:t,re:r})}return this};io.prototype.pow=function(e){throw new Error("Not yet implemented")};io.prototype.add=function(e){return this.complex_op("add",e,function(e,t,r,n){return{re:e.add(t),im:r.add(n)}})};io.prototype.factor=function(){if(this.__im__ instanceof uo||this.__im__ instanceof uo){var e=this.__re__,t=this.__im__;var r,n;if(e instanceof uo){r=e.toRational().mul(e.toRational())}else{r=e.mul(e)}if(t instanceof uo){n=t.toRational().mul(t.toRational())}else{n=t.mul(t)}return r.add(n)}else{return this.__re__.mul(this.__re__).add(this.__im__.mul(this.__im__))}};io.prototype.modulus=function(){return this.factor().sqrt()};io.prototype.conjugate=function(){return io({re:this.__re__,im:this.__im__.sub()})};io.prototype.sqrt=function(){var e=this.modulus();var t,r;if(e.cmp(0)===0){t=r=e}else if(this.__re__.cmp(0)===1){t=uo(.5).mul(e.add(this.__re__)).sqrt();r=this.__im__.div(t).div(2)}else{r=uo(.5).mul(e.sub(this.__re__)).sqrt();if(this.__im__.cmp(0)===-1){r=r.sub()}t=this.__im__.div(r).div(2)}return io({im:r,re:t})};io.prototype.div=function(e){if(C.isNumber(e)&&!C.isComplex(e)){if(!(e instanceof C)){e=C(e)}var t=this.__re__.div(e);var r=this.__im__.div(e);return io({re:t,im:r})}else if(!C.isComplex(e)){throw new Error("[LComplex::div] Invalid value")}if(this.cmp(e)===0){var n=this.coerce(e),i=j(n,2),f=i[0],u=i[1];var l=f.__im__.div(u.__im__);return l.coerce(u.__re__)[0]}var h=this.coerce(e),a=j(h,2),p=a[0],o=a[1];var s=o.factor();var _=o.conjugate();var c=p.mul(_);if(!C.isComplex(c)){return c.div(s)}var d=c.__re__.op("/",s);var v=c.__im__.op("/",s);return io({re:d,im:v})};io.prototype.sub=function(e){return this.complex_op("sub",e,function(e,t,r,n){return{re:e.sub(t),im:r.sub(n)}})};io.prototype.mul=function(e){return this.complex_op("mul",e,function(e,t,r,n){var i={re:e.mul(t).sub(r.mul(n)),im:e.mul(n).add(t.mul(r))};return i})};io.prototype.complex_op=function(e,t,i){var u=this;var r=function e(t,r){var n=i(u.__re__,t,u.__im__,r);if("im"in n&&"re"in n){if(n.im.cmp(0)===0){return n.re}return io(n,true)}return n};if(typeof t==="undefined"){return r()}if(C.isNumber(t)&&!C.isComplex(t)){if(!(t instanceof C)){t=C(t)}var n=t.asType(0);t={__im__:n,__re__:t}}else if(!C.isComplex(t)){throw new Error("[LComplex::".concat(e,"] Invalid value"))}var a=t.__re__ instanceof C?t.__re__:this.__re__.asType(t.__re__);var o=t.__im__ instanceof C?t.__im__:this.__im__.asType(t.__im__);return r(a,o)};io._op={"+":"add","-":"sub","*":"mul","/":"div"};io.prototype._op=function(e,t){var r=io._op[e];return this[r](t)};io.prototype.cmp=function(e){var t=this.coerce(e),r=j(t,2),n=r[0],i=r[1];var u=n.__re__.coerce(i.__re__),a=j(u,2),o=a[0],f=a[1];var s=o.cmp(f);if(s!==0){return s}else{var l=n.__im__.coerce(i.__im__),c=j(l,2),h=c[0],p=c[1];return h.cmp(p)}};io.prototype.valueOf=function(){return[this.__re__,this.__im__].map(function(e){return e.valueOf()})};io.prototype.toString=function(){var e;if(this.__re__.cmp(0)!==0){e=[Pu(this.__re__)]}else{e=[]}var t=this.__im__.valueOf();var r=[Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY].includes(t);var n=Pu(this.__im__);if(!r&&!Number.isNaN(t)){var i=this.__im__.cmp(0);if(i<0||i===0&&this.__im__._minus){e.push("-")}else{e.push("+")}n=n.replace(/^-/,"")}e.push(n);e.push("i");return e.join("")};function uo(e){if(typeof this!=="undefined"&&!(this instanceof uo)||typeof this==="undefined"){return new uo(e)}if(!C.isNumber(e)){throw new Error("Invalid constructor call for LFloat")}if(e instanceof C){return uo(e.valueOf())}if(typeof e==="number"){if(Object.is(e,-0)){Object.defineProperty(this,"_minus",{value:true})}this.constant(e,"float")}}uo.prototype=Object.create(C.prototype);uo.prototype.constructor=uo;uo.prototype.toString=function(){if(this.__value__===Number.NEGATIVE_INFINITY){return"-inf.0"}if(this.__value__===Number.POSITIVE_INFINITY){return"+inf.0"}if(Number.isNaN(this.__value__)){return"+nan.0"}var e=this.__value__.toString();if(!C.isFloat(this.__value__)&&!e.match(/e/i)){var t=e+".0";return this._minus?"-"+t:t}return e.replace(/^([0-9]+)e/,"$1.0e")};uo.prototype._op=function(e,t){if(t instanceof C){t=t.__value__}var r=C._ops[e];if(e==="/"&&this.__value__===0&&t===0){return NaN}return uo(r(this.__value__,t))};uo.prototype.toRational=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){return ao(this.__value__.valueOf())}return oo(e.valueOf())(this.__value__.valueOf())};uo.prototype.sqrt=function(){var e=this.valueOf();if(this.cmp(0)<0){var t=uo(Math.sqrt(-e));return io({re:0,im:t})}return uo(Math.sqrt(e))};uo.prototype.abs=function(){var e=this.valueOf();if(e<0){e=-e}return uo(e)};var ao=oo(1e-10);function oo(n){return function(e){var t=function e(n,t,r){var i=function e(t,r){return r0){i=co(n,r)}else if(n.cmp(r)<=0){i=r}else if(r.cmp(0)>0){i=co(r,n)}else if(t.cmp(0)<0){i=C(co(n.sub(),r.sub())).sub()}else{i=C(0)}if(C.isFloat(t)||C.isFloat(e)){return uo(i)}return i}function co(e,t){var r=C(e).floor();var n=C(t).floor();if(e.cmp(r)<1){return r}else if(r.cmp(n)===0){var i=C(1).div(t.sub(n));var u=C(1).div(e.sub(r));return r.add(C(1).div(co(i,u)))}else{return r.add(C(1))}}function fo(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof fo)||typeof this==="undefined"){return new fo(e,t)}if(!C.isRational(e)){throw new Error("Invalid constructor call for LRational")}var r,n;if(e instanceof fo){r=C(e.__num__);n=C(e.__denom__)}else{r=C(e.num);n=C(e.denom)}if(!t&&n.cmp(0)!==0){var i=r.op("%",n).cmp(0)===0;if(i){return C(r.div(n))}}this.constant(r,n)}fo.prototype=Object.create(C.prototype);fo.prototype.constructor=fo;fo.prototype.constant=function(e,t){Object.defineProperty(this,"__num__",{value:e,enumerable:true});Object.defineProperty(this,"__denom__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"rational",enumerable:true})};fo.prototype.serialize=function(){return{num:this.__num__,denom:this.__denom__}};fo.prototype.pow=function(e){var t=e.cmp(0);if(t===0){return C(1)}if(t===-1){e=e.sub();var r=this.__denom__.pow(e);var n=this.__num__.pow(e);return fo({num:r,denom:n})}var i=this;e=e.valueOf();while(e>1){i=i.mul(this);e--}return i};fo.prototype.sqrt=function(){var e=this.__num__.sqrt();var t=this.__denom__.sqrt();if(e instanceof uo||t instanceof uo){return e.div(t)}return fo({num:e,denom:t})};fo.prototype.abs=function(){var e=this.__num__;var t=this.__denom__;if(e.cmp(0)===-1){e=e.sub()}if(t.cmp(0)!==1){t=t.sub()}return fo({num:e,denom:t})};fo.prototype.cmp=function(e){return C(this.valueOf(),true).cmp(e)};fo.prototype.toString=function(){var e=this.__num__.gcd(this.__denom__);var t,r;if(e.cmp(1)!==0){t=this.__num__.div(e);if(t instanceof fo){t=C(t.valueOf(true))}r=this.__denom__.div(e);if(r instanceof fo){r=C(r.valueOf(true))}}else{t=this.__num__;r=this.__denom__}var n=this.cmp(0)<0;if(n){if(t.abs().cmp(r.abs())===0){return t.toString()}}else if(t.cmp(r)===0){return t.toString()}return t.toString()+"/"+r.toString()};fo.prototype.valueOf=function(e){if(this.__denom__.cmp(0)===0){if(this.__num__.cmp(0)<0){return Number.NEGATIVE_INFINITY}return Number.POSITIVE_INFINITY}if(e){return C._ops["/"](this.__num__.value,this.__denom__.value)}return uo(this.__num__.valueOf()).div(this.__denom__.valueOf())};fo.prototype.mul=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__num__);var r=this.__denom__.mul(e.__denom__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.mul(a)};fo.prototype.div=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__denom__);var r=this.__denom__.mul(e.__num__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];var o=u.div(a);return o};fo.prototype._op=function(e,t){return this[to[e]](t)};fo.prototype.sub=function(e){if(typeof e==="undefined"){return this.mul(-1)}if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=e.__num__.sub();var r=e.__denom__;return this.add(fo({num:t,denom:r}))}if(!(e instanceof C)){e=C(e).sub()}else{e=e.sub()}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.add(a)};fo.prototype.add=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__denom__;var r=e.__denom__;var n=this.__num__;var i=e.__num__;var u,a;if(t!==r){a=r.mul(n).add(i.mul(t));u=t.mul(r)}else{a=n.add(i);u=t}return fo({num:a,denom:u})}if(C.isFloat(e)){return uo(this.valueOf()).add(e)}var o=C.coerce(this,e),s=j(o,2),c=s[0],f=s[1];return c.add(f)};function lo(e,t){if(typeof this!=="undefined"&&!(this instanceof lo)||typeof this==="undefined"){return new lo(e,t)}if(e instanceof lo){return lo(e.__value__,e._native)}if(!C.isBigInteger(e)){throw new Error("Invalid constructor call for LBigInteger")}this.constant(e,"bigint");Object.defineProperty(this,"_native",{value:t})}lo.prototype=Object.create(C.prototype);lo.prototype.constructor=lo;lo.bn_op={"+":"iadd","-":"isub","*":"imul","/":"idiv","%":"imod","|":"ior","&":"iand","~":"inot","<<":"ishrn",">>":"ishln"};lo.prototype.serialize=function(){return this.__value__.toString()};lo.prototype._op=function(e,t){if(typeof t==="undefined"){if(C.isBN(this.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](),false)}return lo(C._ops[e](this.__value__),true)}if(C.isBN(this.__value__)&&C.isBN(t.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](t),false)}var r=C._ops[e](this.__value__,t.__value__);if(e==="/"){var n=this.op("%",t).cmp(0)===0;if(n){return C(r)}return fo({num:this,denom:t})}return lo(r,true)};lo.prototype.sqrt=function(){var e;var t=this.cmp(0)<0;if(C.isNative(this.__value__)){e=C(Math.sqrt(t?-this.valueOf():this.valueOf()))}else if(C.isBN(this.__value__)){e=t?this.__value__.neg().sqrt():this.__value__.sqrt()}if(t){return io({re:0,im:e})}return e};C.NaN=C(NaN);function ho(e){var n=this;if(typeof this!=="undefined"&&!(this instanceof ho)||typeof this==="undefined"){return new ho(e)}h("InputPort",e,"function");$i(this,"__type__",xo);var i;Object.defineProperty(this,"__parser__",{enumerable:true,get:function e(){return i},set:function e(t){h("InputPort::__parser__",t,"parser");i=t}});this._read=e;this._with_parser=this._with_init_parser.bind(this,B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(n.char_ready()){t.next=5;break}t.next=3;return n._read();case 3:r=t.sent;i=new Li(r,{env:n});case 5:return t.abrupt("return",n.__parser__);case 6:case"end":return t.stop()}}},e)})));this.char_ready=function(){return!!this.__parser__&&this.__parser__.__lexer__.peek()!==Fo};this._make_defaults()}ho.prototype._make_defaults=function(){this.read=this._with_parser(function(e){return e.read_object()});this.read_line=this._with_parser(function(e){return e.__lexer__.read_line()});this.read_char=this._with_parser(function(e){return e.__lexer__.read_char()});this.read_string=this._with_parser(function(e,t){if(!C.isInteger(t)){var r=C.getType(t);Qo("read-string",r,"integer")}return e.__lexer__.read_string(t.valueOf())});this.peek_char=this._with_parser(function(e){return e.__lexer__.peek_char()})};ho.prototype._with_init_parser=function(o,s){var c=this;return B(z.mark(function e(){var r,n,i,u,a=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return o.call(c);case 2:r=t.sent;for(n=a.length,i=new Array(n),u=0;u"};function po(e){if(typeof this!=="undefined"&&!(this instanceof po)||typeof this==="undefined"){return new po(e)}h("OutputPort",e,"function");$i(this,"__type__",xo);this.write=e}po.prototype.is_open=function(){return this._closed!==true};po.prototype.close=function(){Object.defineProperty(this,"_closed",{get:function e(){return true},set:function e(){},configurable:false,enumerable:false});this.write=function(){throw new Error("output-port: port is closed")}};po.prototype.flush=function(){};po.prototype.toString=function(){return"#"};var _o=function(e){u(n,e);var r=fn(n);function n(e){var t;D(this,n);t=r.call(this,function(){var e;return(e=t)._write.apply(e,arguments)});h("BufferedOutputPort",e,"function");$i(i(t),"_fn",e,{hidden:true});$i(i(t),"_buffer",[],{hidden:true});return t}A(n,[{key:"flush",value:function e(){if(this._buffer.length){this._fn(this._buffer.join(""));this._buffer.length=0}}},{key:"_write",value:function e(){var t=this;for(var r=arguments.length,n=new Array(r),i=0;i"};vo.prototype.valueOf=function(){return this.__buffer__.map(function(e){return e.valueOf()}).join("")};function yo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof yo)||typeof this==="undefined"){return new yo(e,t)}h("OutputFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",xo);this.write=function(e){if(!$a.isString(e)){e=Pu(e)}else{e=e.valueOf()}r.fs().write(r._fd,e,function(e){if(e){throw e}})}}yo.prototype=Object.create(po.prototype);yo.prototype.constructor=yo;yo.prototype.fs=function(){if(!this._fs){this._fs=this.internal("fs")}return this._fs};yo.prototype.internal=function(e){return Yo.get("**internal-env**").get(e)};yo.prototype.close=function(){var n=this;return new Promise(function(t,r){n.fs().close(n._fd,function(e){if(e){r(e)}else{$i(n,"_fd",null,{hidden:true});po.prototype.close.call(n);t()}})})};yo.prototype.toString=function(){return"#")};function mo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof mo)||typeof this==="undefined"){return new mo(e)}h("InputStringPort",e,"string");t=t||qo;e=e.valueOf();this._with_parser=this._with_init_parser.bind(this,function(){if(!r.__parser__){r.__parser__=new Li(e,{env:t})}return r.__parser__});$i(this,"__type__",xo);this._make_defaults()}mo.prototype.char_ready=function(){return true};mo.prototype=Object.create(ho.prototype);mo.prototype.constructor=mo;mo.prototype.toString=function(){return"#"};function go(e){if(typeof this!=="undefined"&&!(this instanceof go)||typeof this==="undefined"){return new go(e)}h("InputByteVectorPort",e,"uint8array");$i(this,"__vector__",e);$i(this,"__type__",Ao);var r=0;Object.defineProperty(this,"__index__",{enumerable:true,get:function e(){return r},set:function e(t){h("InputByteVectorPort::__index__",t,"number");if(t instanceof C){t=t.valueOf()}if(typeof t==="bigint"){t=Number(t)}if(Math.floor(t)!==t){throw new Error("InputByteVectorPort::__index__ value is "+"not integer")}r=t}})}go.prototype=Object.create(ho.prototype);go.prototype.constructor=go;go.prototype.toString=function(){return"#"};go.prototype.close=function(){var t=this;$i(this,"__vector__",U);["read_u8","close","peek_u8","read_u8_vector"].forEach(function(e){t[e]=function(){throw new Error("Input-binary-port: port is closed")}});this.char_ready=function(){return false}};go.prototype.u8_ready=function(){return true};go.prototype.peek_u8=function(){if(this.__index__>=this.__vector__.length){return Fo}return this.__vector__[this.__index__]};go.prototype.skip=function(){if(this.__index__<=this.__vector__.length){++this.__index__}};go.prototype.read_u8=function(){var e=this.peek_u8();this.skip();return e};go.prototype.read_u8_vector=function(e){if(typeof e==="undefined"){e=this.__vector__.length}else if(e>this.__index__+this.__vector__.length){e=this.__index__+this.__vector__.length}if(this.peek_u8()===Fo){return Fo}return this.__vector__.slice(this.__index__,e)};function bo(){if(typeof this!=="undefined"&&!(this instanceof bo)||typeof this==="undefined"){return new bo}$i(this,"__type__",Ao);$i(this,"_buffer",[],{hidden:true});this.write=function(e){h("write",e,["number","uint8array"]);if(C.isNumber(e)){this._buffer.push(e.valueOf())}else{var t;(t=this._buffer).push.apply(t,q(Array.from(e)))}};Object.defineProperty(this,"__buffer__",{enumerable:true,get:function e(){return Uint8Array.from(this._buffer)}})}bo.prototype=Object.create(po.prototype);bo.prototype.constructor=bo;bo.prototype.close=function(){po.prototype.close.call(this);$i(this,"_buffer",null,{hidden:true})};bo.prototype._close_guard=function(){if(this._closed){throw new Error("output-port: binary port is closed")}};bo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};bo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};bo.prototype.toString=function(){return"#"};bo.prototype.valueOf=function(){return this.__buffer__};function wo(e,t){if(typeof this!=="undefined"&&!(this instanceof wo)||typeof this==="undefined"){return new wo(e,t)}mo.call(this,e);h("InputFilePort",t,"string");$i(this,"__filename__",t)}wo.prototype=Object.create(mo.prototype);wo.prototype.constructor=wo;wo.prototype.toString=function(){return"#")};function Do(e,t){if(typeof this!=="undefined"&&!(this instanceof Do)||typeof this==="undefined"){return new Do(e,t)}go.call(this,e);h("InputBinaryFilePort",t,"string");$i(this,"__filename__",t)}Do.prototype=Object.create(go.prototype);Do.prototype.constructor=Do;Do.prototype.toString=function(){return"#")};function Eo(e,t){if(typeof this!=="undefined"&&!(this instanceof Eo)||typeof this==="undefined"){return new Eo(e,t)}h("OutputBinaryFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",Ao);var u,r;this.write=function(e){var n=this;h("write",e,["number","uint8array"]);var i;if(!u){u=this.internal("fs")}if(!r){r=this.internal("Buffer")}if(C.isNumber(e)){i=r.from([e.valueOf()])}else{i=r.from(Array.from(e))}return new Promise(function(t,r){u.write(n._fd,i,function(e){if(e){r(e)}else{t()}})})}}Eo.prototype=Object.create(yo.prototype);Eo.prototype.constructor=Eo;Eo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};Eo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};var Ao=Symbol["for"]("binary");var xo=Symbol["for"]("text");var Fo=new ko;function ko(){}ko.prototype.toString=function(){return"#"};function Co(e){var c=this;var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.stderr,n=t.stdin,i=t.stdout,u=t.command_line,a=u===void 0?null:u,o=F(t,cn);if(typeof this!=="undefined"&&!(this instanceof Co)||typeof this==="undefined"){return new Co(e,vn({stdin:n,stdout:i,stderr:r,command_line:a},o))}if(typeof e==="undefined"){e="anonymous"}this.__env__=Yo.inherit(e,o);this.__env__.set("parent.frame",y("parent.frame",function(){return c.__env__},qo.__env__["parent.frame"].__doc__));var f="**interaction-environment-defaults**";this.set(f,Ou(o).concat(f));var s=Lo.inherit("internal-".concat(e));if(pa(n)){s.set("stdin",n)}if(pa(r)){s.set("stderr",r)}if(pa(i)){s.set("stdout",i)}s.set("command-line",a);Vo(this.__env__,s)}Co.prototype.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Interpreter::exec",e,["string","array"],1);h("Interpreter::exec",t,"boolean",2);qo.set("**interaction-environment**",this.__env__);if(r===null){r=this.__env__}return vs(e,r,t?r:false)};Co.prototype.get=function(e){var t=this.__env__.get(e);if(Xu(t)){return t.bind(this.__env__)}return t};Co.prototype.set=function(e,t){return this.__env__.set(e,t)};Co.prototype.constant=function(e,t){return this.__env__.constant(e,t)};function Oo(e,t){this.name="LipsError";this.message=e;this.args=t;this.stack=(new Error).stack}Oo.prototype=new Error;Oo.prototype.constructor=Oo;function So(e,t,r){if(arguments.length===1){if(_(arguments[0])==="object"){e=arguments[0];t=null}else if(typeof arguments[0]==="string"){e={};t=null;r=arguments[0]}}this.__docs__=new Map;this.__env__=e;this.__parent__=t;this.__name__=r||"anonymous"}So.prototype.list=function(){return Ou(this.__env__)};So.prototype.fs=function(){return this.get("**fs**")};So.prototype.unset=function(e){if(e instanceof L){e=e.valueOf()}if(e instanceof $a){e=e.valueOf()}delete this.__env__[e]};So.prototype.inherit=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(_(e)==="object"){t=e}if(!e||_(e)==="object"){e="child of "+(this.__name__||"unknown")}return new So(t||{},this,e)};So.prototype.doc=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(t){if(!r){t=Hi(t)}this.__docs__.set(e,t);return this}if(this.__docs__.has(e)){return this.__docs__.get(e)}if(this.__parent__){return this.__parent__.doc(e)}};So.prototype.newFrame=function(e,t){var n=this.inherit("__frame__");n.set("parent.frame",y("parent.frame",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;e=e.valueOf();var t=n.__parent__;if(!(t instanceof So)){return U}if(e<=0){return t}var r=t.get("parent.frame");return r(e-1)},qo.__env__["parent.frame"].__doc__));t.callee=e;n.set("arguments",t);return n};So.prototype._lookup=function(e){if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(this.__env__.hasOwnProperty(e)){return Bo(this.__env__[e])}if(this.__parent__){return this.__parent__._lookup(e)}};So.prototype.toString=function(){return"#"};So.prototype.clone=function(){var t=this;var r={};Object.keys(this.__env__).forEach(function(e){r[e]=t.__env__[e]});return new So(r,this.__parent__,this.__name__)};So.prototype.merge=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"merge";h("Environment::merge",e,"environment");return this.inherit(t,e.__env__)};function Bo(e){if(typeof this!=="undefined"&&!(this instanceof Bo)||typeof this==="undefined"){return new Bo(e)}this.value=e}Bo.isUndefined=function(e){return e instanceof Bo&&typeof e.value==="undefined"};Bo.prototype.valueOf=function(){return this.value};function jo(e){if(e.length){if(e.length===1){return e[0]}}if(typeof this!=="undefined"&&!(this instanceof jo)||typeof this==="undefined"){return new jo(e)}this.__values__=e}jo.prototype.toString=function(){return this.__values__.map(function(e){return Pu(e)}).join("\n")};jo.prototype.valueOf=function(){return this.__values__};So.prototype.get=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};h("Environment::get",e,["symbol","string"]);var r=t.throwError,c=r===void 0?true:r;var n=e;if(n instanceof L||n instanceof $a){n=n.valueOf()}var i=this._lookup(n);if(i instanceof Bo){if(Bo.isUndefined(i)){return undefined}return oa(i.valueOf())}var u;if(e instanceof L&&e[L.object]){u=e[L.object]}else if(typeof n==="string"){u=n.split(".").filter(Boolean)}if(u&&u.length>0){var f=u,a=m(f),o=a[0],s=a.slice(1);i=this._lookup(o);if(s.length){try{if(i instanceof Bo){i=i.valueOf()}else{i=No(gn,o);if(Xu(i)){i=sa(i)}}if(typeof i!=="undefined"){return No.apply(void 0,[i].concat(q(s)))}}catch(e){throw e}}else if(i instanceof Bo){return oa(i.valueOf())}i=No(gn,n)}if(typeof i!=="undefined"){return i}if(c){throw new Error("Unbound variable `"+n.toString()+"'")}};So.prototype.set=function(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Environment::set",e,["string","symbol"]);if(C.isNumber(t)){t=C(t)}if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}this.__env__[e]=t;if(r){this.doc(e,r,true)}return this};So.prototype.constant=function(t,e){var r=this;if(this.__env__.hasOwnProperty(t)){throw new Error("Environment::constant: ".concat(t," already exists"))}if(arguments.length===1&&wu(arguments[0])){var n=arguments[0];Object.keys(n).forEach(function(e){r.constant(t,n[e])})}else{Object.defineProperty(this.__env__,t,{value:e,enumerable:true})}return this};So.prototype.has=function(e){return this.__env__.hasOwnProperty(e)};So.prototype.ref=function(e){var t=this;while(true){if(!t){break}if(t.has(e)){return t}t=t.__parent__}};So.prototype.parents=function(){var e=this;var t=[];while(e){t.unshift(e);e=e.__parent__}return t};function Io(e){if(ra(e)){return e.then(Io)}if(e instanceof M||e instanceof L){e[ya]=true}return e}var Po=Mi(wi('(lambda ()\n "[native code]"\n (throw "Invalid Invocation"))'))[0];var No=y("get",function c(e){var t;for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("peek-char",e,"input-port");return e.peek_char()},"(peek-char port)\n\n This function reads and returns a character from the string\n port, or, if there is no more data in the string port, it\n returns an EOF."),"read-line":y("read-line",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-line",e,"input-port");return e.read_line()},"(read-line port)\n\n This function reads and returns the next line from the input\n port."),"read-char":y("read-char",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-char",e,"input-port");return e.read_char()},"(read-char port)\n\n This function reads and returns the next character from the\n input port."),read:y("read",function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=f.length>0&&f[0]!==undefined?f[0]:null;if(!$a.isString(r)){t.next=30;break}n=false;i=false;t.prev=4;a=yn(Mi(r,this));case 6:t.next=8;return a.next();case 8:if(!(n=!(o=t.sent).done)){t.next=14;break}s=o.value;return t.abrupt("return",s);case 11:n=false;t.next=6;break;case 14:t.next=20;break;case 16:t.prev=16;t.t0=t["catch"](4);i=true;u=t.t0;case 20:t.prev=20;t.prev=21;if(!(n&&a["return"]!=null)){t.next=25;break}t.next=25;return a["return"]();case 25:t.prev=25;if(!i){t.next=28;break}throw u;case 28:return t.finish(25);case 29:return t.finish(20);case 30:if(r===null){c=Ro(this,"stdin")}else{c=r}Xo("read",c,"input-port");return t.abrupt("return",c.read.call(this));case 33:case"end":return t.stop()}}},e,this,[[4,16,20,30],[21,,25,29]])}));function t(){return e.apply(this,arguments)}return t}(),"(read [string])\n\n This function, if used with a string, will parse it and\n return the LIPS code, if there is any. If called with a\n port, it will parse the next item from the port. If called\n without an input, it will read a string from standard input\n (using the browser's prompt or a user defined input method)\n and calls itself with that string. This function can be used\n together with `eval` to evaluate code from a string."),pprint:y("pprint",function e(t){if(t instanceof M){t=new Gs.Formatter(t.toString(true))["break"]().format();qo.get("display").call(qo,t)}else{qo.get("write").call(qo,t)}qo.get("newline").call(qo)},"(pprint expression)\n\n This function will pretty print its input to stdout. If it is called\n with a non-list, it will just call the print function on its\n input."),print:y("print",function e(){var t=qo.get("display");var r=qo.get("newline");for(var n=arguments.length,i=new Array(n),u=0;u1?r-1:0),i=1;in.length){throw new Error("Not enough arguments")}var o=0;var s=qo.get("repr");t=t.replace(u,function(e){var t=e[1];if(t==="~"){return"~"}else if(t==="%"){return"\n"}else{var r=n[o++];if(t==="a"){return s(r)}else{return s(r,true)}}});a=t.match(/~([\S])/);if(a){throw new Error("format: Unrecognized escape sequence ".concat(a[1]))}return t},"(format string n1 n2 ...)\n\n This function accepts a string template and replaces any\n escape sequences in its inputs:\n\n * ~a value as if printed with `display`\n * ~s value as if printed with `write`\n * ~% newline character\n * ~~ literal tilde '~'\n\n If there are missing inputs or other escape characters it\n will error."),display:y("display",function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(r===null){r=Ro(this,"stdout")}else{h("display",r,"output-port")}var n=qo.get("repr")(t);r.write.call(qo,n)},"(display string [port])\n\n This function outputs the string to the standard output or\n the port if given. No newline."),"display-error":y("display-error",function e(){var t=Ro(this,"stderr");var r=qo.get("repr");for(var n=arguments.length,i=new Array(n),u=0;u1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;if(r){r=this}var i=this;var u;var a=_s(e.cdr.car,{env:this,dynamic_scope:r,error:n});a=as(a);function o(t,r,n){if(ra(t)){return t.then(function(e){return o(t,e,n)})}if(ra(r)){return r.then(function(e){return o(t,e,n)})}if(ra(n)){return n.then(function(e){return o(t,r,e)})}i.get("set-obj!").call(i,t,r,n);return n}if(e.car instanceof M&&L.is(e.car.car,".")){var f=e.car.cdr.car;var l=e.car.cdr.cdr.car;var h=_s(f,{env:this,dynamic_scope:r,error:n});var p=_s(l,{env:this,dynamic_scope:r,error:n});return o(h,p,a)}if(!(e.car instanceof L)){throw new Error("set! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var s=e.car.valueOf();u=this.ref(e.car.__name__);return Yi(a,function(e){if(!u){var t=s.split(".");if(t.length>1){var r=t.pop();var n=t.join(".");var i=c.get(n,{throwError:false});if(i){o(i,r,e);return}}throw new Error("Unbound variable `"+s+"'")}u.set(s,e)})}),"(set! name value)\n\n Macro that can be used to set the value of the variable or slot (mutate it).\n set! searches the scope chain until it finds first non empty slot and sets it."),"unset!":y(new Vu("set!",function(e){if(!(e.car instanceof L)){throw new Error("unset! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var t=e.car;var r=this.ref(t);if(r){delete r.__env__[t.__name__]}}),"(unset! name)\n\n Function to delete the specified name from environment.\n Trying to access the name afterwards will error."),"set-car!":y("set-car!",function(e,t){h("set-car!",e,"pair");e.car=t},"(set-car! obj value)\n\n Function that sets the car (first item) of the list/pair to specified value.\n The old value is lost."),"set-cdr!":y("set-cdr!",function(e,t){h("set-cdr!",e,"pair");e.cdr=t},"(set-cdr! obj value)\n\n Function that sets the cdr (tail) of the list/pair to specified value.\n It will destroy the list. The old tail is lost."),"empty?":y("empty?",function(e){return typeof e==="undefined"||e===U},"(empty? object)\n\n Function that returns #t if value is nil (an empty list) or undefined."),gensym:y("gensym",Fi,"(gensym)\n\n Generates a unique symbol that is not bound anywhere,\n to use with macros as meta name."),load:y("load",function e(o,t){h("load",o,"string");var s=this;if(s.__name__==="__frame__"){s=s.__parent__}if(!(t instanceof So)){if(s===qo){t=s}else{t=this.get("**interaction-environment**")}}var c="**module-path**";var f=qo.get(c,{throwError:false});o=o.valueOf();if(!o.match(/.[^.]+$/)){o+=".scm"}var r=o.match(/\.xcb$/);function l(e){if(r){e=Vs(e)}else{if(us(e)==="buffer"){e=e.toString()}e=e.replace(/^#!.*/,"");if(e.match(/^\{/)){e=Rs(e)}}return vs(e,t)}function n(e){return gn.fetch(e).then(function(e){return r?e.arrayBuffer():e.text()}).then(function(e){if(r){e=new Uint8Array(e)}return e})}if(Go()){return new Promise(function(){var r=B(z.mark(function e(r,n){var i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:i=An("path");if(!f){t.next=6;break}f=f.valueOf();o=i.join(f,o);t.next=12;break;case 6:u=s.get("command-line",{throwError:false});if(!u){t.next=11;break}t.next=10;return u();case 10:a=t.sent;case 11:if(a&&a!==U){process.cwd();o=i.join(i.dirname(a.car.valueOf()),o)}case 12:qo.set(c,i.dirname(o));An("fs").readFile(o,function(e,t){if(e){n(e);qo.set(c,f)}else{try{l(t).then(function(){r();qo.set(c,f)})["catch"](n)}catch(e){n(e)}}});case 14:case"end":return t.stop()}}},e)}));return function(e,t){return r.apply(this,arguments)}}())}if(f){f=f.valueOf();o=f+"/"+o.replace(/^\.?\/?/,"")}return n(o).then(function(e){qo.set(c,o.replace(/\/[^/]*$/,""));return l(e)}).then(function(){})["finally"](function(){qo.set(c,f)})},"(load filename)\n (load filename environment)\n\n Fetches the file (from disk or network) and evaluates its content as LIPS code.\n If the second argument is provided and it's an environment the evaluation\n will happen in that environment."),do:y(new Vu("do",function(){var r=B(z.mark(function e(r,h){var n,i,u,o,s,a,c,f,l,p,_;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=h.dynamic_scope,i=h.error;u=this;if(n){n=u}o=u.inherit("do");s=r.car;a=r.cdr.car;c=r.cdr.cdr;if(c!==U){c=new M(L("begin"),c)}f={env:u,dynamic_scope:n,error:i};l=s;case 10:if(!(l!==U)){t.next=21;break}p=l.car;t.t0=o;t.t1=p.car;t.next=16;return _s(p.cdr.car,f);case 16:t.t2=t.sent;t.t0.set.call(t.t0,t.t1,t.t2);l=l.cdr;t.next=10;break;case 21:f={env:o,dynamic_scope:n,error:i};_=z.mark(function e(){var r,n,i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(c!==U)){t.next=3;break}t.next=3;return Gs.evaluate(c,f);case 3:r=s;n={};case 5:if(!(r!==U)){t.next=15;break}i=r.car;if(!(i.cdr.cdr!==U)){t.next=12;break}t.next=10;return _s(i.cdr.cdr.car,f);case 10:u=t.sent;n[i.car.valueOf()]=u;case 12:r=r.cdr;t.next=5;break;case 15:a=Object.getOwnPropertySymbols(n);Object.keys(n).concat(a).forEach(function(e){o.set(e,n[e])});case 17:case"end":return t.stop()}}},e)});case 23:t.next=25;return _s(a.car,f);case 25:t.t3=t.sent;if(!(t.t3===false)){t.next=30;break}return t.delegateYield(_(),"t4",28);case 28:t.next=23;break;case 30:if(!(a.cdr!==U)){t.next=34;break}t.next=33;return _s(a.cdr.car,f);case 33:return t.abrupt("return",t.sent);case 34:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()),"(do (( )) (test return) . body)\n\n Iteration macro that evaluates the expression body in scope of the variables.\n On each loop it changes the variables according to the expression and runs\n test to check if the loop should continue. If test is a single value, the macro\n will return undefined. If the test is a pair of expressions the macro will\n evaluate and return the second expression after the loop exits."),if:y(new Vu("if",function(r,e){var n=e.dynamic_scope,i=e.error;if(n){n=this}var u=this;var t=function e(t){if(t===false){return _s(r.cdr.cdr.car,{env:u,dynamic_scope:n,error:i})}else{return _s(r.cdr.car,{env:u,dynamic_scope:n,error:i})}};if(r===U){throw new Error("too few expressions for `if`")}var a=_s(r.car,{env:u,dynamic_scope:n,error:i});return Yi(a,t)}),"(if cond true-expr false-expr)\n\n Macro that evaluates cond expression and if the value is true, it\n evaluates and returns true-expression, if not it evaluates and returns\n false-expression."),"let-env":new Vu("let-env",function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=e.dynamic_scope,n=e.error;h("let-env",t,"pair");var i=_s(t.car,{env:this,dynamic_scope:r,error:n});return Yi(i,function(e){h("let-env",e,"environment");return _s(M(L("begin"),t.cdr),{env:e,dynamic_scope:r,error:n})})},"(let-env env . body)\n\n Special macro that evaluates body in context of given environment\n object."),letrec:y(ja(Symbol["for"]("letrec")),"(letrec ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to\n names and then evaluates the body in context of that environment.\n Values are evaluated sequentially and the next value can access the\n previous values/names."),"letrec*":y(ja(Symbol["for"]("letrec")),"(letrec* ((a value-a) (b value-b) ...) . body)\n\n Same as letrec but the order of execution of the binding is guaranteed,\n so you can use recursive code as well as referencing the previous binding.\n\n In LIPS both letrec and letrec* behave the same."),"let*":y(ja(Symbol["for"]("let*")),"(let* ((a value-a) (b value-b) ...) . body)\n\n Macro similar to `let`, but the subsequent bindings after the first\n are evaluated in the environment including the previous let variables,\n so you can define one variable, and use it in the next's definition."),let:y(ja(Symbol["for"]("let")),"(let ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to names,\n and then evaluates the body in context of that environment. Values are evaluated\n sequentially but you can't access previous values/names when the next are\n evaluated. You can only get them in the body of the let expression. (If you want\n to define multiple variables and use them in each other's definitions, use\n `let*`.)"),"begin*":y(Ia("begin*",function(e){return e.pop()}),"(begin* . body)\n\n This macro is a parallel version of begin. It evaluates each expression\n in the body and if it's a promise it will await it in parallel and return\n the value of the last expression (i.e. it uses Promise.all())."),begin:y(new Vu("begin",function(e,t){var n=Object.assign({},t);var i=qo.get("list->array")(e);if(n.dynamic_scope){n.dynamic_scope=this}n.env=this;var u;return function t(){if(i.length){var e=i.shift();var r=_s(e,n);return Yi(r,function(e){u=e;return t()})}else{return u}}()}),"(begin . args)\n\n Macro that runs a list of expressions in order and returns the value\n of the last one. It can be used in places where you can only have a\n single expression, like (if)."),ignore:new Vu("ignore",function(e,t){var r=t.dynamic_scope,n=t.error;var i={env:this,error:n};if(r){i.dynamic_scope=this}_s(new M(new L("begin"),e),i)},"(ignore . body)\n\n Macro that will evaluate the expression and swallow any promises that may\n be created. It will discard any value that may be returned by the last body\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined."),"call/cc":y(Vu.defmacro("call/cc",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=vn({env:this},t);return Yi(_s(e.car,r),function(e){if(Xu(e)){return e(new hs(null))}})}),"(call/cc proc)\n\n Call-with-current-continuation.\n\n NOT SUPPORTED BY LIPS RIGHT NOW"),define:y(Vu.defmacro("define",function(r,e){var n=this;if(r.car instanceof M&&r.car.car instanceof L){var t=new M(new L("define"),new M(r.car.car,new M(new M(new L("lambda"),new M(r.car.cdr,r.cdr)))));return t}else if(e.macro_expand){return}if(e.dynamic_scope){e.dynamic_scope=this}e.env=n;var i=r.cdr.car;var u;if(i instanceof M){i=_s(i,e);u=true}else if(i instanceof L){i=n.get(i)}h("define",r.car,"symbol");return Yi(i,function(e){if(n.__name__===Ku.__merge_env__){n=n.__parent__}if(u&&(Xu(e)&&Ca(e)||e instanceof Ku)){e.__name__=r.car.valueOf();if(e.__name__ instanceof $a){e.__name__=e.__name__.valueOf()}}var t;if(r.cdr.cdr instanceof M&&$a.isString(r.cdr.cdr.car)){t=r.cdr.cdr.car.valueOf()}n.set(r.car,e,t,true)})}),'(define name expression)\n (define name expression "doc string")\n (define (function-name . args) . body)\n\n Macro for defining values. It can be used to define variables,\n or functions. If the first argument is list it will create a function\n with name being first element of the list. This form expands to\n `(define function-name (lambda args body))`'),"set-obj!":y("set-obj!",function(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var i=_(e);if(Zu(e)||i!=="object"&&i!=="function"){var u=Qo("set-obj!",us(e),["object","function"]);throw new Error(u)}h("set-obj!",t,["string","symbol","number"]);e=sa(e);t=t.valueOf();if(arguments.length===2){delete e[t]}else if(Nu(e)&&Xu(r)){e[t]=sa(r);e[t][Da]=true}else if(Xu(r)||ts(r)||r===U){e[t]=r}else{e[t]=r&&!Nu(r)?r.valueOf():r}if(Du){var a=e[t];Object.defineProperty(e,t,vn(vn({},n),{},{value:a}))}},"(set-obj! obj key value)\n (set-obj! obj key value props)\n\n Function set a property of a JavaScript object. props should be a vector of pairs,\n passed to Object.defineProperty."),"null-environment":y("null-environment",function(){return qo.inherit("null")},"(null-environment)\n\n Returns a clean environment with only the standard library."),values:y("values",function e(){for(var t=arguments.length,r=new Array(t),n=0;n1&&arguments[1]!==undefined?arguments[1]:{},h=e.dynamic_scope,p=e.error;var _=this;var d;if(l.cdr instanceof M&&$a.isString(l.cdr.car)&&l.cdr.cdr!==U){d=l.cdr.car.valueOf()}function v(){var e;if(h){if(!(this instanceof So)){e=_}else{e=this}}else{e=_}e=e.inherit("lambda");var t=l.car;var r=0;var n;if(typeof this!=="undefined"&&!(this instanceof So)){if(this&&!this.__instance__){Object.defineProperty(this,"__instance__",{enumerable:false,get:function e(){return true},set:function e(){},configurable:false})}e.set("this",this)}for(var i=arguments.length,u=new Array(i),a=0;a>> "+c.toString());if(c){o=c}var d=r.merge(t,Ku.__merge_env__);if(l){return{expr:o,scope:d}}var v=_s(o,vn(vn({},p),{},{env:d}));return Wu(v,_)}i=i.cdr}}catch(e){e.message+=" in macro: ".concat(y.toString(true));throw e}throw new Error("Invalid Syntax ".concat(e.toString(true)))},b);r.__code__=y;return r},"(syntax-rules () (pattern expression) ...)\n\n Base of hygienic macros, it will return a new syntax expander\n that works like Lisp macros."),quote:y(new Vu("quote",function(e){return Io(e.car)}),"(quote expression) or 'expression\n\n Macro that returns a single LIPS expression as data (it won't evaluate the\n argument). It will return a list if put in front of LIPS code.\n And if put in front of a symbol it will return the symbol itself, not the value\n bound to that name."),"unquote-splicing":y("unquote-splicing",function(){throw new Error("You can't call `unquote-splicing` outside of quasiquote")},"(unquote-splicing code) or ,@code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n splices the list into quasiquote's result. If it is not the last element of the\n expression, the computed value must be a pair."),unquote:y("unquote",function(){throw new Error("You can't call `unquote` outside of quasiquote")},"(unquote code) or ,code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n substitutes the value into quasiquote's result."),quasiquote:Vu.defmacro("quasiquote",function(e,t){var o=t.dynamic_scope,s=t.error;var c=this;if(o){o=c}function a(e){return e instanceof M||wu(e)||Array.isArray(e)}function h(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:a;if(e instanceof M){var n=e.car;var i=e.cdr;if(r(n)){n=t(n)}if(r(i)){i=t(i)}if(ra(n)||ra(i)){return Ci([n,i]).then(function(e){var t=j(e,2),r=t[0],n=t[1];return new M(r,n)})}else{return new M(n,i)}}return e}function u(e,t){if(e instanceof M){if(t!==U){e.append(t)}}else{e=new M(e,t)}return e}function r(e){return!!e.filter(function(e){return e instanceof M&&L.is(e.car,/^(unquote|unquote-splicing)$/)}).length}function p(e,n,i){return e.reduce(function(e,t){if(!(t instanceof M)){e.push(t);return e}if(L.is(t.car,"unquote-splicing")){var r;if(n+11){var t="You can't splice multiple atoms inside list";throw new Error(t)}if(!(i.cdr instanceof M&&r[0]===U)){return r[0]}}r=r.map(function(e){if(d.has(e)){return e.clone()}else{d.add(e);return e}});var n=l(i.cdr,0,1);if(n===U&&r[0]===U){return undefined}return Yi(n,function(e){if(r[0]===U){return e}if(r.length===1){return u(r[0],e)}var t=r.reduce(function(e,t){return u(e,t)});return u(t,e)})})}(i.car.cdr)}var d=new Set;function l(e,t,r){if(e instanceof M){if(e.car instanceof M){if(L.is(e.car.car,"unquote-splicing")){return f(e,t+1,r)}if(L.is(e.car.car,"unquote")){if(t+2===r&&e.car.cdr instanceof M&&e.car.cdr.car instanceof M&&L.is(e.car.cdr.car.car,"unquote-splicing")){var n=e.car.cdr;return new M(new M(new L("unquote"),f(n,t+2,r)),U)}else if(e.car.cdr instanceof M&&e.car.cdr.cdr!==U){if(e.car.cdr.car instanceof M){var i=[];return function t(r){if(r===U){return M.fromArray(i)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){i.push(e);return t(r.cdr)})}(e.car.cdr)}else{return e.car.cdr}}}}if(L.is(e.car,"quasiquote")){var u=l(e.cdr,t,r+1);return new M(e.car,u)}if(L.is(e.car,"quote")){return new M(e.car,l(e.cdr,t,r))}if(L.is(e.car,"unquote")){t++;if(tr){throw new Error("You can't call `unquote` outside "+"of quasiquote")}if(e.cdr instanceof M){if(e.cdr.cdr!==U){if(e.cdr.car instanceof M){var a=[];return function t(r){if(r===U){return M.fromArray(a)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){a.push(e);return t(r.cdr)})}(e.cdr)}else{return e.cdr}}else{return _s(e.cdr.car,{env:c,dynamic_scope:o,error:s})}}else{return e.cdr}}return h(e,function(e){return l(e,t,r)})}else if(wu(e)){return _(e,t,r)}else if(e instanceof Array){return p(e,t,r)}return e}function n(e){if(e instanceof M){delete e[ya];if(!e.haveCycles("car")){n(e.car)}if(!e.haveCycles("cdr")){n(e.cdr)}}}if(wu(e.car)&&!r(Object.values(e.car))){return Io(e.car)}if(Array.isArray(e.car)&&!r(e.car)){return Io(e.car)}if(e.car instanceof M&&!e.car.find("unquote")&&!e.car.find("unquote-splicing")&&!e.car.find("quasiquote")){return Io(e.car)}var i=l(e.car,0,1);return Yi(i,function(e){n(e);return Io(e)})},"(quasiquote list)\n\n Similar macro to `quote` but inside it you can use special expressions (unquote\n x) abbreviated to ,x that will evaluate x and insert its value verbatim or\n (unquote-splicing x) abbreviated to ,@x that will evaluate x and splice the value\n into the result. Best used with macros but it can be used outside."),clone:y("clone",function e(t){h("clone",t,"pair");return t.clone()},"(clone list)\n\n Function that returns a clone of the list, that does not share any pairs with the\n original, so the clone can be safely mutated without affecting the original."),append:y("append",function e(){var t;for(var r=arguments.length,n=new Array(r),i=0;iarray")(t).reverse();return qo.get("array->list")(r)}else if(!(t instanceof Array)){throw new Error(Qo("reverse",us(t),"array or pair"))}else{return t.reverse()}},"(reverse list)\n\n Function that reverses the list or array. If value is not a list\n or array it will error."),nth:y("nth",function e(t,r){h("nth",t,"number");h("nth",r,["array","pair"]);if(r instanceof M){var n=r;var i=0;while(iarray")(r).join(t)},"(join separator list)\n\n Function that returns a string by joining elements of the list using separator."),split:y("split",function e(t,r){h("split",t,["regex","string"]);h("split",r,"string");return qo.get("array->list")(r.split(t))},"(split separator string)\n\n Function that creates a list by splitting string by separator which can\n be a string or regular expression."),replace:y("replace",function e(t,r,n){h("replace",t,["regex","string"]);h("replace",r,["string","function"]);h("replace",n,"string");return n.replace(t,r)},"(replace pattern replacement string)\n\n Function that changes pattern to replacement inside string. Pattern can be a\n string or regex and replacement can be function or string. See Javascript\n String.replace()."),match:y("match",function e(t,r){h("match",t,["regex","string"]);h("match",r,"string");var n=r.match(t);return n?qo.get("array->list")(n):false},"(match pattern string)\n\n Function that returns a match object from JavaScript as a list or #f if\n no match."),search:y("search",function e(t,r){h("search",t,["regex","string"]);h("search",r,"string");return r.search(t)},"(search pattern string)\n\n Function that returns the first found index of the pattern inside a string."),repr:y("repr",function e(t,r){return Pu(t,r)},"(repr obj)\n\n Function that returns a LIPS code representation of the object as a string."),"escape-regex":y("escape-regex",function(e){h("escape-regex",e,"string");return _i(e.valueOf())},"(escape-regex string)\n\n Function that returns a new string where all special operators used in regex,\n are escaped with backslashes so they can be used in the RegExp constructor\n to match a literal string."),env:y("env",function e(e){e=e||this;var t=Object.keys(e.__env__).map(L);var r;if(t.length){r=M.fromArray(t)}else{r=U}if(e.__parent__ instanceof So){return qo.get("env")(e.__parent__).append(r)}return r},"(env)\n (env obj)\n\n Function that returns a list of names (functions, macros and variables)\n that are bound in the current environment or one of its parents."),new:y("new",function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2&&arguments[2]!==undefined?arguments[2]:Bi.LITERAL;h("set-special!",e,"string",1);h("set-special!",t,"symbol",2);Bi.append(e.valueOf(),t,r)},'(set-special! symbol name [type])\n\n Add a special symbol to the list of transforming operators by the parser.\n e.g.: `(add-special! "#" \'x)` will allow to use `#(1 2 3)` and it will be\n transformed into (x (1 2 3)) so you can write x macro that will process\n the list. 3rd argument is optional, and it can be one of two values:\n lips.specials.LITERAL, which is the default behavior, or\n lips.specials.SPLICE which causes the value to be unpacked into the expression.\n This can be used for e.g. to make `#(1 2 3)` into (x 1 2 3) that is needed\n by # that defines vectors.'),get:No,".":No,unbind:y(sa,"(unbind fn)\n\n Function that removes the weak 'this' binding from a function so you\n can get properties from the actual function object."),type:y(us,"(type object)\n\n Function that returns the type of an object as string."),debugger:y("debugger",function(){debugger},'(debugger)\n\n Function that triggers the JavaScript debugger (e.g. the browser devtools)\n using the "debugger;" statement. If a debugger is not running this\n function does nothing.'),in:y("in",function(e,t){if(e instanceof L||e instanceof $a||e instanceof C){e=e.valueOf()}return e in aa(t)},'(in key value)\n\n Function that uses the Javascript "in" operator to check if key is\n a valid property in the value.'),instanceof:y("instanceof",function(e,t){return t instanceof sa(e)},"(instanceof type obj)\n\n Predicate that tests if the obj is an instance of type."),"prototype?":y("prototype?",Nu,"(prototype? obj)\n\n Predicate that tests if value is a valid JavaScript prototype,\n i.e. calling (new) with it will not throw ' is not a constructor'."),"macro?":y("macro?",function(e){return e instanceof Vu},"(macro? expression)\n\n Predicate that tests if value is a macro."),"function?":y("function?",Xu,"(function? expression)\n\n Predicate that tests if value is a callable function."),"real?":y("real?",function(e){if(us(e)!=="number"){return false}if(e instanceof C){return e.isFloat()}return C.isFloat(e)},"(real? number)\n\n Predicate that tests if value is a real number (not complex)."),"number?":y("number?",function(e){return Number.isNaN(e)||C.isNumber(e)},"(number? expression)\n\n Predicate that tests if value is a number or NaN value."),"string?":y("string?",function(e){return $a.isString(e)},"(string? expression)\n\n Predicate that tests if value is a string."),"pair?":y("pair?",function(e){return e instanceof M},"(pair? expression)\n\n Predicate that tests if value is a pair or list structure."),"regex?":y("regex?",function(e){return e instanceof RegExp},"(regex? expression)\n\n Predicate that tests if value is a regular expression."),"null?":y("null?",function(e){return Zu(e)},"(null? expression)\n\n Predicate that tests if value is null-ish (i.e. undefined, nil, or\n Javascript null)."),"boolean?":y("boolean?",function(e){return typeof e==="boolean"},"(boolean? expression)\n\n Predicate that tests if value is a boolean (#t or #f)."),"symbol?":y("symbol?",function(e){return e instanceof L},"(symbol? expression)\n\n Predicate that tests if value is a LIPS symbol."),"array?":y("array?",function(e){return e instanceof Array},"(array? expression)\n\n Predicate that tests if value is an array."),"object?":y("object?",function(e){return e!==U&&e!==null&&!(e instanceof za)&&!(e instanceof RegExp)&&!(e instanceof $a)&&!(e instanceof M)&&!(e instanceof C)&&_(e)==="object"&&!(e instanceof Array)},"(object? expression)\n\n Predicate that tests if value is an plain object (not another LIPS type)."),flatten:y("flatten",function e(t){h("flatten",t,"pair");return t.flatten()},"(flatten list)\n\n Returns a shallow list from tree structure (pairs)."),"array->list":y("array->list",function(e){h("array->list",e,"array");return M.fromArray(e)},"(array->list array)\n\n Function that converts a JavaScript array to a LIPS cons list."),"tree->array":y("tree->array",gu("tree->array",true),"(tree->array list)\n\n Function that converts a LIPS cons tree structure into a JavaScript array."),"list->array":y("list->array",gu("list->array"),"(list->array list)\n\n Function that converts a LIPS list into a JavaScript array."),apply:y("apply",function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;iarray").call(this,u));return t.apply(this,fs(t,n))},"(apply fn list)\n\n Function that calls fn with the list of arguments."),length:y("length",function e(t){if(!t||t===U){return 0}if(t instanceof M){return t.length()}if("length"in t){return t.length}},'(length expression)\n\n Function that returns the length of the object. The object can be a LIPS\n list or any object that has a "length" property. Returns undefined if the\n length could not be found.'),"string->number":y("string->number",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;h("string->number",e,"string",1);h("string->number",t,"number",2);e=e.valueOf();t=t.valueOf();if(e.match(Wn)||e.match(Kn)){return ti(e,t)}else if(e.match(Qn)||e.match(Jn)){return ii(e,t)}else{var r=t===10&&!e.match(/e/i)||t===16;if(e.match(Hn)&&r||e.match(Gn)){return ri(e,t)}if(e.match(Rn)){return oi(e)}}return false},"(string->number number [radix])\n\n Function that parses a string into a number."),try:y(new Vu("try",function(t,e){var c=this;var f=e.dynamic_scope,l=e.error;return new Promise(function(i,n){var u,a;if(L.is(t.cdr.car.car,"catch")){u=t.cdr.car;if(t.cdr.cdr instanceof M&&L.is(t.cdr.cdr.car.car,"finally")){a=t.cdr.cdr.car}}else if(L.is(t.cdr.car.car,"finally")){a=t.cdr.car}if(!(a||u)){throw new Error("try: invalid syntax")}var o=i;if(a){o=function e(t,r){o=n;Yi(_s(new M(new L("begin"),a.cdr),s),function(){r(t)})}}var s={env:c,error:function e(t){var r=c.inherit("try");if(u){r.set(u.cdr.car.car,t);var n={env:r,error:l};if(f){n.dynamic_scope=c}Yi(_s(new M(new L("begin"),u.cdr.cdr),n),function(e){o(e,i)})}else{o(t,l)}}};if(f){s.dynamic_scope=c}var e=_s(t.car,s);if(ra(e)){e.then(function(e){o(e,i)})["catch"](s.error)}else{o(e,i)}})}),"(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro that executes expr and catches any exceptions thrown. If catch is provided\n it's executed when an error is thrown. If finally is provided it's always\n executed at the end."),raise:y("raise",function(e){throw e},"(raise obj)\n\n Throws the object verbatim (no wrapping an a new Error)."),throw:y("throw",function(e){throw new Error(e)},"(throw string)\n\n Throws a new exception."),find:y("find",function t(r,n){h("find",r,["regex","function"]);h("find",n,["pair","nil"]);if(Zu(n)){return U}var e=Gi("find",r);return Yi(e(n.car),function(e){if(e&&e!==U){return n.car}return t(r,n.cdr)})},"(find fn list)\n (find regex list)\n\n Higher-order function that finds the first value for which fn return true.\n If called with a regex it will create a matcher function."),"for-each":y("for-each",function(e){var t;h("for-each",e,"function");for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i1?t-1:0),u=1;u3?n-3:0),u=3;u3?i-3:0),a=3;aarray")(r);var u=[];var a=Gi("filter",t);return function t(r){function e(e){if(e&&e!==U){u.push(n)}return t(++r)}if(r===i.length){return M.fromArray(u)}var n=i[r];return Yi(a(n),e)}(0)},"(filter fn list)\n (filter regex list)\n\n Higher-order function that calls `fn` for each element of the list\n and return a new list for only those elements for which fn returns\n a truthy value. If called with a regex it will create a matcher function."),compose:y(Ra,"(compose . fns)\n\n Higher-order function that creates a new function that applies all functions\n from right to left and returns the last value. Reverse of pipe.\n e.g.:\n ((compose (curry + 2) (curry * 3)) 10) --\x3e (+ 2 (* 3 10)) --\x3e 32"),pipe:y(Na,"(pipe . fns)\n\n Higher-order function that creates a new function that applies all functions\n from left to right and returns the last value. Reverse of compose.\n e.g.:\n ((pipe (curry + 2) (curry * 3)) 10) --\x3e (* 3 (+ 2 10)) --\x3e 36"),curry:y(Ya,"(curry fn . args)\n\n Higher-order function that creates a curried version of the function.\n The result function will have partially applied arguments and it\n will keep returning one-argument functions until all arguments are provided,\n then it calls the original function with the accumulated arguments.\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))"),gcd:y("gcd",function e(){for(var t=arguments.length,r=new Array(t),n=0;no?u%=o:o%=u}u=Tu(s*r[a])/(u+o)}return C(u)},"(lcm n1 n2 ...)\n\n Function that returns the least common multiple of the arguments."),"odd?":y("odd?",Ua(function(e){return C(e).isOdd()}),"(odd? number)\n\n Checks if number is odd."),"even?":y("even?",Ua(function(e){return C(e).isEven()}),"(even? number)\n\n Checks if number is even."),"*":y("*",qa(function(e,t){return C(e).mul(t)},C(1)),"(* . numbers)\n\n Multiplies all numbers passed as arguments. If single value is passed\n it will return that value."),"+":y("+",qa(function(e,t){return C(e).add(t)},C(0)),"(+ . numbers)\n\n Sums all numbers passed as arguments. If single value is passed it will\n return that value."),"-":y("-",function(){for(var e=arguments.length,t=new Array(e),r=0;r":y(">",function(){for(var e=arguments.length,t=new Array(e),r=0;r",t,"number");return Lu(function(e,t){return C(e).cmp(t)===1},t)},"(> x1 x2 x3 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically decreasing, i.e. x1 > x2 and x2 > x3 and so on."),"<":y("<",function(){for(var e=arguments.length,t=new Array(e),r=0;r=":y(">=",function(){for(var e=arguments.length,t=new Array(e),r=0;r=",t,"number");return Lu(function(e,t){return[0,1].includes(C(e).cmp(t))},t)},"(>= x1 x2 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically nonincreasing, i.e. x1 >= x2 and x2 >= x3 and so on."),"eq?":y("eq?",Uu,"(eq? a b)\n\n Function that compares two values if they are identical."),or:y(new Vu("or",function(e,t){var i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return false}var s;return function t(){function e(e){s=e;if(s!==false){return s}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(or . expressions)\n\n Macro that executes the values one by one and returns the first that is\n a truthy value. If there are no expressions that evaluate to true it\n returns false."),and:y(new Vu("and",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return true}var s;return function t(){function e(e){s=e;if(s===false){return false}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(and . expressions)\n\n Macro that evaluates each expression in sequence and if any value returns false\n it will stop and return false. If each value returns true it will return the\n last value. If it's called without arguments it will return true."),"|":y("|",function(e,t){return C(e).or(t)},"(| a b)\n\n Function that calculates the bitwise or operation."),"&":y("&",function(e,t){return C(e).and(t)},"(& a b)\n\n Function that calculates the bitwise and operation."),"~":y("~",function(e){return C(e).neg()},"(~ number)\n\n Function that calculates the bitwise inverse (flip all the bits)."),">>":y(">>",function(e,t){return C(e).shr(t)},"(>> a b)\n\n Function that right shifts the value a by value b bits."),"<<":y("<<",function(e,t){return C(e).shl(t)},"(<< a b)\n\n Function that left shifts the value a by value b bits."),not:y("not",function e(t){if(Zu(t)){return true}return!t},"(not object)\n\n Function that returns the Boolean negation of its argument.")},undefined,"global");var Yo=qo.inherit("user-env");function Vo(e,t){e.constant("**internal-env**",t);e.doc("**internal-env**","**internal-env**\n\n Constant used to hide stdin, stdout and stderr so they don't interfere\n with variables with the same name. Constants are an internal type\n of variable that can't be redefined, defining a variable with the same name\n will throw an error.");qo.set("**interaction-environment**",e)}Vo(Yo,Lo);qo.doc("**interaction-environment**","**interaction-environment**\n\n Internal dynamic, global variable used to find interpreter environment.\n It's used so the read and write functions can locate **internal-env**\n that contains the references to stdin, stdout and stderr.");(function(){var e={ceil:"ceiling"};["floor","round","ceil"].forEach(function(t){var r=e[t]?e[t]:t;qo.set(r,y(r,function(e){h(r,e,"number");if(e instanceof C){return e[t]()}},"(".concat(r," number)\n\n Function that calculates the ").concat(r," of a number.")))})})();function zo(e){if(e.length===1){return e[0]}else{var t=[];var r=zo(e.slice(1));for(var n=0;n3&&arguments[3]!==undefined?arguments[3]:null;var i=e?" in expression `".concat(e,"`"):"";if(n!==null){i+=" (argument ".concat(n,")")}if(Xu(r)){return"Invalid type: got ".concat(t).concat(i)}if(r instanceof Array){if(r.length===1){var u=r[0].toLowerCase();r="a"+("aeiou".includes(u)?"n ":" ")+r[0]}else{var a=r[r.length-1];r=r.slice(0,-1).join(", ")+" or "+a}}return"Expecting ".concat(r,", got ").concat(t).concat(i)}function Zo(r,e,n){e.forEach(function(e,t){h(r,e,n,t+1)})}function Xo(e,t,r){h(e,t,r);if(t.__type__===Ao){throw new Error(Qo(e,"binary-port","textual-port"))}}function h(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;e=e.valueOf();var i=us(t).toLowerCase();if(Xu(r)){if(!r(t)){throw new Error(Qo(e,i,r,n))}return}var u=false;if(r instanceof M){r=r.to_array()}if(r instanceof Array){r=r.map(function(e){return e.valueOf()})}if(r instanceof Array){r=r.map(function(e){return e.valueOf().toLowerCase()});if(r.includes(i)){u=true}}else{r=r.valueOf().toLowerCase()}if(!u&&i!==r){throw new Error(Qo(e,i,r,n))}}function es(e){var t=_(e);return["string","function"].includes(t)||_(e)==="symbol"||e instanceof ki||e instanceof L||e instanceof C||e instanceof $a||e instanceof RegExp}function ts(e){return e instanceof C||e instanceof $a||e instanceof za}function rs(e,t){if(e===null){return false}return _(e)==="object"&&t in Object.getOwnPropertySymbols(e)}function ns(e,t){if(rs(e,t)||rs(e.__proto__,t)){return Xu(e[t])}}function is(r){var n=new WeakMap;return function(e){var t=n.get(e);if(!t){t=r(e)}return t}}us=is(us);function us(e){var t=wn.get(e);if(t){return t}if(_(e)==="object"){for(var r=0,n=Object.entries(bn);r2&&arguments[2]!==undefined?arguments[2]:{},u=t.env,a=t.dynamic_scope,r=t.error,o=r===void 0?function(){}:r;e=os(e,{env:u,dynamic_scope:a,error:o});return Yi(e,function(e){if(Sa(i)){i=sa(i)}e=fs(i,e);var t=e.slice();var r=(a||u).newFrame(i,t);var n=as(i.apply(r,e));return Yi(n,function(e){if(e instanceof M){e.markCycles();return Io(e)}return ia(e)},o)})}var hs=function(){function t(e){D(this,t);this.__value__=e}A(t,[{key:"invoke",value:function e(){if(this.__value__===null){throw new Error("Continuations are not implemented yet")}}},{key:"toString",value:function e(){return"#"}}]);return t}();var ps=function e(){};function _s(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=e.env,n=e.dynamic_scope,c=e.error,i=c===void 0?ps:c;try{if(n===true){r=n=r||qo}else if(r===true){r=n=qo}else{r=r||qo}var u={env:r,dynamic_scope:n,error:i};var a;if(Zu(t)){return t}if(t instanceof L){return r.get(t)}if(!(t instanceof M)){return t}var o=t.car;var f=t.cdr;if(o instanceof M){a=as(_s(o,u));if(ra(a)){return a.then(function(e){return _s(new M(e,t.cdr),u)})}else if(!ta(a)){throw new Error(us(a)+" "+r.get("repr")(a)+" is not callable while evaluating "+t.toString())}}if(o instanceof L){a=r.get(o)}else if(Xu(o)){a=o}var s;if(a instanceof Ku){s=ss(a,t,u)}else if(a instanceof Vu){s=cs(a,f,u)}else if(Xu(a)){s=ls(a,f,u)}else if(ea(a)){s=a.invoke()}else if(t instanceof M){a=o&&o.toString();throw new Error("".concat(us(o)," ").concat(a," is not a function"))}else{return t}var l=r.get(Symbol["for"]("__promise__"),{throwError:false});if(l===true&&ra(s)){s=s.then(function(e){if(e instanceof M&&!a[ya]){return _s(e,u)}return e});return new ki(s)}return s}catch(e){i&&i.call(r,e,t)}}var ds=ys(function(e){return e});var vs=ys(function(e,t){return t});function ys(_){return function(){var n=B(z.mark(function e(r,n,i){var u,a,o,s,h,c,p,f,l;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(i===true){n=i=n||Yo}else if(n===true){n=i=Yo}else{n=n||Yo}u=[];a=Array.isArray(r)?r:Mi(r);o=false;s=false;t.prev=5;c=yn(a);case 7:t.next=9;return c.next();case 9:if(!(o=!(p=t.sent).done)){t.next=27;break}f=p.value;l=_s(f,{env:n,dynamic_scope:i,error:function e(t,r){if(t&&t.message){if(t.message.match(/^Error:/)){var n=/^(Error:)\s*([^:]+:\s*)/;t.message=t.message.replace(n,"$1 $2")}if(r){if(!(t.__code__ instanceof Array)){t.__code__=[]}t.__code__.push(r.toString(true))}}throw t}});if(ra(l)){t.next=16;break}u.push(_(f,l));t.next=24;break;case 16:t.t0=u;t.t1=_;t.t2=f;t.next=21;return l;case 21:t.t3=t.sent;t.t4=(0,t.t1)(t.t2,t.t3);t.t0.push.call(t.t0,t.t4);case 24:o=false;t.next=7;break;case 27:t.next=33;break;case 29:t.prev=29;t.t5=t["catch"](5);s=true;h=t.t5;case 33:t.prev=33;t.prev=34;if(!(o&&c["return"]!=null)){t.next=38;break}t.next=38;return c["return"]();case 38:t.prev=38;if(!s){t.next=41;break}throw h;case 41:return t.finish(38);case 42:return t.finish(33);case 43:return t.abrupt("return",u);case 44:case"end":return t.stop()}}},e,null,[[5,29,33,43],[34,,38,42]])}));function e(e,t,r){return n.apply(this,arguments)}return e}()}function ms(e){var t={"[":"]","(":")"};var r;if(typeof e==="string"){r=wi(e)}else{r=e.map(function(e){return e&&e.token?e.token:e})}var n=Object.keys(t);var i=Object.values(t).concat(n);r=r.filter(function(e){return i.includes(e)});var u=new di;var a=hn(r),o;try{for(a.s();!(o=a.n()).done;){var s=o.value;if(n.includes(s)){u.push(s)}else if(!u.is_empty()){var f=u.top();var c=t[f];if(s===c){u.pop()}else{throw new Error("Syntax error: missing closing ".concat(c))}}else{throw new Error("Syntax error: not matched closing ".concat(s))}}}catch(e){a.e(e)}finally{a.f()}return u.is_empty()}function gs(e){var t="("+e.toString()+")()";var r=window.URL||window.webkitURL;var n;try{n=new Blob([t],{type:"application/javascript"})}catch(e){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;n=new i;n.append(t);n=n.getBlob()}return new gn.Worker(r.createObjectURL(n))}function bs(){return Gs.version.match(/^(\{\{VER\}\}|DEV)$/)}function ws(){if(Go()){return}var e;if(document.currentScript){e=document.currentScript}else{var t=document.querySelectorAll("script");if(!t.length){return}e=t[t.length-1]}var r=e.getAttribute("src");return r}var Ds=ws();function Es(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";var t="dist/std.xcb";if(e===""){if(Ds){e=Ds.replace(/[^/]*$/,"std.xcb")}else if(bs()){e="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/".concat(t)}else{e="https://cdn.jsdelivr.net/npm/@jcubic/lips@".concat(Gs.version,"/").concat(t)}}var r=qo.get("load");return r.call(Yo,e,qo)}function As(e){this.url=e;var a=this.worker=gs(function(){var a;var o;self.addEventListener("message",function(e){var r=e.data;var t=r.id;if(r.type!=="RPC"||t===null){return}function n(e){self.postMessage({id:t,type:"RPC",result:e})}function i(e){self.postMessage({id:t,type:"RPC",error:e})}if(r.method==="eval"){if(!o){i("Worker RPC: LIPS not initialized, call init first");return}o.then(function(){var e=r.params[0];var t=r.params[1];a.exec(e,t).then(function(e){e=e.map(function(e){return e&&e.valueOf()});n(e)})["catch"](function(e){i(e)})})}else if(r.method==="init"){var u=r.params[0];if(typeof u!=="string"){i("Worker RPC: url is not a string")}else{importScripts("".concat(u,"/dist/lips.min.js"));a=new Gs.Interpreter("worker");o=Es(u);o.then(function(){n(true)})}}})});this.rpc=function(){var n=0;return function e(t,r){var u=++n;return new Promise(function(n,i){a.addEventListener("message",function e(t){var r=t.data;if(r&&r.type==="RPC"&&r.id===u){if(r.error){i(r.error)}else{n(r.result)}a.removeEventListener("message",e)}});a.postMessage({type:"RPC",method:t,id:u,params:r})})}}();this.rpc("init",[e])["catch"](function(e){console.error(e)});this.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return this.rpc("eval",[e,t])}}var xs={pair:function e(t){var r=j(t,2),n=r[0],i=r[1];return M(n,i)},number:function e(t){if($a.isString(t)){return C([t,10])}return C(t)},regex:function e(t){var r=j(t,2),n=r[0],i=r[1];return new RegExp(n,i)},nil:function e(){return U},symbol:function e(t){if($a.isString(t)){return L(t)}else if(Array.isArray(t)){return L(Symbol["for"](t[0]))}},string:$a,character:za};var Fs=Object.keys(xs);var ks={};for(var Cs=0,Os=Object.entries(Fs);Cs1){var n=t.reduce(function(e,t){return e+t.length},0);var i=new Uint8Array(n);var u=0;t.forEach(function(e){i.set(e,u);u+=e.length});return i}else if(t.length){return t[0]}}function Us(){var e=1;var t=new TextEncoder("utf-8");return t.encode("LIPS".concat(e.toString().padStart(3," ")))}var Ms=7;function qs(e){var t=new TextDecoder("utf-8");var r=t.decode(e.slice(0,Ms));var n=r.substring(0,4);if(n==="LIPS"){var i=r.match(/^(....).*([0-9]+)$/);if(i){return{type:i[1],version:Number(i[2])}}}return{type:"unknown"}}function Ys(e){var t=Us();var r=Ts.encode(e);return Ls(t,un(r,{magic:false}))}function Vs(e){var t=qs(e),r=t.type,n=t.version;if(r==="LIPS"&&n===1){var i=an(e.slice(Ms),{magic:false});return Ts.decode(i)}else{throw new Error("Invalid file format ".concat(r))}}function zs(e){console.error(e.message||e);if(e.code){console.error(e.code.map(function(e,t){return"[".concat(t+1,"]: ").concat(e)}))}}function $s(){var a=["text/x-lips","text/x-scheme"];var o;function s(r){return new Promise(function(t){var e=r.getAttribute("src");if(e){return fetch(e).then(function(e){return e.text()}).then(vs).then(t)["catch"](function(e){zs(e);t()})}else{return vs(r.innerHTML).then(t)["catch"](function(e){zs(e);t()})}})}function e(){return new Promise(function(i){var u=Array.from(document.querySelectorAll("script"));return function e(){var t=u.shift();if(!t){i()}else{var r=t.getAttribute("type");if(a.includes(r)){var n=t.getAttribute("bootstrap");if(!o&&typeof n==="string"){return Es(n).then(function(){return s(t)}).then(e)}else{return s(t).then(e)}}else if(r&&r.match(/lips|lisp/)){console.warn("Expecting "+a.join(" or ")+" found "+r)}return e()}}()})}if(!window.document){return Promise.resolve()}else if(Js){var t=Js;var r=t.getAttribute("bootstrap");if(typeof r==="string"){return Es(r).then(function(){o=true;return e()})}}return e()}var Js=typeof window!=="undefined"&&window.document&&document.currentScript;if(typeof window!=="undefined"){Fn(window,$s)}var Ks=function(){var e=$a("Sat, 23 Dec 2023 13:43:06 +0000").valueOf();var t=e==="{{"+"DATE}}"?new Date:new Date(e);var r=function e(t){return t.toString().padStart(2,"0")};var n=t.getFullYear();var i=[n,r(t.getMonth()+1),r(t.getDate())].join("-");var u="\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter 1.0.0-beta.17 (".concat(i,") \nCopyright (c) 2018-").concat(n," Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specific function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/,"");return u}();$i(eu,"__class__","ahead");$i(M,"__class__","pair");$i(mu,"__class__","nil");$i(tu,"__class__","pattern");$i(Xi,"__class__","formatter");$i(Vu,"__class__","macro");$i(Ku,"__class__","syntax");$i(So,"__class__","environment");$i(ho,"__class__","input-port");$i(po,"__class__","output-port");$i(_o,"__class__","output-port");$i(vo,"__class__","output-string-port");$i(mo,"__class__","input-string-port");$i(wo,"__class__","input-file-port");$i(yo,"__class__","output-file-port");$i(Oo,"__class__","lips-error");[C,io,fo,uo,lo].forEach(function(e){$i(e,"__class__","number")});$i(za,"__class__","character");$i(L,"__class__","symbol");$i($a,"__class__","string");$i(ki,"__class__","promise");var Gs={version:"1.0.0-beta.17",banner:Ks,date:"Sat, 23 Dec 2023 13:43:06 +0000",exec:vs,parse:Ra(Ji,Mi),tokenize:wi,evaluate:_s,compile:ds,serialize:Ns,unserialize:Rs,serialize_bin:Ys,unserialize_bin:Vs,bootstrap:Es,Environment:So,env:Yo,Worker:As,Interpreter:Co,balanced_parenthesis:ms,balancedParenthesis:ms,balanced:ms,Macro:Vu,Syntax:Ku,Pair:M,Values:jo,QuotedPromise:ki,Error:Oo,quote:Io,InputPort:ho,OutputPort:po,BufferedOutputPort:_o,InputFilePort:wo,OutputFilePort:yo,InputStringPort:mo,OutputStringPort:vo,InputByteVectorPort:go,OutputByteVectorPort:bo,InputBinaryFilePort:Do,OutputBinaryFilePort:Eo,Formatter:Xi,Parser:Li,Lexer:s,specials:Bi,repr:bu,nil:U,eof:Fo,LSymbol:L,LNumber:C,LFloat:uo,LComplex:io,LRational:fo,LBigInteger:lo,LCharacter:za,LString:$a,rationalize:so};qo.set("lips",Gs);var Hs={};var Ws=Object.freeze({__proto__:null,default:Hs});function Qs(e,t){var r=0;for(var n=e.length-1;n>=0;n--){var i=e[n];if(i==="."){e.splice(n,1)}else if(i===".."){e.splice(n,1);r++}else if(r){e.splice(n,1);r--}}if(t){for(;r--;r){e.unshift("..")}}return e}var Zs=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var Xs=function(e){return Zs.exec(e).slice(1)};function ec(){var e="",t=false;for(var r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:"/";if(typeof n!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!n){continue}e=n+"/"+e;t=n.charAt(0)==="/"}e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");return(t?"/":"")+e||"."}function tc(e){var t=rc(e),r=hc(e,-1)==="/";e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");if(!e&&!t){e="."}if(e&&r){e+="/"}return(t?"/":"")+e}function rc(e){return e.charAt(0)==="/"}function nc(){var e=Array.prototype.slice.call(arguments,0);return tc(lc(e,function(e,t){if(typeof e!=="string"){throw new TypeError("Arguments to path.join must be strings")}return e}).join("/"))}function ic(e,t){e=ec(e).substr(1);t=ec(t).substr(1);function r(e){var t=0;for(;t=0;r--){if(e[r]!=="")break}if(t>r)return[];return e.slice(t,r-t+1)}var n=r(e.split("/"));var i=r(t.split("/"));var u=Math.min(n.length,i.length);var a=u;for(var o=0;o=t.length)return{done:true};return{done:false,value:t[n++]}},e:function e(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=true,a=false,o;return{s:function e(){r=r.call(t)},n:function e(){var t=r.next();u=t.done;return t},e:function e(t){a=true;o=t},f:function e(){try{if(!u&&r["return"]!=null)r["return"]()}finally{if(a)throw o}}}}function pn(e,t){if(!e)return;if(typeof e==="string")return _n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor)r=e.constructor.name;if(r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _n(e,t)}function _n(e,t){if(t==null||t>e.length)t=e.length;for(var r=0,n=new Array(t);r1&&arguments[1]!==undefined?arguments[1]:null;var n=arguments[1]===true;function t(e){if(!Cn()){return}var t=qo.get("repr")(e);if(r===null||r instanceof RegExp&&r.test(t)){console.log(qo.get("type")(e)+": "+t)}if(n){console.log(e)}}if(ra(e)){e.then(t)}else{t(e)}return e}function Cn(){return Yo&&Yo.get("DEBUG",{throwError:false})}function On(e){return e?"(?:#".concat(e,"(?:#[ie])?|#[ie]#").concat(e,")"):"(?:#[ie])?"}function Sn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+/").concat(t,"+")}function Bn(e,t){return"".concat(On(e),"(?:[+-]?(?:").concat(t,"+/").concat(t,"+|nan.0|inf.0|").concat(t,"+))?(?:[+-]i|[+-]?(?:").concat(t,"+/").concat(t,"+|").concat(t,"+|nan.0|inf.0)i)(?=[()[\\]\\s]|$)")}function jn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+")}var In=/^#\/((?:\\\/|[^/]|\[[^\]]*\/[^\]]*\])+)\/([gimyus]*)$/;var Pn="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+)(?:[eE][-+]?[0-9]+)?)|[0-9]+\\.)";var Nn="(?:#[ie])?(?:[+-]?(?:[0-9]+/[0-9]+|nan.0|inf.0|".concat(Pn,"|[+-]?[0-9]+))?(?:").concat(Pn,"|[+-](?:[0-9]+/[0-9]+|[0-9]+|nan.0|inf.0))i");var Rn=new RegExp("^(#[ie])?".concat(Pn,"$"),"i");function Tn(e,t){var r=e==="x"?"(?!\\+|".concat(t,")"):"(?!\\.|".concat(t,")");var n="";if(e===""){n="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+(?![0-9]))(?:[eE][-+]?[0-9]+)?))"}return new RegExp("^((?:(?:".concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+(?!").concat(t,")|[+-]?").concat(t,"+)").concat(r,")?)(").concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+|[+-]?").concat(t,"+|[+-])i$"),"i")}var Ln=function(){var u={};[[10,"","[0-9]"],[16,"x","[0-9a-fA-F]"],[8,"o","[0-7]"],[2,"b","[01]"]].forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];u[r]=Tn(n,i)});return u}();var Un={alarm:"",backspace:"\b",delete:"",escape:"",newline:"\n",null:"\0",return:"\r",space:" ",tab:"\t",dle:"",soh:"",dc1:"",stx:"",dc2:"",etx:"",dc3:"",eot:"",dc4:"",enq:"",nak:"",ack:"",syn:"",bel:"",etb:"",bs:"\b",can:"",ht:"\t",em:"",lf:"\n",sub:"",vt:"\v",esc:"",ff:"\f",fs:"",cr:"\r",gs:"",so:"",rs:"",si:"",us:"",del:""};function Mn(e){var t=[];var r=0;var n=e.length;while(r=55296&&i<=56319&&r1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);var n=r.number.split("/");var i=fo({num:C([n[0],r.radix||t]),denom:C([n[1],r.radix||t])});if(r.inexact){return i.valueOf()}else{return i}}function ri(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);if(r.inexact){return uo(parseInt(r.number,r.radix||t))}return C([r.number,r.radix||t])}function ni(e){var t=e.match(/#\\x([0-9a-f]+)$/i);var r;if(t){var n=parseInt(t[1],16);r=String.fromCodePoint(n)}else{t=e.match(/#\\(.+)$/);if(t){r=t[1]}}if(r){return za(r)}throw new Error("Parse: invalid character")}function ii(e){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;function t(e){var t;if(e==="+"){t=C(1)}else if(e==="-"){t=C(-1)}else if(e.match(Hn)){t=C([e,i])}else if(e.match(Wn)){var r=e.split("/");t=fo({num:C([r[0],i]),denom:C([r[1],i])})}else if(e.match(Rn)){var n=oi(e);if(u.exact){return n.toRational()}return n}else if(e.match(/nan.0$/)){return C(NaN)}else if(e.match(/inf.0$/)){if(e[0]==="-"){return C(Number.NEGATIVE_INFINITY)}return C(Number.POSITIVE_INFINITY)}else{throw new Error("Internal Parser Error")}if(u.inexact){return uo(t.valueOf())}return t}var u=ei(e);i=u.radix||i;var r;var n=u.number.match(Zn);if(i!==10&&n){r=n}else{r=u.number.match(Ln[i])}var a,o;o=t(r[2]);if(r[1]){a=t(r[1])}else{a=C(0)}if(o.cmp(0)===0&&o.__type__==="bigint"){return a}return io({im:o,re:a})}function ui(e){return parseInt(e.toString(),10)===e}function ai(e){var t=e.match(/^(([-+]?[0-9]*)(?:\.([0-9]+))?)e([-+]?[0-9]+)/i);if(t){var r=parseInt(t[4],10);var n;var i=t[1].replace(/[-+]?([0-9]*)\..+$/,"$1").length;var u=t[3]&&t[3].length;if(i0){return C(u).mul(o)}}}r=uo(r);if(t.exact){return r.toRational()}return r}function si(e){e=e.replace(/\\x([0-9a-f]+);/gi,function(e,t){return"\\u"+t.padStart(4,"0")}).replace(/\n/g,"\\n");var t=e.match(/(\\*)(\\x[0-9A-F])/i);if(t&&t[1].length%2===0){throw new Error("Invalid string literal, unclosed ".concat(t[2]))}try{return $a(JSON.parse(e))}catch(e){var r=e.message.replace(/in JSON /,"").replace(/.*Error: /,"");throw new Error("Invalid string literal: ".concat(r))}}function ci(e){if(e.match(/^\|.*\|$/)){e=e.replace(/(^\|)|(\|$)/g,"");var r={t:"\t",r:"\r",n:"\n"};e=e.replace(/\\(x[^;]+);/g,function(e,t){return String.fromCharCode(parseInt("0"+t,16))}).replace(/\\(.)/g,function(e,t){return r[t]||t})}return new L(e)}function fi(e){if(Mo.hasOwnProperty(e)){return Mo[e]}if(e.match(/^"[\s\S]*"$/)){return si(e)}else if(e[0]==="#"){var t=e.match(In);if(t){return new RegExp(t[1],t[2])}else if(e.match(Vn)){return ni(e)}var r=e.match(/#\\(.+)/);if(r&&Mn(r[1]).length===1){return ni(e)}}if(e.match(/[0-9a-f]|[+-]i/i)){if(e.match(Gn)){return ri(e)}else if(e.match(Rn)){return oi(e)}else if(e.match(Kn)){return ti(e)}else if(e.match(Jn)){return ii(e)}}if(e.match(/^#[iexobd]/)){throw new Error("Invalid numeric constant: "+e)}return ci(e)}function li(e){return!(["(",")","[","]"].includes(e)||Bi.names().includes(e))}function hi(e){return li(e)&&!(e.match(In)||e.match(/^"[\s\S]*"$/)||e.match(Gn)||e.match(Rn)||e.match(Jn)||e.match(Kn)||e.match(Vn)||["#t","#f","nil","true","false"].includes(e))}var pi=/"(?:\\[\S\s]|[^"])*"?/g;function _i(e){if(typeof e==="string"){var t=/([-\\^$[\]()+{}?*.|])/g;return e.replace(t,"\\$1")}return e}function di(){this.data=[]}di.prototype.push=function(e){this.data.push(e)};di.prototype.top=function(){return this.data[this.data.length-1]};di.prototype.pop=function(){return this.data.pop()};di.prototype.is_empty=function(){return!this.data.length};function vi(e){if(e instanceof $a){e=e.valueOf()}var t=new s(e,{whitespace:true});var r=[];while(true){var n=t.peek(true);if(n===Fo){break}r.push(n);t.skip()}return r}function yi(e){var t=e.token,r=F(e,sn);if(t.match(/^"[\s\S]*"$/)&&t.match(/\n/)){var n=new RegExp("^ {1,"+(e.col+1)+"}","mg");t=t.replace(n,"")}return vn({token:t},r)}function mi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(){};this.fn=e;this.cont=t}mi.prototype.toString=function(){return"#"};function gi(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof $a){e=e.toString()}if(t){return vi(e)}else{var r=vi(e).map(function(e){if(e.token==="#\\ "){return e.token}return e.token.trim()}).filter(function(e){return e&&!e.match(/^;/)&&!e.match(/^#\|[\s\S]*\|#$/)});return Di(r)}}function Di(e){var t=0;var r=null;var n=[];for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:null;if(e instanceof L){if(e.is_gensym()){return e}e=e.valueOf()}if(xi(e)){return L(e)}if(e!==null){return r(e,Symbol("#:".concat(e)))}t++;return r(t,Symbol("#:g".concat(t)))}}();function ki(e){var r=this;var n={pending:true,rejected:false,fulfilled:false,reason:undefined,type:undefined};e=e.then(function(e){n.type=us(e);n.fulfilled=true;n.pending=false;return e});$i(this,"_promise",e,{hidden:true});if(Xu(e["catch"])){e=e["catch"](function(e){n.rejected=true;n.pending=false;n.reason=e})}Object.keys(n).forEach(function(t){Object.defineProperty(r,"__".concat(t,"__"),{enumerable:true,get:function e(){return n[t]}})});$i(this,"__promise__",e);this.then=false}ki.prototype.then=function(e){return new ki(this.valueOf().then(e))};ki.prototype["catch"]=function(e){return new ki(this.valueOf()["catch"](e))};ki.prototype.valueOf=function(){if(!this._promise){throw new Error("QuotedPromise: invalid promise created")}return this._promise};ki.prototype.toString=function(){if(this.__pending__){return ki.pending_str}if(this.__rejected__){return ki.rejected_str}return"#")};ki.pending_str="#";ki.rejected_str="#";function Ci(e){if(Array.isArray(e)){return Promise.all(Oi(e)).then(Si)}return e}function Oi(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof ki){t[r]=new Bo(n)}else{t[r]=n}}return t}function Si(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof Bo){t[r]=n.valueOf()}else{t[r]=n}}return t}var Bi={LITERAL:Symbol["for"]("literal"),SPLICE:Symbol["for"]("splice"),SYMBOL:Symbol["for"]("symbol"),names:function e(){return Object.keys(this.__list__)},type:function e(t){return this.get(t).type},get:function e(t){return this.__list__[t]},off:function e(t){var r=this;var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(Array.isArray(t)){t.forEach(function(e){return r.off(e,n)})}else if(n===null){delete this.__events__[t]}else{this.__events__=this.__events__.filter(function(e){return e!==n})}},on:function e(t,r){var n=this;if(Array.isArray(t)){t.forEach(function(e){return n.on(e,r)})}else if(!this.__events__[t]){this.__events__[t]=[r]}else{this.__events__[t].push(r)}},trigger:function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i",new L("quote-promise"),Bi.LITERAL]];var Ri=Ni.map(function(e){return e[0]});Object.freeze(Ri);Object.defineProperty(Bi,"__builtins__",{writable:false,value:Ri});Ni.forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];Bi.append(r,n,i)});var s=function(){function p(e){var t=this;var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=r.whitespace,i=n===void 0?false:n;D(this,p);$i(this,"__input__",e.replace(/\r/g,""));var u={};["_i","_whitespace","_col","_newline","_line","_state","_next","_token","_prev_char"].forEach(function(r){Object.defineProperty(t,r,{configurable:false,enumerable:false,get:function e(){return u[r]},set:function e(t){u[r]=t}})});this._whitespace=i;this._i=this._line=this._col=this._newline=0;this._state=this._next=this._token=null;this._prev_char=""}A(p,[{key:"get",value:function e(t){return this.__internal[t]}},{key:"set",value:function e(t,r){this.__internal[t]=r}},{key:"token",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(t){var r=this._line;if(this._whitespace&&this._token==="\n"){--r}return{token:this._token,col:this._col,offset:this._i,line:r}}return this._token}},{key:"peek",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this._i>=this.__input__.length){return Fo}if(this._token){return this.token(t)}var r=this.next_token();if(r){this._token=this.__input__.substring(this._i,this._next);return this.token(t)}return Fo}},{key:"skip",value:function e(){if(this._next!==null){this._token=null;this._i=this._next}}},{key:"read_line",value:function e(){var t=this.__input__.length;if(this._i>=t){return Fo}for(var r=this._i;r=r){return Fo}if(t+this._i>=r){return this.read_rest()}var n=this._i+t;var i=this.__input__.substring(this._i,n);var u=i.match(/\n/g);if(u){this._line+=u.length}this._i=n;return i}},{key:"peek_char",value:function e(){if(this._i>=this.__input__.length){return Fo}return za(this.__input__[this._i])}},{key:"read_char",value:function e(){var t=this.peek_char();this.skip_char();return t}},{key:"skip_char",value:function e(){if(this._i1&&arguments[1]!==undefined?arguments[1]:{},r=t.prev_char,n=t["char"],i=t.next_char;var u=j(e,4),a=u[0],o=u[1],s=u[2],f=u[3];if(e.length!==5){throw new Error("Lexer: Invalid rule of length ".concat(e.length))}if(!n.match(a)){return false}if(!Ti(o,r)){return false}if(!Ti(s,i)){return false}if(f!==this._state){return false}return true}},{key:"next_token",value:function f(){if(this._i>=this.__input__.length){return false}var e=true;e:for(var t=this._i,r=this.__input__.length;t2&&arguments[2]!==undefined?arguments[2]:null;var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;if(t.length===0){throw new Error("Lexer: invalid literal rule")}if(t.length===1){return[[t,n,i,null,null]]}var u=[];for(var a=0,o=t.length;a1&&arguments[1]!==undefined?arguments[1]:{},r=t.env,n=t.meta,i=n===void 0?false:n,u=t.formatter,a=u===void 0?yi:u;D(this,o);if(e instanceof $a){e=e.toString()}$i(this,"_formatter",a,{hidden:true});$i(this,"__lexer__",new s(e));$i(this,"__env__",r);$i(this,"_meta",i,{hidden:true});$i(this,"_refs",[],{hidden:true});$i(this,"_state",{parentheses:0},{hidden:true})}A(o,[{key:"resolve",value:function e(t){return this.__env__&&this.__env__.get(t,{throwError:false})}},{key:"peek",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=this.__lexer__.peek(true);if(!(r===Fo)){t.next=4;break}return t.abrupt("return",Fo);case 4:if(!this.is_comment(r.token)){t.next=7;break}this.skip();return t.abrupt("continue",0);case 7:if(!(r.token==="#;")){t.next=14;break}this.skip();if(!(this.__lexer__.peek()===Fo)){t.next=11;break}throw new Error("Lexer: syntax error eof found after comment");case 11:t.next=13;return this._read_object();case 13:return t.abrupt("continue",0);case 14:return t.abrupt("break",17);case 17:r=this._formatter(r);if(!this._meta){t.next=20;break}return t.abrupt("return",r);case 20:return t.abrupt("return",r.token);case 21:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"reset",value:function e(){this._refs.length=0}},{key:"skip",value:function e(){this.__lexer__.skip()}},{key:"read",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;this.skip();return t.abrupt("return",r);case 5:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"match_datum_label",value:function e(t){var r=t.match(/^#([0-9]+)=$/);return r&&r[1]}},{key:"match_datum_ref",value:function e(t){var r=t.match(/^#([0-9]+)#$/);return r&&r[1]}},{key:"is_open",value:function e(t){var r=["(","["].includes(t);if(r){this._state.parentheses++}return r}},{key:"is_close",value:function e(t){var r=[")","]"].includes(t);if(r){this._state.parentheses--}return r}},{key:"read_list",value:function(){var e=B(z.mark(function e(){var r,n,i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=U,n=r;case 1:t.next=4;return this.peek();case 4:i=t.sent;if(!(i===Fo)){t.next=7;break}return t.abrupt("break",27);case 7:if(!this.is_close(i)){t.next=10;break}this.skip();return t.abrupt("break",27);case 10:if(!(i==="."&&r!==U)){t.next=17;break}this.skip();t.next=14;return this._read_object();case 14:n.cdr=t.sent;t.next=25;break;case 17:t.t0=M;t.next=20;return this._read_object();case 20:t.t1=t.sent;t.t2=U;u=new t.t0(t.t1,t.t2);if(r===U){r=u}else{n.cdr=u}n=u;case 25:t.next=1;break;case 27:return t.abrupt("return",r);case 28:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"read_value",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.read();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}throw new Error("Parser: Expected token eof found");case 5:return t.abrupt("return",fi(r));case 6:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"is_comment",value:function e(t){return t.match(/^;/)||t.match(/^#\|/)&&t.match(/\|#$/)}},{key:"evaluate",value:function e(t){return _s(t,{env:this.__env__,error:function e(t){throw t}})}},{key:"read_object",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:this.reset();t.next=3;return this._read_object();case 3:r=t.sent;if(r instanceof Ui){r=r.valueOf()}if(!this._refs.length){t.next=7;break}return t.abrupt("return",this._resolve_object(r));case 7:return t.abrupt("return",r);case 8:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"balanced",value:function e(){return this._state.parentheses===0}},{key:"ballancing_error",value:function e(t){var r=this._state.parentheses;var n=new Error("Parser: expected parenthesis but eof found");var i=new RegExp("\\){".concat(r,"}$"));n.__code__=[t.toString().replace(i,"")];throw n}},{key:"_resolve_object",value:function(){var t=B(z.mark(function e(r){var n=this;var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!Array.isArray(r)){t.next=2;break}return t.abrupt("return",r.map(function(e){return n._resolve_object(e)}));case 2:if(!wu(r)){t.next=6;break}i={};Object.keys(r).forEach(function(e){i[e]=n._resolve_object(r[e])});return t.abrupt("return",i);case 6:if(!(r instanceof M)){t.next=8;break}return t.abrupt("return",this._resolve_pair(r));case 8:return t.abrupt("return",r);case 9:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_resolve_pair",value:function(){var t=B(z.mark(function e(r){return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M)){t.next=15;break}if(!(r.car instanceof Ui)){t.next=7;break}t.next=4;return r.car.valueOf();case 4:r.car=t.sent;t.next=8;break;case 7:this._resolve_pair(r.car);case 8:if(!(r.cdr instanceof Ui)){t.next=14;break}t.next=11;return r.cdr.valueOf();case 11:r.cdr=t.sent;t.next=15;break;case 14:this._resolve_pair(r.cdr);case 15:return t.abrupt("return",r);case 16:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_read_object",value:function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}return t.abrupt("return",r);case 5:if(!ji(r)){t.next=39;break}n=Bi.get(r);i=Ii(r);this.skip();t.next=11;return this._read_object();case 11:a=t.sent;if(i){t.next=26;break}o=this.__env__.get(n.symbol);if(!(typeof o==="function")){t.next=26;break}if(!Pi(r)){t.next=19;break}return t.abrupt("return",o.call(this.__env__,a));case 19:if(!(a===U)){t.next=23;break}return t.abrupt("return",o.apply(this.__env__));case 23:if(!(a instanceof M)){t.next=25;break}return t.abrupt("return",o.apply(this.__env__,a.to_array(false)));case 25:throw new Error("Parse Error: Invalid parser extension "+"invocation ".concat(n.symbol));case 26:if(Pi(r)){u=new M(n.symbol,new M(a,U))}else{u=new M(n.symbol,a)}if(!i){t.next=29;break}return t.abrupt("return",u);case 29:if(!(o instanceof Vu)){t.next=38;break}t.next=32;return this.evaluate(u);case 32:s=t.sent;if(!(s instanceof M||s instanceof L)){t.next=35;break}return t.abrupt("return",M.fromArray([L("quote"),s]));case 35:return t.abrupt("return",s);case 38:throw new Error("Parse Error: invalid parser extension: "+n.symbol);case 39:c=this.match_datum_ref(r);if(!(c!==null)){t.next=45;break}this.skip();if(!this._refs[c]){t.next=44;break}return t.abrupt("return",new Ui(c,this._refs[c]));case 44:throw new Error("Parse Error: invalid datum label #".concat(c,"#"));case 45:f=this.match_datum_label(r);if(!(f!==null)){t.next=52;break}this.skip();this._refs[f]=this._read_object();return t.abrupt("return",this._refs[f]);case 52:if(!this.is_open(r)){t.next=57;break}this.skip();return t.abrupt("return",this.read_list());case 57:return t.abrupt("return",this.read_value());case 58:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}]);return o}();var Ui=function(){function r(e,t){D(this,r);this.name=e;this.data=t}A(r,[{key:"valueOf",value:function e(){return this.data}}]);return r}();function Mi(e,t){return qi.apply(this,arguments)}function qi(){qi=e(z.mark(function e(r,n){var i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!n){if(qo){n=qo.get("**interaction-environment**",{throwError:false})}else{n=Yo}}i=new Li(r,{env:n});case 2:t.next=5;return P(i.read_object());case 5:u=t.sent;if(!i.balanced()){i.ballancing_error(u)}if(!(u===Fo)){t.next=9;break}return t.abrupt("break",13);case 9:t.next=11;return u;case 11:t.next=2;break;case 13:case"end":return t.stop()}}},e)}));return qi.apply(this,arguments)}function Yi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(e){return e};var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(ra(e)){var n=e.then(t);if(r===null){return n}else{return n["catch"](r)}}if(e instanceof Array){return Vi(e,t,r)}if(wu(e)){return zi(e,t,r)}return t(e)}function Vi(t,r,e){if(t.find(ra)){return Yi(Ci(t),function(e){if(Object.isFrozen(t)){Object.freeze(e)}return r(e)},e)}return r(t)}function zi(t,e,r){var i=Object.keys(t);var n=[],u=[];var a=i.length;while(a--){var o=i[a];var s=t[o];n[a]=s;if(ra(s)){u.push(s)}}if(u.length){return Yi(Ci(n),function(e){var n={};e.forEach(function(e,t){var r=i[t];n[r]=e});if(Object.isFrozen(t)){Object.freeze(n)}return n},r)}return e(t)}function $i(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{},i=n.hidden,u=i===void 0?false:i;Object.defineProperty(e,t,{value:r,configurable:true,enumerable:!u})}function Ji(e){return Ki.apply(this,arguments)}function Ki(){Ki=B(z.mark(function e(r){var n,i,u,a,o,s,c;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=[];i=false;u=false;t.prev=3;o=yn(r);case 5:t.next=7;return o.next();case 7:if(!(i=!(s=t.sent).done)){t.next=13;break}c=s.value;n.push(c);case 10:i=false;t.next=5;break;case 13:t.next=19;break;case 15:t.prev=15;t.t0=t["catch"](3);u=true;a=t.t0;case 19:t.prev=19;t.prev=20;if(!(i&&o["return"]!=null)){t.next=24;break}t.next=24;return o["return"]();case 24:t.prev=24;if(!u){t.next=27;break}throw a;case 27:return t.finish(24);case 28:return t.finish(19);case 29:return t.abrupt("return",n);case 30:case"end":return t.stop()}}},e,null,[[3,15,19,29],[20,,24,28]])}));return Ki.apply(this,arguments)}function Gi(e,t){if(t instanceof RegExp){return function(e){return String(e).match(t)}}else if(Xu(t)){return t}throw new Error("Invalid matcher")}function y(e,t,r,n){if(typeof e!=="string"){t=arguments[0];r=arguments[1];n=arguments[2];e=null}if(r){if(n){t.__doc__=r}else{t.__doc__=Hi(r)}}if(e){t.__name__=e}else if(t.name&&!Ca(t)){t.__name__=t.name}return t}function Hi(e){return e.split("\n").map(function(e){return e.trim()}).join("\n")}function Wi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var r=e.length;if(t<=0){throw Error("previousSexp: Invalid argument sexp = ".concat(t))}e:while(t--&&r>=0){var n=1;while(n>0){var i=e[--r];if(!i){break e}if(i==="("||i.token==="("){n--}else if(i===")"||i.token===")"){n++}}r--}return e.slice(r+1)}function Qi(e){if(!e||!e.length){return 0}var t=e.length;if(e[t-1].token==="\n"){return 0}while(--t){if(e[t].token==="\n"){var r=(e[t+1]||{}).token;if(r){return r.length}}}return 0}function Zi(e,t){return f(e,t)===t.length;function f(r,n){function e(e,t){var r=hn(e),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;var u=f(i,t);if(u!==-1){return u}}}catch(e){r.e(e)}finally{r.f()}return-1}function t(){return r[u]===Symbol["for"]("symbol")&&!hi(n[o])}function i(){var e=r[u+1];var t=n[o+1];if(e!==undefined&&t!==undefined){return f([e],[t])}}var u=0;var a={};for(var o=0;o0){continue}}else if(t()){return-1}}else if(r[u]instanceof Array){var c=f(r[u],n.slice(o));if(c===-1||c+o>n.length){return-1}o+=c-1;u++;continue}else{return-1}u++}if(r.length!==u){return-1}return n.length}}function Xi(e){this.__code__=e.replace(/\r/g,"")}Xi.defaults={offset:0,indent:2,exceptions:{specials:[/^(?:#:)?(?:define(?:-values|-syntax|-macro|-class|-record-type)?|(?:call-with-(?:input-file|output-file|port))|lambda|let-env|try|catch|when|unless|while|syntax-rules|(let|letrec)(-syntax|\*)?)$/],shift:{1:["&","#"]}}};Xi.match=Zi;Xi.prototype._options=function e(t){var r=Xi.defaults;if(typeof t==="undefined"){return Object.assign({},r)}var n=t&&t.exceptions||{};var i=n.specials||[];var u=n.shift||{1:[]};return vn(vn(vn({},r),t),{},{exceptions:{specials:[].concat(q(r.exceptions.specials),q(i)),shift:vn(vn({},u),{},{1:[].concat(q(r.exceptions.shift[1]),q(u[1]))})}})};Xi.prototype.indent=function e(t){var r=wi(this.__code__,true);return this._indent(r,t)};Xi.exception_shift=function(u,e){function t(e){if(!e.length){return false}if(e.indexOf(u)!==-1){return true}else{var t=e.filter(function(e){return e instanceof RegExp});if(!t.length){return false}var r=hn(t),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;if(u.match(i)){return true}}}catch(e){r.e(e)}finally{r.f()}}return false}if(t(e.exceptions.specials)){return e.indent}var r=e.exceptions.shift;for(var n=0,i=Object.entries(r);n0){t.offset=0}if(n.toString()===e.toString()&&ms(n)){return t.offset+n[0].col}else if(n.length===1){return t.offset+n[0].col+1}else{var u=-1;if(i){var a=Xi.exception_shift(i.token,t);if(a!==-1){u=a}}if(u===-1){u=Xi.exception_shift(n[1].token,t)}if(u!==-1){return t.offset+n[0].col+u}else if(n[0].line3&&n[1].line===n[3].line){if(n[1].token==="("||n[1].token==="["){return t.offset+n[1].col}return t.offset+n[3].col}else if(n[0].line===n[1].line){return t.offset+t.indent+n[0].col}else{var o=n.slice(2);for(var s=0;s")};eu.prototype.match=function(e){return e.match(this.pattern)};function tu(){for(var e=arguments.length,t=new Array(e),r=0;r")};Xi.Pattern=tu;Xi.Ahead=eu;var ru=/^[[(]$/;var nu=/^[\])]$/;var iu=/[^()[\]]/;var uu=new eu(/[^)\]]/);var au=Symbol["for"]("*");var ou=new tu([ru,au,nu],[iu],"+");var su=new tu([ru,au,nu],"+");var cu=new tu([Symbol["for"]("symbol")],"?");var fu=new tu([Symbol["for"]("symbol")],"*");var lu=[ru,fu,nu];var hu=new tu([ru,Symbol["for"]("symbol"),au,nu],"+");var pu=vu("define","lambda","define-macro","syntax-rules");var _u=/^(?!.*\b(?:[()[\]]|define(?:-macro)?|let(?:\*|rec|-env|-syntax|)?|lambda|syntax-rules)\b).*$/;var du=/^(?:#:)?(let(?:\*|rec|-env|-syntax)?)$/;function vu(){for(var e=arguments.length,t=new Array(e),r=0;r0&&!i[e]){i[e]=Wi(n,e)}});var u=hn(t),p;try{for(u.s();!(p=u.n()).done;){var a=j(p.value,3),_=a[0],o=a[1],s=a[2];o=o.valueOf();var d=o>0?i[o]:n;var v=d.filter(function(e){return e.trim()&&!ji(e)});var y=h(d);var m=Zi(_,v);var g=e.slice(r).find(function(e){return e.trim()&&!ji(e)});if(m&&(s instanceof eu&&s.match(g)||!s)){var c=r-y;if(e[c]!=="\n"){if(!e[c].trim()){e[c]="\n"}else{e.splice(c,0,"\n");r++}}r+=y;continue e}}}catch(e){u.e(e)}finally{u.f()}}this.__code__=e.join("");return this};Xi.prototype._spaces=function(e){return new Array(e+1).join(" ")};Xi.prototype.format=function c(e){var t=this.__code__.replace(/[ \t]*\n[ \t]*/g,"\n ");var r=wi(t,true);var n=this._options(e);var i=0;var u=0;for(var a=0;a0&&arguments[0]!==undefined?arguments[0]:true;var n=new Map;function i(e){if(e instanceof M){if(n.has(e)){return n.get(e)}var t=new M;n.set(e,t);if(r){t.car=i(e.car)}else{t.car=e.car}t.cdr=i(e.cdr);t[ga]=e[ga];return t}return e}return i(this)};M.prototype.last_pair=function(){var e=this;while(true){if(e.cdr===U){return e}e=e.cdr}};M.prototype.to_array=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;var t=[];if(this.car instanceof M){if(e){t.push(this.car.to_array())}else{t.push(this.car)}}else{t.push(this.car.valueOf())}if(this.cdr instanceof M){t=t.concat(this.cdr.to_array())}return t};M.fromArray=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof M||r&&e instanceof Array&&e[ya]){return e}if(t===false){var n=U;for(var i=e.length;i--;){n=new M(e[i],n)}return n}if(e.length&&!(e instanceof Array)){e=q(e)}var u=U;var a=e.length;while(a--){var o=e[a];if(o instanceof Array){o=M.fromArray(o,t,r)}else if(typeof o==="string"){o=$a(o)}else if(typeof o==="number"&&!Number.isNaN(o)){o=C(o)}u=new M(o,u)}return u};M.prototype.to_object=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var t=this;var r={};while(true){if(t instanceof M&&t.car instanceof M){var n=t.car;var i=n.car;if(i instanceof L){i=i.__name__}if(i instanceof $a){i=i.valueOf()}var u=n.cdr;if(u instanceof M){u=u.to_object(e)}if(ts(u)){if(!e){u=u.valueOf()}}r[i]=u;t=t.cdr}else{break}}return r};M.fromPairs=function(e){return e.reduce(function(e,t){return new M(new M(new L(t[0]),t[1]),e)},U)};M.fromObject=function(t){var e=Object.keys(t).map(function(e){return[e,t[e]]});return M.fromPairs(e)};M.prototype.reduce=function(e){var t=this;var r=U;while(true){if(t!==U){r=e(r,t.car);t=t.cdr}else{break}}return r};M.prototype.reverse=function(){if(this.haveCycles()){throw new Error("You can't reverse list that have cycles")}var e=this;var t=U;while(e!==U){var r=e.cdr;e.cdr=t;t=e;e=r}return t};M.prototype.transform=function(n){function i(e){if(e instanceof M){if(e.replace){delete e.replace;return e}var t=n(e.car);if(t instanceof M){t=i(t)}var r=n(e.cdr);if(r instanceof M){r=i(r)}return new M(t,r)}return e}return i(this)};M.prototype.map=function(e){if(typeof this.car!=="undefined"){return new M(e(this.car),this.cdr===U?U:this.cdr.map(e))}else{return U}};var bu=new Map;function wu(e){return e&&_(e)==="object"&&e.constructor===Object}var Du=Object.getOwnPropertyNames(Array.prototype);var Eu=[];Du.forEach(function(e){Eu.push(Array[e],Array.prototype[e])});function Au(e){e=sa(e);return Eu.includes(e)}function xu(e){return Xu(e)&&(Ca(e)||e.__doc__)}function Fu(r){var e=r.constructor||Object;var n=wu(r);var i=Xu(r[Symbol.asyncIterator])||Xu(r[Symbol.iterator]);var u;if(bu.has(e)){u=bu.get(e)}else{bu.forEach(function(e,t){t=sa(t);if(r.constructor===t&&(t===Object&&n&&!i||t!==Object)){u=e}})}return u}var ku=new Map;[[true,"#t"],[false,"#f"],[null,"null"],[undefined,"#"]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ku.set(r,n)});function Cu(r){if(r&&_(r)==="object"){var n={};var e=Object.getOwnPropertySymbols(r);e.forEach(function(e){var t=e.toString().replace(/Symbol\(([^)]+)\)/,"$1");n[t]=Pu(r[e])});var t=Object.getOwnPropertyNames(r);t.forEach(function(e){var t=r[e];if(t&&_(t)==="object"&&t.constructor===Object){n[e]=Cu(t)}else{n[e]=Pu(t)}});return n}return r}function Ou(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function Su(e,t){return e.hasOwnProperty(t)&&Xu(e.toString)}function Bu(e){if(Ba(e)){return"#"}var t=e.prototype&&e.prototype.constructor;if(Xu(t)&&Ca(t)){if(e[ba]&&t.hasOwnProperty("__name__")){var r=t.__name__;if($a.isString(r)){r=r.toString();return"#")}return"#"}}if(e.hasOwnProperty("__name__")){var n=e.__name__;if(_(n)==="symbol"){n=Ai(n)}if(typeof n==="string"){return"#")}}if(Su(e,"toString")){return e.toString()}else if(e.name&&!Ca(e)){return"#")}else{return"#"}}var ju=new Map;[[Error,function(e){return e.message}],[M,function(e,t){var r=t.quote,n=t.skip_cycles,i=t.pair_args;if(!n){e.markCycles()}return e.toString.apply(e,[r].concat(q(i)))}],[za,function(e,t){var r=t.quote;if(r){return e.toString()}return e.valueOf()}],[$a,function(e,t){var r=t.quote;e=e.toString();if(r){return JSON.stringify(e).replace(/\\n/g,"\n")}return e}],[RegExp,function(e){return"#"+e.toString()}]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ju.set(r,n)});var Iu=[L,C,Vu,jo,ho,po,So,ki];function Pu(e,t,c){if(typeof jQuery!=="undefined"&&e instanceof jQuery.fn.init){return"#"}if(ku.has(e)){return ku.get(e)}if(Nu(e)){return"#"}if(e){var r=e.constructor;if(ju.has(r)){for(var n=arguments.length,f=new Array(n>3?n-3:0),i=3;i"}if(e===null){return"null"}if(_(e)==="object"){var a=e.constructor;if(!a){a=Object}var o;if(typeof a.__class__==="string"){o=a.__class__}else{var s=Fu(e);if(s){if(Xu(s)){return s(e,t)}else{throw new Error("toString: Invalid repr value")}}o=a.name}if(Xu(e.toString)&&Ca(e.toString)){return e.toString().valueOf()}if(us(e)==="instance"){if(Ca(a)&&a.__name__){o=a.__name__.valueOf()}else if(!Ba(a)){o="instance"}}if(ns(e,Symbol.iterator)){if(o){return"#")}return"#"}if(ns(e,Symbol.asyncIterator)){if(o){return"#")}return"#"}if(o!==""){return"#<"+o+">"}return"#"}if(typeof e!=="string"){return e.toString()}return e}function Nu(e){return e&&_(e)==="object"&&e.hasOwnProperty&&e.hasOwnProperty("constructor")&&typeof e.constructor==="function"&&e.constructor.prototype===e}M.prototype.markCycles=function(){Ru(this);return this};M.prototype.haveCycles=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!e){return this.haveCycles("car")||this.haveCycles("cdr")}return!!(this[ga]&&this[ga][e])};function Ru(e){var t=[];var i=[];var u=[];function a(e){if(!t.includes(e)){t.push(e)}}function o(e,t,r,n){if(r instanceof M){if(n.includes(r)){if(!u.includes(r)){u.push(r)}if(!e[ga]){e[ga]={}}e[ga][t]=r;if(!i.includes(e)){i.push(e)}return true}}}var s=gi(function e(t,r){if(t instanceof M){delete t.ref;delete t[ga];a(t);r.push(t);var n=o(t,"car",t.car,r);var i=o(t,"cdr",t.cdr,r);if(!n){s(t.car,r.slice())}if(!i){return new mi(function(){return e(t.cdr,r.slice())})}}});function r(e,t){if(e[ga][t]instanceof M){var r=n.indexOf(e[ga][t]);e[ga][t]="#".concat(r,"#")}}s(e,[]);var n=t.filter(function(e){return u.includes(e)});n.forEach(function(e,t){e[ma]="#".concat(t,"=")});i.forEach(function(e){r(e,"car");r(e,"cdr")})}M.prototype.toString=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.nested,n=r===void 0?false:r;var i=[];if(this[ma]){i.push(this[ma]+"(")}else if(!n){i.push("(")}var u;if(this[ga]&&this[ga].car){u=this[ga].car}else{u=Pu(this.car,e,true)}if(u!==undefined){i.push(u)}if(this.cdr instanceof M){if(this[ga]&&this[ga].cdr){i.push(" . ");i.push(this[ga].cdr)}else{if(this.cdr[ma]){i.push(" . ")}else{i.push(" ")}var a=this.cdr.toString(e,{nested:true});i.push(a)}}else if(this.cdr!==U){i=i.concat([" . ",Pu(this.cdr,e,true)])}if(!n||this[ma]){i.push(")")}return i.join("")};M.prototype.set=function(e,t){this[e]=t;if(t instanceof M){this.markCycles()}};M.prototype.append=function(e){if(e instanceof Array){return this.append(M.fromArray(e))}var t=this;if(t.car===undefined){if(e instanceof M){this.car=e.car;this.cdr=e.cdr}else{this.car=e}}else if(e!==U){while(true){if(t instanceof M&&t.cdr!==U){t=t.cdr}else{break}}t.cdr=e}return this};M.prototype.serialize=function(){return[this.car,this.cdr]};M.prototype[Symbol.iterator]=function(){var r=this;return{next:function e(){var t=r;r=t.cdr;if(t===U){return{value:undefined,done:true}}else{return{value:t.car,done:false}}}}};function Tu(e){return e<0?-e:e}function Lu(e,t){var r=m(t),n=r[0],i=r.slice(1);while(i.length>0){var u=i,a=j(u,1),o=a[0];if(!e(n,o)){return false}var s=i;var c=m(s);n=c[0];i=c.slice(1)}return true}function Uu(e,t){if(Xu(e)){return Xu(t)&&sa(e)===sa(t)}else if(e instanceof C){if(!(t instanceof C)){return false}var r;if(e.__type__===t.__type__){if(e.__type__==="complex"){r=e.__im__.__type__===t.__im__.__type__&&e.__re__.__type__===t.__re__.__type__}else{r=true}if(r&&e.cmp(t)===0){if(e.valueOf()===0){return Object.is(e.valueOf(),t.valueOf())}return true}}return false}else if(typeof e==="number"){if(typeof t!=="number"){return false}if(Number.isNaN(e)){return Number.isNaN(t)}if(e===Number.NEGATIVE_INFINITY){return t===Number.NEGATIVE_INFINITY}if(e===Number.POSITIVE_INFINITY){return t===Number.POSITIVE_INFINITY}return Uu(C(e),C(t))}else if(e instanceof za){if(!(t instanceof za)){return false}return e.__char__===t.__char__}else{return e===t}}function Mu(e,t){if(us(e)!==us(t)){return false}if(!qu(e)){return false}if(e instanceof RegExp){return e.source===t.source}if(e instanceof $a){return e.valueOf()===t.valueOf()}return Uu(e,t)}function qu(e){return e instanceof L||$a.isString(e)||e===U||e===null||e instanceof za||e instanceof C||e===true||e===false}var Yu=function(){if(Math.trunc){return Math.trunc}else{return function(e){if(e===0){return 0}else if(e<0){return Math.ceil(e)}else{return Math.floor(e)}}}}();function Vu(e,t,r,n){if(typeof this!=="undefined"&&this.constructor!==Vu||typeof this==="undefined"){return new Vu(e,t)}h("Macro",e,"string",1);h("Macro",t,"function",2);if(r){if(n){this.__doc__=r}else{this.__doc__=Hi(r)}}this.__name__=e;this.__fn__=t}Vu.defmacro=function(e,t,r,n){var i=new Vu(e,t,r,n);i.__defmacro__=true;return i};Vu.prototype.invoke=function(e,t,r){var n=t.env,i=t.dynamic_scope,u=t.error;var a={dynamic_scope:i,error:u,macro_expand:r};var o=this.__fn__.call(n,e,a,this.__name__);return o};Vu.prototype.toString=function(){return"#")};var zu="define-macro";var $u=-1e4;function Ju(c){return function(){var r=B(z.mark(function e(r,m){var u,g,n,i,s,D,E,A,x,F,k,b,a,w,o;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:o=function e(){o=B(z.mark(function e(r,n,i){var h,u,a,p,o,_,s,d,c,v,f,l,y;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M&&r.car instanceof L)){t.next=50;break}if(!r[ya]){t.next=3;break}return t.abrupt("return",r);case 3:h=r.car.valueOf();u=i.get(r.car,{throwError:false});a=D(r.car);p=a||E(u,r)||A(u);if(!(p&&r.cdr.car instanceof M)){t.next=28;break}if(!a){t.next=15;break}g=F(r.cdr.car);t.next=12;return b(r.cdr.car,n);case 12:o=t.sent;t.next=17;break;case 15:g=x(r.cdr.car);o=r.cdr.car;case 17:t.t0=M;t.t1=r.car;t.t2=M;t.t3=o;t.next=23;return w(r.cdr.cdr,n,i);case 23:t.t4=t.sent;t.t5=new t.t2(t.t3,t.t4);return t.abrupt("return",new t.t0(t.t1,t.t5));case 28:if(!k(h,u)){t.next=50;break}_=u instanceof Ku?r:r.cdr;t.next=32;return u.invoke(_,vn(vn({},m),{},{env:i}),true);case 32:s=t.sent;if(!(u instanceof Ku)){t.next=41;break}d=s,c=d.expr,v=d.scope;if(!(c instanceof M)){t.next=40;break}if(!(n!==-1&&n<=1||n<$u)){t.next=38;break}return t.abrupt("return",c);case 38:if(n!==-1){n=n-1}return t.abrupt("return",w(c,n,v));case 40:s=c;case 41:if(!(s instanceof L)){t.next=43;break}return t.abrupt("return",Io(s));case 43:if(!(s instanceof M)){t.next=48;break}if(!(n!==-1&&n<=1||n<$u)){t.next=46;break}return t.abrupt("return",s);case 46:if(n!==-1){n=n-1}return t.abrupt("return",w(s,n,i));case 48:if(!qu(s)){t.next=50;break}return t.abrupt("return",s);case 50:f=r.car;if(!(f instanceof M)){t.next=55;break}t.next=54;return w(f,n,i);case 54:f=t.sent;case 55:l=r.cdr;if(!(l instanceof M)){t.next=60;break}t.next=59;return w(l,n,i);case 59:l=t.sent;case 60:y=new M(f,l);return t.abrupt("return",y);case 62:case"end":return t.stop()}}},e)}));return o.apply(this,arguments)};w=function e(t,r,n){return o.apply(this,arguments)};a=function e(){a=B(z.mark(function e(r,n){var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r===U)){t.next=2;break}return t.abrupt("return",U);case 2:i=r.car;t.t0=M;t.t1=M;t.t2=i.car;t.next=8;return w(i.cdr,n,u);case 8:t.t3=t.sent;t.t4=new t.t1(t.t2,t.t3);t.next=12;return b(r.cdr);case 12:t.t5=t.sent;return t.abrupt("return",new t.t0(t.t4,t.t5));case 14:case"end":return t.stop()}}},e)}));return a.apply(this,arguments)};b=function e(t,r){return a.apply(this,arguments)};k=function e(t,r){return r instanceof Vu&&r.__defmacro__&&!g.includes(t)};F=function e(t){return[].concat(q(g),q(t.to_array(false).map(function(e){if(e instanceof M){return e.car.valueOf()}throw new Error("macroexpand: Invalid let binding")})))};x=function e(t){var r=[];while(true){if(t!==U){if(t instanceof L){r.push(t.valueOf());break}r.push(t.car.valueOf());t=t.cdr}else{break}}return[].concat(q(g),r)};A=function e(t){return t===i};E=function e(t,r){return t===s&&r.cdr.car instanceof M};D=function e(t){var r=t.valueOf();return n.includes(r)};u=m["env"]=this;g=[];n=["let","let*","letrec"];i=qo.get("lambda");s=qo.get("define");if(!(r.cdr instanceof M&&C.isNumber(r.cdr.car))){t.next=21;break}t.t0=Io;t.next=19;return w(r,r.cdr.car.valueOf(),u);case 19:t.t1=t.sent.car;return t.abrupt("return",(0,t.t0)(t.t1));case 21:if(!c){t.next=27;break}t.t2=Io;t.next=25;return w(r,1,u);case 25:t.t3=t.sent.car;return t.abrupt("return",(0,t.t2)(t.t3));case 27:t.t4=Io;t.next=30;return w(r,-1,u);case 30:t.t5=t.sent.car;return t.abrupt("return",(0,t.t4)(t.t5));case 32:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()}function Ku(e,t){this.__env__=t;this.__fn__=e;this.__defmacro__=true}Ku.__merge_env__=Symbol["for"]("merge");Ku.prototype=Object.create(Vu.prototype);Ku.prototype.invoke=function(e,t,r){var n=t.error,i=t.env;var u={error:n,env:i,dynamic_scope:this.__env__,macro_expand:r};return this.__fn__.call(i,e,u,this.__name__||"syntax")};Ku.prototype.constructor=Ku;Ku.prototype.toString=function(){if(this.__name__){return"#")}return"#"};Ku.className="syntax";var Gu=function(e){u(r,e);var t=fn(r);function r(){D(this,r);return t.apply(this,arguments)}return A(r)}(Ku);Ku.Parameter=Gu;function Hu(e,t,w,D){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var E={"...":{symbols:{},lists:[]},symbols:{}};var A=r.expansion,k=r.define;function x(e){if(Cn()){console.log(e)}}x(w);function F(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;x({code:t&&Pu(t,true),pattern:e&&Pu(e,true)});if(qu(e)&&!(e instanceof L)){return Mu(e,t)}if(e instanceof L&&w.includes(e.literal())){var c=A.ref(t);if(L.is(t,e)){if(typeof c==="undefined"){return true}return c===k||c===qo}return false}if(e instanceof M&&e.car instanceof M&&e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){x(">> 0");if(t===U){x({pattern:e.toString()});if(e.car.car instanceof L){if(e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){var f=e.car.car.valueOf();var l=e.last_pair();if(L.is(l.car,D)){E["..."].symbols[f]=null;return true}else{return false}}var h=e.car.car.valueOf();if(E["..."].symbols[h]){throw new Error("syntax: named ellipsis can only "+"appear onces")}E["..."].symbols[h]=t}}}if(e instanceof M&&e.cdr instanceof M&&L.is(e.cdr.car,D)){if(e.cdr.cdr!==U){if(e.cdr.cdr instanceof M){var p=e.cdr.cdr.length();var _=t.length();var i=t;while(_-1>p){i=i.cdr;_--}var d=i.cdr;i.cdr=U;if(!F(e.cdr.cdr,d,r,n)){return false}}}if(e.car instanceof L){var u=e.car.__name__;if(E["..."].symbols[u]&&!r.includes(u)&&!n){throw new Error("syntax: named ellipsis can only appear onces")}x(">> 1");if(t===U){x(">> 2");if(n){x("NIL");E["..."].symbols[u]=U}else{x("NULL");E["..."].symbols[u]=null}}else if(t instanceof M&&(t.car instanceof M||t.car===U)){x(">> 3 "+n);if(n){if(E["..."].symbols[u]){var a=E["..."].symbols[u];if(a===U){a=new M(U,new M(t,U))}else{a=a.append(new M(t,U))}E["..."].symbols[u]=a}else{E["..."].symbols[u]=new M(t,U)}}else{x(">> 4");E["..."].symbols[u]=new M(t,U)}}else{x(">> 6");if(t instanceof M){x(">> 7 "+n);r.push(u);if(!E["..."].symbols[u]){E["..."].symbols[u]=new M(t,U)}else{var v=E["..."].symbols[u];E["..."].symbols[u]=v.append(new M(t,U))}x({IIIIII:E["..."].symbols[u].toString()})}else{x(">> 8");return false}}return true}else if(e.car instanceof M){var y=q(r);if(t===U){x(">> 9");E["..."].lists.push(U);return true}x(">> 10");var m=t;while(m instanceof M){if(!F(e.car,m.car,y,true)){return false}m=m.cdr}return true}return false}if(e instanceof L){if(L.is(e,D)){throw new Error("syntax: invalid usage of ellipsis")}x(">> 11");var o=e.__name__;if(w.includes(o)){return true}x({name:o,ellipsis:n});if(n){E["..."].symbols[o]=E["..."].symbols[o]||[];E["..."].symbols[o].push(t)}E.symbols[o]=t;if(!E.symbols[o]);return true}if(e instanceof M&&t instanceof M){x(">> 12");x({a:12,code:t&&t.toString(),pattern:e.toString()});if(t.cdr===U){var g=e.car instanceof L&&e.cdr instanceof L;if(g){if(!F(e.car,t.car,r,n)){return false}x(">> 12 | 1");var s=e.cdr.valueOf();if(!(s in E.symbols)){E.symbols[s]=U}s=e.car.valueOf();if(!(s in E.symbols)){E.symbols[s]=t.car}return true}}x({pattern:e.toString(),code:t.toString()});if(e.cdr instanceof M&&e.car instanceof L&&e.cdr.cdr instanceof M&&e.cdr.car instanceof L&&L.is(e.cdr.cdr.car,D)&&e.cdr.cdr.cdr instanceof M&&!L.is(e.cdr.cdr.cdr.car,D)&&F(e.car,t.car,r,n)&&F(e.cdr.cdr.cdr,t.cdr,r,n)){var b=e.cdr.car.__name__;x({pattern:e.car.toString(),code:t.car.toString(),name:b});if(w.includes(b)){return true}E["..."].symbols[b]=null;return true}x("recur");if(F(e.car,t.car,r,n)&&F(e.cdr,t.cdr,r,n)){return true}}else if(e===U&&(t===U||t===undefined)){return true}else if(e.car instanceof M&&L.is(e.car.car,D)){throw new Error("syntax: invalid usage of ellipsis")}else{return false}}if(F(e,t)){return E}}function Wu(e,i){function u(t){if(t instanceof M){if(!i.length){return t}var e=u(t.car);var r=u(t.cdr);return new M(e,r)}else if(t instanceof L){var n=i.find(function(e){return e.gensym===t});if(n){return L(n.name)}return t}else{return t}}return u(e)}function Qu(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var O=e.bindings,t=e.expr,S=e.scope,a=e.symbols,f=e.names,B=e.ellipsis;var c={};function o(e){if(e instanceof L){return true}return["string","symbol"].includes(_(e))}function j(e){if(!o(e)){var t=us(e);throw new Error("syntax: internal error, need symbol got ".concat(t))}var r=e.valueOf();if(r===B){throw new Error("syntax: internal error, ellipis not transformed")}var n=_(r);if(["string","symbol"].includes(n)){if(r in O.symbols){return O.symbols[r]}else if(n==="string"&&r.match(/\./)){var i=r.split(".");var u=i[0];if(u in O.symbols){return M.fromArray([L("."),O.symbols[u]].concat(i.slice(1).map(function(e){return $a(e)})))}}}if(a.includes(r)){return L(r)}return s(r)}function I(e){if(Cn()){console.log(e)}}function s(e){if(!c[e]){var t=S.ref(e);var r=Fi(e);if(t){var n=S.get(e);S.set(r,n)}else{var i=S.get(e,{throwError:false});if(typeof i!=="undefined"){S.set(r,i)}}f.push({name:e,gensym:r});c[e]=r;if(typeof e==="string"&&e.match(/\./)){var u=e.split(".").filter(Boolean),a=m(u),o=a[0],s=a.slice(1);if(c[o]){Fa(r,"__object__",[c[o]].concat(q(s)))}}}return c[e]}function P(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:function(){};var i=r.nested;I(" ==> "+e.toString(true));I(t);if(e instanceof L){var u=e.valueOf();I("[t 1");if(t[u]){if(t[u]instanceof M){var c=t[u],f=c.car,l=c.cdr;if(i){var h=f.car,p=f.cdr;if(p!==U){n(u,new M(p,U))}return h}if(l!==U){n(u,l)}return f}else if(t[u]instanceof Array){n(u,t[u].slice(1));return t[u][0]}}return j(u)}if(e instanceof M){if(e.car instanceof L&&e.cdr instanceof M&&L.is(e.cdr.car,B)){I("[t 2");var a=e.car.valueOf();var o=t[a];I({expr:e.toString(true),name:a,bindings:t,item:o});if(o===null){return}else if(o){I({b:t[a].toString()});if(o instanceof M){I("[t 2 Pair "+i);I({______:o.toString()});var s=o.car,_=o.cdr;if(i){if(_!==U){I("|| next 1");n(a,_)}I({car:s.toString()});return s}else{if(s.cdr!==U){I("|| next 2");n(a,new M(s.cdr,_))}I({car:s.car.toString()});return s.car}}else if(o instanceof Array){I("[t 2 Array "+i);if(i){n(a,o.slice(1));return M.fromArray(o)}else{var d=o.slice(1);if(d.length){n(a,d)}return o[0]}}else{return o}}}I("[t 3 recur "+e.toString());var v=P(e.car,t,r,n);var y=P(e.cdr,t,r,n);return new M(v,y)}return e}function R(t,r){var e=Object.values(t);var n=Object.getOwnPropertySymbols(t);if(n.length){e.push.apply(e,q(n.map(function(e){return t[e]})))}return e.length&&e.every(function(e){if(e===null){return!r}return e instanceof M||e===U||e instanceof Array&&e.length})}function T(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function N(i){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},e=n.disabled;I("traverse>> "+Pu(i));if(i instanceof M){if(!e&&i.car instanceof M&&L.is(i.car.car,B)){return N(i.car.cdr,{disabled:true})}if(i.cdr instanceof M&&L.is(i.cdr.car,B)&&!e){I(">> 1");var t=O["..."].symbols;var f=Object.values(t);if(f.length&&f.every(function(e){return e===null})){return N(i.cdr.cdr,{disabled:e})}var l=T(t);var u=i.car instanceof L&&L.is(i.cdr.cdr.car,B);if(i.car instanceof M||u){if(O["..."].lists[0]===U){return U}var h=i.car;if(u){h=new M(i.car,new M(i.cdr.car,U))}I(">> 2");var a;if(l.length){I(">> 2 (a)");var o=vn({},t);a=U;var p=function e(){if(!R(o)){return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(h,o,{nested:true},t);if(r!==undefined){if(u){if(a===U){a=r}else{a=a.append(r)}}else{a=new M(r,a)}}o=n};while(true){var _=p();if(_==="break")break}if(a!==U&&!u){a=a.reverse()}if(i.cdr.cdr!==U&&!L.is(i.cdr.cdr.car,B)){var d=N(i.cdr.cdr,{disabled:e});return a.append(d)}return a}else{I(">> 3");var v=P(i.car,t,{nested:true});if(v){return new M(v,U)}return U}}else if(i.car instanceof L){I(">> 4");if(L.is(i.cdr.cdr.car,B)){I(">> 4 (a)")}else{I(">> 4 (b)")}var y=i.car.__name__;var s=Y({},y,t[y]);var m=t[y]===null;var c=U;var g=function e(){if(!R(s,true)){I({bind:s});return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(i,s,{nested:false},t);I({value:r.toString()});if(typeof r!=="undefined"){c=new M(r,c)}s=n};while(true){var b=g();if(b==="break")break}if(c!==U){c=c.reverse()}if(i.cdr instanceof M){if(i.cdr.cdr instanceof M||i.cdr.cdr instanceof L){var w=N(i.cdr.cdr,{disabled:e});if(m){return w}I("<<<< 1");c.append(w)}}I("<<<< 2");return c}}var D=N(i.car,{disabled:e});var r;var E;if(i.car instanceof L){var A=S.get(i.car,{throwError:false});E=A instanceof Vu&&A.__name__==="syntax-rules"}if(E){if(i.cdr.car instanceof L){r=new M(N(i.cdr.car,{disabled:e}),new M(i.cdr.cdr.car,N(i.cdr.cdr.cdr,{disabled:e})))}else{r=new M(i.cdr.car,N(i.cdr.cdr,{disabled:e}))}I("REST >>>> "+r.toString())}else{r=N(i.cdr,{disabled:e})}I({a:true,car:Pu(i.car),cdr:Pu(i.cdr),head:Pu(D),rest:Pu(r)});return new M(D,r)}if(i instanceof L){if(e&&L.is(i,B)){return i}var x=Object.keys(O["..."].symbols);var F=i.literal();if(x.includes(F)){var k="missing ellipsis symbol next to name `".concat(F,"'");throw new Error("syntax-rules: ".concat(k))}var C=j(i);if(typeof C!=="undefined"){return C}}return i}return N(t,{})}function Zu(e){return na(e)||e===U||e===null}function Xu(e){return typeof e==="function"&&typeof e.bind==="function"}function ea(e){return e instanceof hs}function ta(e){return Xu(e)||ea(e)}function ra(e){if(e instanceof ki){return false}if(e instanceof Promise){return true}return e&&Xu(e.then)}function na(e){return typeof e==="undefined"}function ia(e){switch(_(e)){case"string":return $a(e);case"bigint":return C(e);case"number":if(Number.isNaN(e)){return Uo}else{return C(e)}}return e}function ua(n,i){var e=Object.getOwnPropertyNames(n);var t=Object.getOwnPropertySymbols(n);e.concat(t).forEach(function(e){var t=i(n[e]);var r=Object.getOwnPropertyDescriptor(n,e);if(!r||r.writable&&n[e]!==t){n[e]=t}});return n}function aa(t){var e=[$a,C].some(function(e){return t instanceof e});if(e){return t.valueOf()}if(t instanceof Array){return t.map(aa)}if(t instanceof ki){delete t.then}if(wu(t)){return ua(t,aa)}return t}function oa(e,t){if(e instanceof M){e.markCycles();return Io(e)}if(Xu(e)){if(t){return ca(e,t)}}return ia(e)}function sa(e){if(la(e)){return e[va]}return e}function ca(e,t){if(e[Symbol["for"]("__bound__")]){return e}var r=e.bind(t);var n=Object.getOwnPropertyNames(e);var i=hn(n),u;try{for(i.s();!(u=i.n()).done;){var a=u.value;if(xa(a)){try{r[a]=e[a]}catch(e){}}}}catch(e){i.e(e)}finally{i.f()}Fa(r,"__fn__",e);Fa(r,"__context__",t);Fa(r,"__bound__",true);if(Ba(e)){Fa(r,"__native__",true)}if(wu(t)&&Ca(e)){Fa(r,"__method__",true)}r.valueOf=function(){return e};return r}function fa(e){return la(e)&&e[Symbol["for"]("__context__")]===Object}function la(e){return!!(Xu(e)&&e[va])}function ha(e){if(Xu(e)){var t=e[da];if(t&&(t===Gs||t.constructor&&t.constructor.__class__)){return true}}return false}function pa(e){return e instanceof ho||e instanceof po}function _a(e){if(Xu(e)){if(pa(e[da])){return true}}return false}var da=Symbol["for"]("__context__");var va=Symbol["for"]("__fn__");var ya=Symbol["for"]("__data__");var ma=Symbol["for"]("__ref__");var ga=Symbol["for"]("__cycles__");var ba=Symbol["for"]("__class__");var wa=Symbol["for"]("__method__");var Da=Symbol["for"]("__prototype__");var Ea=Symbol["for"]("__lambda__");var Aa=["name","length","caller","callee","arguments","prototype"];function xa(e){return!Aa.includes(e)}function Fa(e,t,r){Object.defineProperty(e,Symbol["for"](t),{get:function e(){return r},set:function e(){},configurable:false,enumerable:false})}function ka(t,r){try{Object.defineProperty(t,"length",{get:function e(){return r}});return t}catch(e){var n=new Array(r).fill(0).map(function(e,t){return"a"+t}).join(",");var i=new Function("f","return function(".concat(n,") {\n return f.apply(this, arguments);\n };"));return i(t)}}function Ca(e){return e&&e[Ea]}function Oa(e){return e&&e[wa]}function Sa(e){return Ca(e)&&!e[Da]&&!Oa(e)&&!_a(e)}function Ba(e){var t=Symbol["for"]("__native__");return Xu(e)&&e.toString().match(/\{\s*\[native code\]\s*\}/)&&(e.name.match(/^bound /)&&e[t]===true||!e.name.match(/^bound /)&&!e[t])}function ja(e){var g;switch(e){case Symbol["for"]("letrec"):g="letrec";break;case Symbol["for"]("let"):g="let";break;case Symbol["for"]("let*"):g="let*";break;default:throw new Error("Invalid let_macro value")}return Vu.defmacro(g,function(t,e){var f=e.dynamic_scope,l=e.error,n=e.macro_expand;var h;if(t.car instanceof L){if(!(t.cdr.car instanceof M||t.cdr.car===U)){throw new Error("let require list of pairs")}var r;if(t.cdr.car===U){h=U;r=U}else{r=t.cdr.car.map(function(e){return e.car});h=t.cdr.car.map(function(e){return e.cdr.car})}return M.fromArray([L("letrec"),[[t.car,M(L("lambda"),M(r,t.cdr.cdr))]],M(t.car,h)])}else if(n){return}var p=this;h=qo.get("list->array")(t.car);var _=p.inherit(g);var d,v;if(g==="let*"){v=_}else if(g==="let"){d=[]}var y=0;function m(){var e=new M(new L("begin"),t.cdr);return _s(e,{env:_,dynamic_scope:f,error:l})}return function t(){var r=h[y++];if(f){f=g==="let*"?_:p}if(!r){if(d&&d.length){var e=d.map(function(e){return e.value});var n=e.filter(ra);if(n.length){return Ci(e).then(function(e){for(var t=0,r=e.length;t1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;var i=this;if(r){r=this}var u=e;var a=[];while(u instanceof M){a.push(_s(u.car,{env:i,dynamic_scope:r,error:n}));u=u.cdr}var o=a.filter(ra).length;if(o){return Ci(a).then(s.bind(this))}else{return s.call(this,a)}})}function Pa(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2?n-2:0),u=2;u1&&arguments[1]!==undefined?arguments[1]:null;return function(){for(var e=arguments.length,t=new Array(e),r=0;r1?e-1:0),r=1;r=a){return u.apply(this,n)}else{return i}}return i.apply(this,arguments)}}function Va(n,i){h("limit",i,"function",2);return function(){for(var e=arguments.length,t=new Array(e),r=0;r1){e=e.toLowerCase();if(za.__names__[e]){t=e;e=za.__names__[e]}else{throw new Error("Internal: Unknown named character")}}else{t=za.__rev_names__[e]}Object.defineProperty(this,"__char__",{value:e,enumerable:true});if(t){Object.defineProperty(this,"__name__",{value:t,enumerable:true})}}za.__names__=Un;za.__rev_names__={};Object.keys(za.__names__).forEach(function(e){var t=za.__names__[e];za.__rev_names__[t]=e});za.prototype.toUpperCase=function(){return za(this.__char__.toUpperCase())};za.prototype.toLowerCase=function(){return za(this.__char__.toLowerCase())};za.prototype.toString=function(){return"#\\"+(this.__name__||this.__char__)};za.prototype.valueOf=za.prototype.serialize=function(){return this.__char__};function $a(e){if(typeof this!=="undefined"&&!(this instanceof $a)||typeof this==="undefined"){return new $a(e)}if(e instanceof Array){this.__string__=e.map(function(e,t){h("LString",e,"character",t+1);return e.toString()}).join("")}else{this.__string__=e.valueOf()}}{var Ja=["length","constructor"];var Ka=Object.getOwnPropertyNames(String.prototype).filter(function(e){return!Ja.includes(e)});var Ga=function e(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r0){r.push(this.__string__.substring(0,e))}r.push(t);if(e1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof C){return e}if(typeof this!=="undefined"&&!(this instanceof C)||typeof this==="undefined"){return new C(e,t)}if(typeof e==="undefined"){throw new Error("Invalid LNumber constructor call")}var r=C.getType(e);if(C.types[r]){return C.types[r](e,t)}var n=e instanceof Array&&$a.isString(e[0])&&C.isNumber(e[1]);if(e instanceof C){return C(e.value)}if(!C.isNumber(e)&&!n){throw new Error("You can't create LNumber from ".concat(us(e)))}if(e===null){e=0}var i;if(n){var c=e,u=j(c,2),a=u[0],o=u[1];if(a instanceof $a){a=a.valueOf()}if(o instanceof C){o=o.valueOf()}var f=a.match(/^([+-])/);var l=false;if(f){a=a.replace(/^[+-]/,"");if(f[1]==="-"){l=true}}}if(Number.isNaN(e)){return uo(e)}else if(typeof BigInt!=="undefined"){if(typeof e!=="bigint"){if(n){var s;switch(o){case 8:s="0o";break;case 16:s="0x";break;case 2:s="0b";break;case 10:s="";break}if(typeof s==="undefined"){var h=BigInt(o);i=q(a).map(function(e,t){return BigInt(parseInt(e,o))*ro(h,BigInt(t))}).reduce(function(e,t){return e+t})}else{i=BigInt(s+a)}}else{i=BigInt(e)}if(l){i*=BigInt(-1)}}else{i=e}return lo(i,true)}else if(typeof xn!=="undefined"&&!(e instanceof xn)){if(e instanceof Array){return lo(p(xn,q(e)))}return lo(new xn(e))}else if(n){this.constant(parseInt(a,o),"integer")}else{this.constant(e,"integer")}}C.prototype.constant=function(e,t){Object.defineProperty(this,"__value__",{value:e,enumerable:true});Object.defineProperty(this,"__type__",{value:t,enumerable:true})};C.types={float:function e(t){return new uo(t)},complex:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isComplex(t)){t={im:0,re:t}}return new io(t,r)},rational:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isRational(t)){t={num:t,denom:1}}return new fo(t,r)}};C.prototype.serialize=function(){return this.__value__};C.prototype.isNaN=function(){return Number.isNaN(this.__value__)};C.prototype.gcd=function(e){var t=this.abs();e=e.abs();if(e.cmp(t)===1){var r=t;t=e;e=r}while(true){t=t.rem(e);if(t.cmp(0)===0){return e}e=e.rem(t);if(e.cmp(0)===0){return t}}};C.isFloat=function e(t){return t instanceof uo||Number(t)===t&&t%1!==0};C.isNumber=function(e){return e instanceof C||C.isNative(e)||C.isBN(e)};C.isComplex=function(e){if(!e){return false}var t=e instanceof io||(C.isNumber(e.im)||Number.isNaN(e.im))&&(C.isNumber(e.re)||Number.isNaN(e.re));return t};C.isRational=function(e){if(!e){return false}return e instanceof fo||C.isNumber(e.num)&&C.isNumber(e.denom)};C.isInteger=function(e){if(!(C.isNative(e)||e instanceof C)){return false}if(C.isFloat(e)){return false}if(C.isRational(e)){return false}if(C.isComplex(e)){return false}return true};C.isNative=function(e){return typeof e==="bigint"||typeof e==="number"};C.isBigInteger=function(e){return e instanceof lo||typeof e==="bigint"||C.isBN(e)};C.isBN=function(e){return typeof xn!=="undefined"&&e instanceof xn};C.getArgsType=function(e,t){if(e instanceof uo||t instanceof uo){return uo}if(e instanceof lo||t instanceof lo){return lo}return C};C.prototype.toString=function(e){if(Number.isNaN(this.__value__)){return"+nan.0"}if(e>2&&e<36){return this.__value__.toString(e)}return this.__value__.toString()};C.prototype.asType=function(e){var t=C.getType(this);return C.types[t]?C.types[t](e):C(e)};C.prototype.isBigNumber=function(){return typeof this.__value__==="bigint"||typeof xn!=="undefined"&&!(this.value instanceof xn)};["floor","ceil","round"].forEach(function(e){C.prototype[e]=function(){if(this["float"]||C.isFloat(this.__value__)){return C(Math[e](this.__value__))}else{return C(Math[e](this.valueOf()))}}});C.prototype.valueOf=function(){if(C.isNative(this.__value__)){return Number(this.__value__)}else if(C.isBN(this.__value__)){return this.__value__.toNumber()}};var Za=function(){var e=function e(t,r){return[t,r]};return{bigint:{bigint:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},integer:{integer:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},float:{bigint:function e(t,r){return[t,r&&uo(r.valueOf())]},integer:function e(t,r){return[t,r&&uo(r.valueOf())]},float:e,rational:function e(t,r){return[t,r&&uo(r.valueOf())]},complex:function e(t,r){return[{re:t,im:uo(0)},r]}},complex:{bigint:t("bigint"),integer:t("integer"),float:t("float"),rational:t("rational"),complex:function f(e,t){var r=C.coerce(e.__re__,t.__re__),n=j(r,2),i=n[0],u=n[1];var a=C.coerce(e.__im__,t.__im__),o=j(a,2),s=o[0],c=o[1];return[{im:s,re:i},{im:c,re:u}]}},rational:{bigint:function e(t,r){return[t,r&&{num:r,denom:1}]},integer:function e(t,r){return[t,r&&{num:r,denom:1}]},float:function e(t,r){return[uo(t.valueOf()),r]},rational:e,complex:function e(t,r){return[{im:Xa(t.__type__,r.__im__.__type__,0)[0],re:Xa(t.__type__,r.__re__.__type__,t)[0]},{im:Xa(t.__type__,r.__im__.__type__,r.__im__)[0],re:Xa(t.__type__,r.__re__.__type__,r.__re__)[0]}]}}};function t(r){return function(e,t){return[{im:Xa(r,e.__im__.__type__,0,e.__im__)[1],re:Xa(r,e.__re__.__type__,0,e.__re__)[1]},{im:Xa(r,e.__im__.__type__,0,0)[1],re:Xa(r,t.__type__,0,t)[1]}]}}}();function Xa(e,t,r,n){return Za[e][t](r,n)}C.coerce=function(e,t){var r=C.getType(e);var n=C.getType(t);if(!Za[r]){throw new Error("LNumber::coerce unknown lhs type ".concat(r))}else if(!Za[r][n]){throw new Error("LNumber::coerce unknown rhs type ".concat(n))}var i=Za[r][n](e,t);return i.map(function(e){return C(e,true)})};C.prototype.coerce=function(e){if(!(typeof e==="number"||e instanceof C)){throw new Error("LNumber: you can't coerce ".concat(us(e)))}if(typeof e==="number"){e=C(e)}return C.coerce(this,e)};C.getType=function(e){if(e instanceof C){return e.__type__}if(C.isFloat(e)){return"float"}if(C.isComplex(e)){return"complex"}if(C.isRational(e)){return"rational"}if(typeof e==="number"){return"integer"}if(typeof BigInt!=="undefined"&&typeof e!=="bigint"||typeof xn!=="undefined"&&!(e instanceof xn)){return"bigint"}};C.prototype.isFloat=function(){return!!(C.isFloat(this.__value__)||this["float"])};var eo={add:"+",sub:"-",mul:"*",div:"/",rem:"%",or:"|",and:"&",neg:"~",shl:">>",shr:"<<"};var to={};Object.keys(eo).forEach(function(t){to[eo[t]]=t;C.prototype[t]=function(e){return this.op(eo[t],e)}});C._ops={"*":function e(t,r){return t*r},"+":function e(t,r){return t+r},"-":function e(t,r){if(typeof r==="undefined"){return-t}return t-r},"/":function e(t,r){return t/r},"%":function e(t,r){return t%r},"|":function e(t,r){return t|r},"&":function e(t,r){return t&r},"~":function e(t){return~t},">>":function e(t,r){return t>>r},"<<":function e(t,r){return t<1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof io)||typeof this==="undefined"){return new io(e,t)}if(e instanceof io){return io({im:e.__im__,re:e.__re__})}if(C.isNumber(e)&&t){if(!t){return Number(e)}}else if(!C.isComplex(e)){var r="Invalid constructor call for LComplex expect &(:im :re ) object but got ".concat(Pu(e));throw new Error(r)}var n=e.im instanceof C?e.im:C(e.im);var i=e.re instanceof C?e.re:C(e.re);this.constant(n,i)}io.prototype=Object.create(C.prototype);io.prototype.constructor=io;io.prototype.constant=function(e,t){Object.defineProperty(this,"__im__",{value:e,enumerable:true});Object.defineProperty(this,"__re__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"complex",enumerable:true})};io.prototype.serialize=function(){return{re:this.__re__,im:this.__im__}};io.prototype.toRational=function(e){if(C.isFloat(this.__im__)&&C.isFloat(this.__re__)){var t=uo(this.__im__).toRational(e);var r=uo(this.__re__).toRational(e);return io({im:t,re:r})}return this};io.prototype.pow=function(e){throw new Error("Not yet implemented")};io.prototype.add=function(e){return this.complex_op("add",e,function(e,t,r,n){return{re:e.add(t),im:r.add(n)}})};io.prototype.factor=function(){if(this.__im__ instanceof uo||this.__im__ instanceof uo){var e=this.__re__,t=this.__im__;var r,n;if(e instanceof uo){r=e.toRational().mul(e.toRational())}else{r=e.mul(e)}if(t instanceof uo){n=t.toRational().mul(t.toRational())}else{n=t.mul(t)}return r.add(n)}else{return this.__re__.mul(this.__re__).add(this.__im__.mul(this.__im__))}};io.prototype.modulus=function(){return this.factor().sqrt()};io.prototype.conjugate=function(){return io({re:this.__re__,im:this.__im__.sub()})};io.prototype.sqrt=function(){var e=this.modulus();var t,r;if(e.cmp(0)===0){t=r=e}else if(this.__re__.cmp(0)===1){t=uo(.5).mul(e.add(this.__re__)).sqrt();r=this.__im__.div(t).div(2)}else{r=uo(.5).mul(e.sub(this.__re__)).sqrt();if(this.__im__.cmp(0)===-1){r=r.sub()}t=this.__im__.div(r).div(2)}return io({im:r,re:t})};io.prototype.div=function(e){if(C.isNumber(e)&&!C.isComplex(e)){if(!(e instanceof C)){e=C(e)}var t=this.__re__.div(e);var r=this.__im__.div(e);return io({re:t,im:r})}else if(!C.isComplex(e)){throw new Error("[LComplex::div] Invalid value")}if(this.cmp(e)===0){var n=this.coerce(e),i=j(n,2),f=i[0],u=i[1];var l=f.__im__.div(u.__im__);return l.coerce(u.__re__)[0]}var h=this.coerce(e),a=j(h,2),p=a[0],o=a[1];var s=o.factor();var _=o.conjugate();var c=p.mul(_);if(!C.isComplex(c)){return c.div(s)}var d=c.__re__.op("/",s);var v=c.__im__.op("/",s);return io({re:d,im:v})};io.prototype.sub=function(e){return this.complex_op("sub",e,function(e,t,r,n){return{re:e.sub(t),im:r.sub(n)}})};io.prototype.mul=function(e){return this.complex_op("mul",e,function(e,t,r,n){var i={re:e.mul(t).sub(r.mul(n)),im:e.mul(n).add(t.mul(r))};return i})};io.prototype.complex_op=function(e,t,i){var u=this;var r=function e(t,r){var n=i(u.__re__,t,u.__im__,r);if("im"in n&&"re"in n){if(n.im.cmp(0)===0){return n.re}return io(n,true)}return n};if(typeof t==="undefined"){return r()}if(C.isNumber(t)&&!C.isComplex(t)){if(!(t instanceof C)){t=C(t)}var n=t.asType(0);t={__im__:n,__re__:t}}else if(!C.isComplex(t)){throw new Error("[LComplex::".concat(e,"] Invalid value"))}var a=t.__re__ instanceof C?t.__re__:this.__re__.asType(t.__re__);var o=t.__im__ instanceof C?t.__im__:this.__im__.asType(t.__im__);return r(a,o)};io._op={"+":"add","-":"sub","*":"mul","/":"div"};io.prototype._op=function(e,t){var r=io._op[e];return this[r](t)};io.prototype.cmp=function(e){var t=this.coerce(e),r=j(t,2),n=r[0],i=r[1];var u=n.__re__.coerce(i.__re__),a=j(u,2),o=a[0],f=a[1];var s=o.cmp(f);if(s!==0){return s}else{var l=n.__im__.coerce(i.__im__),c=j(l,2),h=c[0],p=c[1];return h.cmp(p)}};io.prototype.valueOf=function(){return[this.__re__,this.__im__].map(function(e){return e.valueOf()})};io.prototype.toString=function(){var e;if(this.__re__.cmp(0)!==0){e=[Pu(this.__re__)]}else{e=[]}var t=this.__im__.valueOf();var r=[Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY].includes(t);var n=Pu(this.__im__);if(!r&&!Number.isNaN(t)){var i=this.__im__.cmp(0);if(i<0||i===0&&this.__im__._minus){e.push("-")}else{e.push("+")}n=n.replace(/^-/,"")}e.push(n);e.push("i");return e.join("")};function uo(e){if(typeof this!=="undefined"&&!(this instanceof uo)||typeof this==="undefined"){return new uo(e)}if(!C.isNumber(e)){throw new Error("Invalid constructor call for LFloat")}if(e instanceof C){return uo(e.valueOf())}if(typeof e==="number"){if(Object.is(e,-0)){Object.defineProperty(this,"_minus",{value:true})}this.constant(e,"float")}}uo.prototype=Object.create(C.prototype);uo.prototype.constructor=uo;uo.prototype.toString=function(){if(this.__value__===Number.NEGATIVE_INFINITY){return"-inf.0"}if(this.__value__===Number.POSITIVE_INFINITY){return"+inf.0"}if(Number.isNaN(this.__value__)){return"+nan.0"}var e=this.__value__.toString();if(!C.isFloat(this.__value__)&&!e.match(/e/i)){var t=e+".0";return this._minus?"-"+t:t}return e.replace(/^([0-9]+)e/,"$1.0e")};uo.prototype._op=function(e,t){if(t instanceof C){t=t.__value__}var r=C._ops[e];if(e==="/"&&this.__value__===0&&t===0){return NaN}return uo(r(this.__value__,t))};uo.prototype.toRational=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){return ao(this.__value__.valueOf())}return oo(e.valueOf())(this.__value__.valueOf())};uo.prototype.sqrt=function(){var e=this.valueOf();if(this.cmp(0)<0){var t=uo(Math.sqrt(-e));return io({re:0,im:t})}return uo(Math.sqrt(e))};uo.prototype.abs=function(){var e=this.valueOf();if(e<0){e=-e}return uo(e)};var ao=oo(1e-10);function oo(n){return function(e){var t=function e(n,t,r){var i=function e(t,r){return r0){i=co(n,r)}else if(n.cmp(r)<=0){i=r}else if(r.cmp(0)>0){i=co(r,n)}else if(t.cmp(0)<0){i=C(co(n.sub(),r.sub())).sub()}else{i=C(0)}if(C.isFloat(t)||C.isFloat(e)){return uo(i)}return i}function co(e,t){var r=C(e).floor();var n=C(t).floor();if(e.cmp(r)<1){return r}else if(r.cmp(n)===0){var i=C(1).div(t.sub(n));var u=C(1).div(e.sub(r));return r.add(C(1).div(co(i,u)))}else{return r.add(C(1))}}function fo(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof fo)||typeof this==="undefined"){return new fo(e,t)}if(!C.isRational(e)){throw new Error("Invalid constructor call for LRational")}var r,n;if(e instanceof fo){r=C(e.__num__);n=C(e.__denom__)}else{r=C(e.num);n=C(e.denom)}if(!t&&n.cmp(0)!==0){var i=r.op("%",n).cmp(0)===0;if(i){return C(r.div(n))}}this.constant(r,n)}fo.prototype=Object.create(C.prototype);fo.prototype.constructor=fo;fo.prototype.constant=function(e,t){Object.defineProperty(this,"__num__",{value:e,enumerable:true});Object.defineProperty(this,"__denom__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"rational",enumerable:true})};fo.prototype.serialize=function(){return{num:this.__num__,denom:this.__denom__}};fo.prototype.pow=function(e){var t=e.cmp(0);if(t===0){return C(1)}if(t===-1){e=e.sub();var r=this.__denom__.pow(e);var n=this.__num__.pow(e);return fo({num:r,denom:n})}var i=this;e=e.valueOf();while(e>1){i=i.mul(this);e--}return i};fo.prototype.sqrt=function(){var e=this.__num__.sqrt();var t=this.__denom__.sqrt();if(e instanceof uo||t instanceof uo){return e.div(t)}return fo({num:e,denom:t})};fo.prototype.abs=function(){var e=this.__num__;var t=this.__denom__;if(e.cmp(0)===-1){e=e.sub()}if(t.cmp(0)!==1){t=t.sub()}return fo({num:e,denom:t})};fo.prototype.cmp=function(e){return C(this.valueOf(),true).cmp(e)};fo.prototype.toString=function(){var e=this.__num__.gcd(this.__denom__);var t,r;if(e.cmp(1)!==0){t=this.__num__.div(e);if(t instanceof fo){t=C(t.valueOf(true))}r=this.__denom__.div(e);if(r instanceof fo){r=C(r.valueOf(true))}}else{t=this.__num__;r=this.__denom__}var n=this.cmp(0)<0;if(n){if(t.abs().cmp(r.abs())===0){return t.toString()}}else if(t.cmp(r)===0){return t.toString()}return t.toString()+"/"+r.toString()};fo.prototype.valueOf=function(e){if(this.__denom__.cmp(0)===0){if(this.__num__.cmp(0)<0){return Number.NEGATIVE_INFINITY}return Number.POSITIVE_INFINITY}if(e){return C._ops["/"](this.__num__.value,this.__denom__.value)}return uo(this.__num__.valueOf()).div(this.__denom__.valueOf())};fo.prototype.mul=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__num__);var r=this.__denom__.mul(e.__denom__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.mul(a)};fo.prototype.div=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__denom__);var r=this.__denom__.mul(e.__num__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];var o=u.div(a);return o};fo.prototype._op=function(e,t){return this[to[e]](t)};fo.prototype.sub=function(e){if(typeof e==="undefined"){return this.mul(-1)}if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=e.__num__.sub();var r=e.__denom__;return this.add(fo({num:t,denom:r}))}if(!(e instanceof C)){e=C(e).sub()}else{e=e.sub()}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.add(a)};fo.prototype.add=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__denom__;var r=e.__denom__;var n=this.__num__;var i=e.__num__;var u,a;if(t!==r){a=r.mul(n).add(i.mul(t));u=t.mul(r)}else{a=n.add(i);u=t}return fo({num:a,denom:u})}if(C.isFloat(e)){return uo(this.valueOf()).add(e)}var o=C.coerce(this,e),s=j(o,2),c=s[0],f=s[1];return c.add(f)};function lo(e,t){if(typeof this!=="undefined"&&!(this instanceof lo)||typeof this==="undefined"){return new lo(e,t)}if(e instanceof lo){return lo(e.__value__,e._native)}if(!C.isBigInteger(e)){throw new Error("Invalid constructor call for LBigInteger")}this.constant(e,"bigint");Object.defineProperty(this,"_native",{value:t})}lo.prototype=Object.create(C.prototype);lo.prototype.constructor=lo;lo.bn_op={"+":"iadd","-":"isub","*":"imul","/":"idiv","%":"imod","|":"ior","&":"iand","~":"inot","<<":"ishrn",">>":"ishln"};lo.prototype.serialize=function(){return this.__value__.toString()};lo.prototype._op=function(e,t){if(typeof t==="undefined"){if(C.isBN(this.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](),false)}return lo(C._ops[e](this.__value__),true)}if(C.isBN(this.__value__)&&C.isBN(t.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](t),false)}var r=C._ops[e](this.__value__,t.__value__);if(e==="/"){var n=this.op("%",t).cmp(0)===0;if(n){return C(r)}return fo({num:this,denom:t})}return lo(r,true)};lo.prototype.sqrt=function(){var e;var t=this.cmp(0)<0;if(C.isNative(this.__value__)){e=C(Math.sqrt(t?-this.valueOf():this.valueOf()))}else if(C.isBN(this.__value__)){e=t?this.__value__.neg().sqrt():this.__value__.sqrt()}if(t){return io({re:0,im:e})}return e};C.NaN=C(NaN);function ho(e){var n=this;if(typeof this!=="undefined"&&!(this instanceof ho)||typeof this==="undefined"){return new ho(e)}h("InputPort",e,"function");$i(this,"__type__",xo);var i;Object.defineProperty(this,"__parser__",{enumerable:true,get:function e(){return i},set:function e(t){h("InputPort::__parser__",t,"parser");i=t}});this._read=e;this._with_parser=this._with_init_parser.bind(this,B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(n.char_ready()){t.next=5;break}t.next=3;return n._read();case 3:r=t.sent;i=new Li(r,{env:n});case 5:return t.abrupt("return",n.__parser__);case 6:case"end":return t.stop()}}},e)})));this.char_ready=function(){return!!this.__parser__&&this.__parser__.__lexer__.peek()!==Fo};this._make_defaults()}ho.prototype._make_defaults=function(){this.read=this._with_parser(function(e){return e.read_object()});this.read_line=this._with_parser(function(e){return e.__lexer__.read_line()});this.read_char=this._with_parser(function(e){return e.__lexer__.read_char()});this.read_string=this._with_parser(function(e,t){if(!C.isInteger(t)){var r=C.getType(t);Qo("read-string",r,"integer")}return e.__lexer__.read_string(t.valueOf())});this.peek_char=this._with_parser(function(e){return e.__lexer__.peek_char()})};ho.prototype._with_init_parser=function(o,s){var c=this;return B(z.mark(function e(){var r,n,i,u,a=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return o.call(c);case 2:r=t.sent;for(n=a.length,i=new Array(n),u=0;u"};function po(e){if(typeof this!=="undefined"&&!(this instanceof po)||typeof this==="undefined"){return new po(e)}h("OutputPort",e,"function");$i(this,"__type__",xo);this.write=e}po.prototype.is_open=function(){return this._closed!==true};po.prototype.close=function(){Object.defineProperty(this,"_closed",{get:function e(){return true},set:function e(){},configurable:false,enumerable:false});this.write=function(){throw new Error("output-port: port is closed")}};po.prototype.flush=function(){};po.prototype.toString=function(){return"#"};var _o=function(e){u(n,e);var r=fn(n);function n(e){var t;D(this,n);t=r.call(this,function(){var e;return(e=t)._write.apply(e,arguments)});h("BufferedOutputPort",e,"function");$i(i(t),"_fn",e,{hidden:true});$i(i(t),"_buffer",[],{hidden:true});return t}A(n,[{key:"flush",value:function e(){if(this._buffer.length){this._fn(this._buffer.join(""));this._buffer.length=0}}},{key:"_write",value:function e(){var t=this;for(var r=arguments.length,n=new Array(r),i=0;i"};vo.prototype.valueOf=function(){return this.__buffer__.map(function(e){return e.valueOf()}).join("")};function yo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof yo)||typeof this==="undefined"){return new yo(e,t)}h("OutputFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",xo);this.write=function(e){if(!$a.isString(e)){e=Pu(e)}else{e=e.valueOf()}r.fs().write(r._fd,e,function(e){if(e){throw e}})}}yo.prototype=Object.create(po.prototype);yo.prototype.constructor=yo;yo.prototype.fs=function(){if(!this._fs){this._fs=this.internal("fs")}return this._fs};yo.prototype.internal=function(e){return Yo.get("**internal-env**").get(e)};yo.prototype.close=function(){var n=this;return new Promise(function(t,r){n.fs().close(n._fd,function(e){if(e){r(e)}else{$i(n,"_fd",null,{hidden:true});po.prototype.close.call(n);t()}})})};yo.prototype.toString=function(){return"#")};function mo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof mo)||typeof this==="undefined"){return new mo(e)}h("InputStringPort",e,"string");t=t||qo;e=e.valueOf();this._with_parser=this._with_init_parser.bind(this,function(){if(!r.__parser__){r.__parser__=new Li(e,{env:t})}return r.__parser__});$i(this,"__type__",xo);this._make_defaults()}mo.prototype.char_ready=function(){return true};mo.prototype=Object.create(ho.prototype);mo.prototype.constructor=mo;mo.prototype.toString=function(){return"#"};function go(e){if(typeof this!=="undefined"&&!(this instanceof go)||typeof this==="undefined"){return new go(e)}h("InputByteVectorPort",e,"uint8array");$i(this,"__vector__",e);$i(this,"__type__",Ao);var r=0;Object.defineProperty(this,"__index__",{enumerable:true,get:function e(){return r},set:function e(t){h("InputByteVectorPort::__index__",t,"number");if(t instanceof C){t=t.valueOf()}if(typeof t==="bigint"){t=Number(t)}if(Math.floor(t)!==t){throw new Error("InputByteVectorPort::__index__ value is "+"not integer")}r=t}})}go.prototype=Object.create(ho.prototype);go.prototype.constructor=go;go.prototype.toString=function(){return"#"};go.prototype.close=function(){var t=this;$i(this,"__vector__",U);["read_u8","close","peek_u8","read_u8_vector"].forEach(function(e){t[e]=function(){throw new Error("Input-binary-port: port is closed")}});this.char_ready=function(){return false}};go.prototype.u8_ready=function(){return true};go.prototype.peek_u8=function(){if(this.__index__>=this.__vector__.length){return Fo}return this.__vector__[this.__index__]};go.prototype.skip=function(){if(this.__index__<=this.__vector__.length){++this.__index__}};go.prototype.read_u8=function(){var e=this.peek_u8();this.skip();return e};go.prototype.read_u8_vector=function(e){if(typeof e==="undefined"){e=this.__vector__.length}else if(e>this.__index__+this.__vector__.length){e=this.__index__+this.__vector__.length}if(this.peek_u8()===Fo){return Fo}return this.__vector__.slice(this.__index__,e)};function bo(){if(typeof this!=="undefined"&&!(this instanceof bo)||typeof this==="undefined"){return new bo}$i(this,"__type__",Ao);$i(this,"_buffer",[],{hidden:true});this.write=function(e){h("write",e,["number","uint8array"]);if(C.isNumber(e)){this._buffer.push(e.valueOf())}else{var t;(t=this._buffer).push.apply(t,q(Array.from(e)))}};Object.defineProperty(this,"__buffer__",{enumerable:true,get:function e(){return Uint8Array.from(this._buffer)}})}bo.prototype=Object.create(po.prototype);bo.prototype.constructor=bo;bo.prototype.close=function(){po.prototype.close.call(this);$i(this,"_buffer",null,{hidden:true})};bo.prototype._close_guard=function(){if(this._closed){throw new Error("output-port: binary port is closed")}};bo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};bo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};bo.prototype.toString=function(){return"#"};bo.prototype.valueOf=function(){return this.__buffer__};function wo(e,t){if(typeof this!=="undefined"&&!(this instanceof wo)||typeof this==="undefined"){return new wo(e,t)}mo.call(this,e);h("InputFilePort",t,"string");$i(this,"__filename__",t)}wo.prototype=Object.create(mo.prototype);wo.prototype.constructor=wo;wo.prototype.toString=function(){return"#")};function Do(e,t){if(typeof this!=="undefined"&&!(this instanceof Do)||typeof this==="undefined"){return new Do(e,t)}go.call(this,e);h("InputBinaryFilePort",t,"string");$i(this,"__filename__",t)}Do.prototype=Object.create(go.prototype);Do.prototype.constructor=Do;Do.prototype.toString=function(){return"#")};function Eo(e,t){if(typeof this!=="undefined"&&!(this instanceof Eo)||typeof this==="undefined"){return new Eo(e,t)}h("OutputBinaryFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",Ao);var u,r;this.write=function(e){var n=this;h("write",e,["number","uint8array"]);var i;if(!u){u=this.internal("fs")}if(!r){r=this.internal("Buffer")}if(C.isNumber(e)){i=r.from([e.valueOf()])}else{i=r.from(Array.from(e))}return new Promise(function(t,r){u.write(n._fd,i,function(e){if(e){r(e)}else{t()}})})}}Eo.prototype=Object.create(yo.prototype);Eo.prototype.constructor=Eo;Eo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};Eo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};var Ao=Symbol["for"]("binary");var xo=Symbol["for"]("text");var Fo=new ko;function ko(){}ko.prototype.toString=function(){return"#"};function Co(e){var c=this;var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.stderr,n=t.stdin,i=t.stdout,u=t.command_line,a=u===void 0?null:u,o=F(t,cn);if(typeof this!=="undefined"&&!(this instanceof Co)||typeof this==="undefined"){return new Co(e,vn({stdin:n,stdout:i,stderr:r,command_line:a},o))}if(typeof e==="undefined"){e="anonymous"}this.__env__=Yo.inherit(e,o);this.__env__.set("parent.frame",y("parent.frame",function(){return c.__env__},qo.__env__["parent.frame"].__doc__));var f="**interaction-environment-defaults**";this.set(f,Ou(o).concat(f));var s=Lo.inherit("internal-".concat(e));if(pa(n)){s.set("stdin",n)}if(pa(r)){s.set("stderr",r)}if(pa(i)){s.set("stdout",i)}s.set("command-line",a);Vo(this.__env__,s)}Co.prototype.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Interpreter::exec",e,["string","array"],1);h("Interpreter::exec",t,"boolean",2);qo.set("**interaction-environment**",this.__env__);if(r===null){r=this.__env__}return vs(e,r,t?r:false)};Co.prototype.get=function(e){var t=this.__env__.get(e);if(Xu(t)){return t.bind(this.__env__)}return t};Co.prototype.set=function(e,t){return this.__env__.set(e,t)};Co.prototype.constant=function(e,t){return this.__env__.constant(e,t)};function Oo(e,t){this.name="LipsError";this.message=e;this.args=t;this.stack=(new Error).stack}Oo.prototype=new Error;Oo.prototype.constructor=Oo;function So(e,t,r){if(arguments.length===1){if(_(arguments[0])==="object"){e=arguments[0];t=null}else if(typeof arguments[0]==="string"){e={};t=null;r=arguments[0]}}this.__docs__=new Map;this.__env__=e;this.__parent__=t;this.__name__=r||"anonymous"}So.prototype.list=function(){return Ou(this.__env__)};So.prototype.fs=function(){return this.get("**fs**")};So.prototype.unset=function(e){if(e instanceof L){e=e.valueOf()}if(e instanceof $a){e=e.valueOf()}delete this.__env__[e]};So.prototype.inherit=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(_(e)==="object"){t=e}if(!e||_(e)==="object"){e="child of "+(this.__name__||"unknown")}return new So(t||{},this,e)};So.prototype.doc=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(t){if(!r){t=Hi(t)}this.__docs__.set(e,t);return this}if(this.__docs__.has(e)){return this.__docs__.get(e)}if(this.__parent__){return this.__parent__.doc(e)}};So.prototype.newFrame=function(e,t){var n=this.inherit("__frame__");n.set("parent.frame",y("parent.frame",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;e=e.valueOf();var t=n.__parent__;if(!(t instanceof So)){return U}if(e<=0){return t}var r=t.get("parent.frame");return r(e-1)},qo.__env__["parent.frame"].__doc__));t.callee=e;n.set("arguments",t);return n};So.prototype._lookup=function(e){if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(this.__env__.hasOwnProperty(e)){return Bo(this.__env__[e])}if(this.__parent__){return this.__parent__._lookup(e)}};So.prototype.toString=function(){return"#"};So.prototype.clone=function(){var t=this;var r={};Object.keys(this.__env__).forEach(function(e){r[e]=t.__env__[e]});return new So(r,this.__parent__,this.__name__)};So.prototype.merge=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"merge";h("Environment::merge",e,"environment");return this.inherit(t,e.__env__)};function Bo(e){if(typeof this!=="undefined"&&!(this instanceof Bo)||typeof this==="undefined"){return new Bo(e)}this.value=e}Bo.isUndefined=function(e){return e instanceof Bo&&typeof e.value==="undefined"};Bo.prototype.valueOf=function(){return this.value};function jo(e){if(e.length){if(e.length===1){return e[0]}}if(typeof this!=="undefined"&&!(this instanceof jo)||typeof this==="undefined"){return new jo(e)}this.__values__=e}jo.prototype.toString=function(){return this.__values__.map(function(e){return Pu(e)}).join("\n")};jo.prototype.valueOf=function(){return this.__values__};So.prototype.get=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};h("Environment::get",e,["symbol","string"]);var r=t.throwError,c=r===void 0?true:r;var n=e;if(n instanceof L||n instanceof $a){n=n.valueOf()}var i=this._lookup(n);if(i instanceof Bo){if(Bo.isUndefined(i)){return undefined}return oa(i.valueOf())}var u;if(e instanceof L&&e[L.object]){u=e[L.object]}else if(typeof n==="string"){u=n.split(".").filter(Boolean)}if(u&&u.length>0){var f=u,a=m(f),o=a[0],s=a.slice(1);i=this._lookup(o);if(s.length){try{if(i instanceof Bo){i=i.valueOf()}else{i=No(gn,o);if(Xu(i)){i=sa(i)}}if(typeof i!=="undefined"){return No.apply(void 0,[i].concat(q(s)))}}catch(e){throw e}}else if(i instanceof Bo){return oa(i.valueOf())}i=No(gn,n)}if(typeof i!=="undefined"){return i}if(c){throw new Error("Unbound variable `"+n.toString()+"'")}};So.prototype.set=function(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Environment::set",e,["string","symbol"]);if(C.isNumber(t)){t=C(t)}if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}this.__env__[e]=t;if(r){this.doc(e,r,true)}return this};So.prototype.constant=function(t,e){var r=this;if(this.__env__.hasOwnProperty(t)){throw new Error("Environment::constant: ".concat(t," already exists"))}if(arguments.length===1&&wu(arguments[0])){var n=arguments[0];Object.keys(n).forEach(function(e){r.constant(t,n[e])})}else{Object.defineProperty(this.__env__,t,{value:e,enumerable:true})}return this};So.prototype.has=function(e){return this.__env__.hasOwnProperty(e)};So.prototype.ref=function(e){var t=this;while(true){if(!t){break}if(t.has(e)){return t}t=t.__parent__}};So.prototype.parents=function(){var e=this;var t=[];while(e){t.unshift(e);e=e.__parent__}return t};function Io(e){if(ra(e)){return e.then(Io)}if(e instanceof M||e instanceof L){e[ya]=true}return e}var Po=Mi(wi('(lambda ()\n "[native code]"\n (throw "Invalid Invocation"))'))[0];var No=y("get",function c(e){var t;for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("peek-char",e,"input-port");return e.peek_char()},"(peek-char port)\n\n This function reads and returns a character from the string\n port, or, if there is no more data in the string port, it\n returns an EOF."),"read-line":y("read-line",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-line",e,"input-port");return e.read_line()},"(read-line port)\n\n This function reads and returns the next line from the input\n port."),"read-char":y("read-char",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-char",e,"input-port");return e.read_char()},"(read-char port)\n\n This function reads and returns the next character from the\n input port."),read:y("read",function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=f.length>0&&f[0]!==undefined?f[0]:null;if(!$a.isString(r)){t.next=30;break}n=false;i=false;t.prev=4;a=yn(Mi(r,this));case 6:t.next=8;return a.next();case 8:if(!(n=!(o=t.sent).done)){t.next=14;break}s=o.value;return t.abrupt("return",s);case 11:n=false;t.next=6;break;case 14:t.next=20;break;case 16:t.prev=16;t.t0=t["catch"](4);i=true;u=t.t0;case 20:t.prev=20;t.prev=21;if(!(n&&a["return"]!=null)){t.next=25;break}t.next=25;return a["return"]();case 25:t.prev=25;if(!i){t.next=28;break}throw u;case 28:return t.finish(25);case 29:return t.finish(20);case 30:if(r===null){c=Ro(this,"stdin")}else{c=r}Xo("read",c,"input-port");return t.abrupt("return",c.read.call(this));case 33:case"end":return t.stop()}}},e,this,[[4,16,20,30],[21,,25,29]])}));function t(){return e.apply(this,arguments)}return t}(),"(read [string])\n\n This function, if used with a string, will parse it and\n return the LIPS code, if there is any. If called with a\n port, it will parse the next item from the port. If called\n without an input, it will read a string from standard input\n (using the browser's prompt or a user defined input method)\n and calls itself with that string. This function can be used\n together with `eval` to evaluate code from a string."),pprint:y("pprint",function e(t){if(t instanceof M){t=new Gs.Formatter(t.toString(true))["break"]().format();qo.get("display").call(qo,t)}else{qo.get("write").call(qo,t)}qo.get("newline").call(qo)},"(pprint expression)\n\n This function will pretty print its input to stdout. If it is called\n with a non-list, it will just call the print function on its\n input."),print:y("print",function e(){var t=qo.get("display");var r=qo.get("newline");for(var n=arguments.length,i=new Array(n),u=0;u1?r-1:0),i=1;in.length){throw new Error("Not enough arguments")}var o=0;var s=qo.get("repr");t=t.replace(u,function(e){var t=e[1];if(t==="~"){return"~"}else if(t==="%"){return"\n"}else{var r=n[o++];if(t==="a"){return s(r)}else{return s(r,true)}}});a=t.match(/~([\S])/);if(a){throw new Error("format: Unrecognized escape sequence ".concat(a[1]))}return t},"(format string n1 n2 ...)\n\n This function accepts a string template and replaces any\n escape sequences in its inputs:\n\n * ~a value as if printed with `display`\n * ~s value as if printed with `write`\n * ~% newline character\n * ~~ literal tilde '~'\n\n If there are missing inputs or other escape characters it\n will error."),display:y("display",function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(r===null){r=Ro(this,"stdout")}else{h("display",r,"output-port")}var n=qo.get("repr")(t);r.write.call(qo,n)},"(display string [port])\n\n This function outputs the string to the standard output or\n the port if given. No newline."),"display-error":y("display-error",function e(){var t=Ro(this,"stderr");var r=qo.get("repr");for(var n=arguments.length,i=new Array(n),u=0;u1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;if(r){r=this}var i=this;var u;var a=_s(e.cdr.car,{env:this,dynamic_scope:r,error:n});a=as(a);function o(t,r,n){if(ra(t)){return t.then(function(e){return o(t,e,n)})}if(ra(r)){return r.then(function(e){return o(t,e,n)})}if(ra(n)){return n.then(function(e){return o(t,r,e)})}i.get("set-obj!").call(i,t,r,n);return n}if(e.car instanceof M&&L.is(e.car.car,".")){var f=e.car.cdr.car;var l=e.car.cdr.cdr.car;var h=_s(f,{env:this,dynamic_scope:r,error:n});var p=_s(l,{env:this,dynamic_scope:r,error:n});return o(h,p,a)}if(!(e.car instanceof L)){throw new Error("set! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var s=e.car.valueOf();u=this.ref(e.car.__name__);return Yi(a,function(e){if(!u){var t=s.split(".");if(t.length>1){var r=t.pop();var n=t.join(".");var i=c.get(n,{throwError:false});if(i){o(i,r,e);return}}throw new Error("Unbound variable `"+s+"'")}u.set(s,e)})}),"(set! name value)\n\n Macro that can be used to set the value of the variable or slot (mutate it).\n set! searches the scope chain until it finds first non empty slot and sets it."),"unset!":y(new Vu("set!",function(e){if(!(e.car instanceof L)){throw new Error("unset! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var t=e.car;var r=this.ref(t);if(r){delete r.__env__[t.__name__]}}),"(unset! name)\n\n Function to delete the specified name from environment.\n Trying to access the name afterwards will error."),"set-car!":y("set-car!",function(e,t){h("set-car!",e,"pair");e.car=t},"(set-car! obj value)\n\n Function that sets the car (first item) of the list/pair to specified value.\n The old value is lost."),"set-cdr!":y("set-cdr!",function(e,t){h("set-cdr!",e,"pair");e.cdr=t},"(set-cdr! obj value)\n\n Function that sets the cdr (tail) of the list/pair to specified value.\n It will destroy the list. The old tail is lost."),"empty?":y("empty?",function(e){return typeof e==="undefined"||e===U},"(empty? object)\n\n Function that returns #t if value is nil (an empty list) or undefined."),gensym:y("gensym",Fi,"(gensym)\n\n Generates a unique symbol that is not bound anywhere,\n to use with macros as meta name."),load:y("load",function e(o,t){h("load",o,"string");var s=this;if(s.__name__==="__frame__"){s=s.__parent__}if(!(t instanceof So)){if(s===qo){t=s}else{t=this.get("**interaction-environment**")}}var c="**module-path**";var f=qo.get(c,{throwError:false});o=o.valueOf();if(!o.match(/.[^.]+$/)){o+=".scm"}var r=o.match(/\.xcb$/);function l(e){if(r){e=Vs(e)}else{if(us(e)==="buffer"){e=e.toString()}e=e.replace(/^#!.*/,"");if(e.match(/^\{/)){e=Rs(e)}}return vs(e,t)}function n(e){return gn.fetch(e).then(function(e){return r?e.arrayBuffer():e.text()}).then(function(e){if(r){e=new Uint8Array(e)}return e})}if(Go()){return new Promise(function(){var r=B(z.mark(function e(r,n){var i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:i=An("path");if(!f){t.next=6;break}f=f.valueOf();o=i.join(f,o);t.next=12;break;case 6:u=s.get("command-line",{throwError:false});if(!u){t.next=11;break}t.next=10;return u();case 10:a=t.sent;case 11:if(a&&a!==U){process.cwd();o=i.join(i.dirname(a.car.valueOf()),o)}case 12:qo.set(c,i.dirname(o));An("fs").readFile(o,function(e,t){if(e){n(e);qo.set(c,f)}else{try{l(t).then(function(){r();qo.set(c,f)})["catch"](n)}catch(e){n(e)}}});case 14:case"end":return t.stop()}}},e)}));return function(e,t){return r.apply(this,arguments)}}())}if(f){f=f.valueOf();o=f+"/"+o.replace(/^\.?\/?/,"")}return n(o).then(function(e){qo.set(c,o.replace(/\/[^/]*$/,""));return l(e)}).then(function(){})["finally"](function(){qo.set(c,f)})},"(load filename)\n (load filename environment)\n\n Fetches the file (from disk or network) and evaluates its content as LIPS code.\n If the second argument is provided and it's an environment the evaluation\n will happen in that environment."),do:y(new Vu("do",function(){var r=B(z.mark(function e(r,h){var n,i,u,o,s,a,c,f,l,p,_;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=h.dynamic_scope,i=h.error;u=this;if(n){n=u}o=u.inherit("do");s=r.car;a=r.cdr.car;c=r.cdr.cdr;if(c!==U){c=new M(L("begin"),c)}f={env:u,dynamic_scope:n,error:i};l=s;case 10:if(!(l!==U)){t.next=21;break}p=l.car;t.t0=o;t.t1=p.car;t.next=16;return _s(p.cdr.car,f);case 16:t.t2=t.sent;t.t0.set.call(t.t0,t.t1,t.t2);l=l.cdr;t.next=10;break;case 21:f={env:o,dynamic_scope:n,error:i};_=z.mark(function e(){var r,n,i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(c!==U)){t.next=3;break}t.next=3;return Gs.evaluate(c,f);case 3:r=s;n={};case 5:if(!(r!==U)){t.next=15;break}i=r.car;if(!(i.cdr.cdr!==U)){t.next=12;break}t.next=10;return _s(i.cdr.cdr.car,f);case 10:u=t.sent;n[i.car.valueOf()]=u;case 12:r=r.cdr;t.next=5;break;case 15:a=Object.getOwnPropertySymbols(n);Object.keys(n).concat(a).forEach(function(e){o.set(e,n[e])});case 17:case"end":return t.stop()}}},e)});case 23:t.next=25;return _s(a.car,f);case 25:t.t3=t.sent;if(!(t.t3===false)){t.next=30;break}return t.delegateYield(_(),"t4",28);case 28:t.next=23;break;case 30:if(!(a.cdr!==U)){t.next=34;break}t.next=33;return _s(a.cdr.car,f);case 33:return t.abrupt("return",t.sent);case 34:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()),"(do (( )) (test return) . body)\n\n Iteration macro that evaluates the expression body in scope of the variables.\n On each loop it changes the variables according to the expression and runs\n test to check if the loop should continue. If test is a single value, the macro\n will return undefined. If the test is a pair of expressions the macro will\n evaluate and return the second expression after the loop exits."),if:y(new Vu("if",function(r,e){var n=e.dynamic_scope,i=e.error;if(n){n=this}var u=this;var t=function e(t){if(t===false){return _s(r.cdr.cdr.car,{env:u,dynamic_scope:n,error:i})}else{return _s(r.cdr.car,{env:u,dynamic_scope:n,error:i})}};if(r===U){throw new Error("too few expressions for `if`")}var a=_s(r.car,{env:u,dynamic_scope:n,error:i});return Yi(a,t)}),"(if cond true-expr false-expr)\n\n Macro that evaluates cond expression and if the value is true, it\n evaluates and returns true-expression, if not it evaluates and returns\n false-expression."),"let-env":new Vu("let-env",function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=e.dynamic_scope,n=e.error;h("let-env",t,"pair");var i=_s(t.car,{env:this,dynamic_scope:r,error:n});return Yi(i,function(e){h("let-env",e,"environment");return _s(M(L("begin"),t.cdr),{env:e,dynamic_scope:r,error:n})})},"(let-env env . body)\n\n Special macro that evaluates body in context of given environment\n object."),letrec:y(ja(Symbol["for"]("letrec")),"(letrec ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to\n names and then evaluates the body in context of that environment.\n Values are evaluated sequentially and the next value can access the\n previous values/names."),"letrec*":y(ja(Symbol["for"]("letrec")),"(letrec* ((a value-a) (b value-b) ...) . body)\n\n Same as letrec but the order of execution of the binding is guaranteed,\n so you can use recursive code as well as referencing the previous binding.\n\n In LIPS both letrec and letrec* behave the same."),"let*":y(ja(Symbol["for"]("let*")),"(let* ((a value-a) (b value-b) ...) . body)\n\n Macro similar to `let`, but the subsequent bindings after the first\n are evaluated in the environment including the previous let variables,\n so you can define one variable, and use it in the next's definition."),let:y(ja(Symbol["for"]("let")),"(let ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to names,\n and then evaluates the body in context of that environment. Values are evaluated\n sequentially but you can't access previous values/names when the next are\n evaluated. You can only get them in the body of the let expression. (If you want\n to define multiple variables and use them in each other's definitions, use\n `let*`.)"),"begin*":y(Ia("begin*",function(e){return e.pop()}),"(begin* . body)\n\n This macro is a parallel version of begin. It evaluates each expression\n in the body and if it's a promise it will await it in parallel and return\n the value of the last expression (i.e. it uses Promise.all())."),begin:y(new Vu("begin",function(e,t){var n=Object.assign({},t);var i=qo.get("list->array")(e);if(n.dynamic_scope){n.dynamic_scope=this}n.env=this;var u;return function t(){if(i.length){var e=i.shift();var r=_s(e,n);return Yi(r,function(e){u=e;return t()})}else{return u}}()}),"(begin . args)\n\n Macro that runs a list of expressions in order and returns the value\n of the last one. It can be used in places where you can only have a\n single expression, like (if)."),ignore:new Vu("ignore",function(e,t){var r=t.dynamic_scope,n=t.error;var i={env:this,error:n};if(r){i.dynamic_scope=this}_s(new M(new L("begin"),e),i)},"(ignore . body)\n\n Macro that will evaluate the expression and swallow any promises that may\n be created. It will discard any value that may be returned by the last body\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined."),"call/cc":y(Vu.defmacro("call/cc",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=vn({env:this},t);return Yi(_s(e.car,r),function(e){if(Xu(e)){return e(new hs(null))}})}),"(call/cc proc)\n\n Call-with-current-continuation.\n\n NOT SUPPORTED BY LIPS RIGHT NOW"),define:y(Vu.defmacro("define",function(r,e){var n=this;if(r.car instanceof M&&r.car.car instanceof L){var t=new M(new L("define"),new M(r.car.car,new M(new M(new L("lambda"),new M(r.car.cdr,r.cdr)))));return t}else if(e.macro_expand){return}if(e.dynamic_scope){e.dynamic_scope=this}e.env=n;var i=r.cdr.car;var u;if(i instanceof M){i=_s(i,e);u=true}else if(i instanceof L){i=n.get(i)}h("define",r.car,"symbol");return Yi(i,function(e){if(n.__name__===Ku.__merge_env__){n=n.__parent__}if(u&&(Xu(e)&&Ca(e)||e instanceof Ku)){e.__name__=r.car.valueOf();if(e.__name__ instanceof $a){e.__name__=e.__name__.valueOf()}}var t;if(r.cdr.cdr instanceof M&&$a.isString(r.cdr.cdr.car)){t=r.cdr.cdr.car.valueOf()}n.set(r.car,e,t,true)})}),'(define name expression)\n (define name expression "doc string")\n (define (function-name . args) . body)\n\n Macro for defining values. It can be used to define variables,\n or functions. If the first argument is list it will create a function\n with name being first element of the list. This form expands to\n `(define function-name (lambda args body))`'),"set-obj!":y("set-obj!",function(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var i=_(e);if(Zu(e)||i!=="object"&&i!=="function"){var u=Qo("set-obj!",us(e),["object","function"]);throw new Error(u)}h("set-obj!",t,["string","symbol","number"]);e=sa(e);t=t.valueOf();if(arguments.length===2){delete e[t]}else if(Nu(e)&&Xu(r)){e[t]=sa(r);e[t][Da]=true}else if(Xu(r)||ts(r)||r===U){e[t]=r}else{e[t]=r&&!Nu(r)?r.valueOf():r}if(Du){var a=e[t];Object.defineProperty(e,t,vn(vn({},n),{},{value:a}))}},"(set-obj! obj key value)\n (set-obj! obj key value props)\n\n Function set a property of a JavaScript object. props should be a vector of pairs,\n passed to Object.defineProperty."),"null-environment":y("null-environment",function(){return qo.inherit("null")},"(null-environment)\n\n Returns a clean environment with only the standard library."),values:y("values",function e(){for(var t=arguments.length,r=new Array(t),n=0;n1&&arguments[1]!==undefined?arguments[1]:{},h=e.dynamic_scope,p=e.error;var _=this;var d;if(l.cdr instanceof M&&$a.isString(l.cdr.car)&&l.cdr.cdr!==U){d=l.cdr.car.valueOf()}function v(){var e;if(h){if(!(this instanceof So)){e=_}else{e=this}}else{e=_}e=e.inherit("lambda");var t=l.car;var r=0;var n;if(typeof this!=="undefined"&&!(this instanceof So)){if(this&&!this.__instance__){Object.defineProperty(this,"__instance__",{enumerable:false,get:function e(){return true},set:function e(){},configurable:false})}e.set("this",this)}for(var i=arguments.length,u=new Array(i),a=0;a>> "+c.toString());if(c){o=c}var d=r.merge(t,Ku.__merge_env__);if(l){return{expr:o,scope:d}}var v=_s(o,vn(vn({},p),{},{env:d}));return Wu(v,_)}i=i.cdr}}catch(e){e.message+=" in macro: ".concat(y.toString(true));throw e}throw new Error("Invalid Syntax ".concat(e.toString(true)))},b);r.__code__=y;return r},"(syntax-rules () (pattern expression) ...)\n\n Base of hygienic macros, it will return a new syntax expander\n that works like Lisp macros."),quote:y(new Vu("quote",function(e){return Io(e.car)}),"(quote expression) or 'expression\n\n Macro that returns a single LIPS expression as data (it won't evaluate the\n argument). It will return a list if put in front of LIPS code.\n And if put in front of a symbol it will return the symbol itself, not the value\n bound to that name."),"unquote-splicing":y("unquote-splicing",function(){throw new Error("You can't call `unquote-splicing` outside of quasiquote")},"(unquote-splicing code) or ,@code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n splices the list into quasiquote's result. If it is not the last element of the\n expression, the computed value must be a pair."),unquote:y("unquote",function(){throw new Error("You can't call `unquote` outside of quasiquote")},"(unquote code) or ,code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n substitutes the value into quasiquote's result."),quasiquote:Vu.defmacro("quasiquote",function(e,t){var o=t.dynamic_scope,s=t.error;var c=this;if(o){o=c}function a(e){return e instanceof M||wu(e)||Array.isArray(e)}function h(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:a;if(e instanceof M){var n=e.car;var i=e.cdr;if(r(n)){n=t(n)}if(r(i)){i=t(i)}if(ra(n)||ra(i)){return Ci([n,i]).then(function(e){var t=j(e,2),r=t[0],n=t[1];return new M(r,n)})}else{return new M(n,i)}}return e}function u(e,t){if(e instanceof M){if(t!==U){e.append(t)}}else{e=new M(e,t)}return e}function r(e){return!!e.filter(function(e){return e instanceof M&&L.is(e.car,/^(unquote|unquote-splicing)$/)}).length}function p(e,n,i){return e.reduce(function(e,t){if(!(t instanceof M)){e.push(t);return e}if(L.is(t.car,"unquote-splicing")){var r;if(n+11){var t="You can't splice multiple atoms inside list";throw new Error(t)}if(!(i.cdr instanceof M&&r[0]===U)){return r[0]}}r=r.map(function(e){if(d.has(e)){return e.clone()}else{d.add(e);return e}});var n=l(i.cdr,0,1);if(n===U&&r[0]===U){return undefined}return Yi(n,function(e){if(r[0]===U){return e}if(r.length===1){return u(r[0],e)}var t=r.reduce(function(e,t){return u(e,t)});return u(t,e)})})}(i.car.cdr)}var d=new Set;function l(e,t,r){if(e instanceof M){if(e.car instanceof M){if(L.is(e.car.car,"unquote-splicing")){return f(e,t+1,r)}if(L.is(e.car.car,"unquote")){if(t+2===r&&e.car.cdr instanceof M&&e.car.cdr.car instanceof M&&L.is(e.car.cdr.car.car,"unquote-splicing")){var n=e.car.cdr;return new M(new M(new L("unquote"),f(n,t+2,r)),U)}else if(e.car.cdr instanceof M&&e.car.cdr.cdr!==U){if(e.car.cdr.car instanceof M){var i=[];return function t(r){if(r===U){return M.fromArray(i)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){i.push(e);return t(r.cdr)})}(e.car.cdr)}else{return e.car.cdr}}}}if(L.is(e.car,"quasiquote")){var u=l(e.cdr,t,r+1);return new M(e.car,u)}if(L.is(e.car,"quote")){return new M(e.car,l(e.cdr,t,r))}if(L.is(e.car,"unquote")){t++;if(tr){throw new Error("You can't call `unquote` outside "+"of quasiquote")}if(e.cdr instanceof M){if(e.cdr.cdr!==U){if(e.cdr.car instanceof M){var a=[];return function t(r){if(r===U){return M.fromArray(a)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){a.push(e);return t(r.cdr)})}(e.cdr)}else{return e.cdr}}else{return _s(e.cdr.car,{env:c,dynamic_scope:o,error:s})}}else{return e.cdr}}return h(e,function(e){return l(e,t,r)})}else if(wu(e)){return _(e,t,r)}else if(e instanceof Array){return p(e,t,r)}return e}function n(e){if(e instanceof M){delete e[ya];if(!e.haveCycles("car")){n(e.car)}if(!e.haveCycles("cdr")){n(e.cdr)}}}if(wu(e.car)&&!r(Object.values(e.car))){return Io(e.car)}if(Array.isArray(e.car)&&!r(e.car)){return Io(e.car)}if(e.car instanceof M&&!e.car.find("unquote")&&!e.car.find("unquote-splicing")&&!e.car.find("quasiquote")){return Io(e.car)}var i=l(e.car,0,1);return Yi(i,function(e){n(e);return Io(e)})},"(quasiquote list)\n\n Similar macro to `quote` but inside it you can use special expressions (unquote\n x) abbreviated to ,x that will evaluate x and insert its value verbatim or\n (unquote-splicing x) abbreviated to ,@x that will evaluate x and splice the value\n into the result. Best used with macros but it can be used outside."),clone:y("clone",function e(t){h("clone",t,"pair");return t.clone()},"(clone list)\n\n Function that returns a clone of the list, that does not share any pairs with the\n original, so the clone can be safely mutated without affecting the original."),append:y("append",function e(){var t;for(var r=arguments.length,n=new Array(r),i=0;iarray")(t).reverse();return qo.get("array->list")(r)}else if(!(t instanceof Array)){throw new Error(Qo("reverse",us(t),"array or pair"))}else{return t.reverse()}},"(reverse list)\n\n Function that reverses the list or array. If value is not a list\n or array it will error."),nth:y("nth",function e(t,r){h("nth",t,"number");h("nth",r,["array","pair"]);if(r instanceof M){var n=r;var i=0;while(iarray")(r).join(t)},"(join separator list)\n\n Function that returns a string by joining elements of the list using separator."),split:y("split",function e(t,r){h("split",t,["regex","string"]);h("split",r,"string");return qo.get("array->list")(r.split(t))},"(split separator string)\n\n Function that creates a list by splitting string by separator which can\n be a string or regular expression."),replace:y("replace",function e(t,r,n){h("replace",t,["regex","string"]);h("replace",r,["string","function"]);h("replace",n,"string");return n.replace(t,r)},"(replace pattern replacement string)\n\n Function that changes pattern to replacement inside string. Pattern can be a\n string or regex and replacement can be function or string. See Javascript\n String.replace()."),match:y("match",function e(t,r){h("match",t,["regex","string"]);h("match",r,"string");var n=r.match(t);return n?qo.get("array->list")(n):false},"(match pattern string)\n\n Function that returns a match object from JavaScript as a list or #f if\n no match."),search:y("search",function e(t,r){h("search",t,["regex","string"]);h("search",r,"string");return r.search(t)},"(search pattern string)\n\n Function that returns the first found index of the pattern inside a string."),repr:y("repr",function e(t,r){return Pu(t,r)},"(repr obj)\n\n Function that returns a LIPS code representation of the object as a string."),"escape-regex":y("escape-regex",function(e){h("escape-regex",e,"string");return _i(e.valueOf())},"(escape-regex string)\n\n Function that returns a new string where all special operators used in regex,\n are escaped with backslashes so they can be used in the RegExp constructor\n to match a literal string."),env:y("env",function e(e){e=e||this;var t=Object.keys(e.__env__).map(L);var r;if(t.length){r=M.fromArray(t)}else{r=U}if(e.__parent__ instanceof So){return qo.get("env")(e.__parent__).append(r)}return r},"(env)\n (env obj)\n\n Function that returns a list of names (functions, macros and variables)\n that are bound in the current environment or one of its parents."),new:y("new",function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2&&arguments[2]!==undefined?arguments[2]:Bi.LITERAL;h("set-special!",e,"string",1);h("set-special!",t,"symbol",2);Bi.append(e.valueOf(),t,r)},'(set-special! symbol name [type])\n\n Add a special symbol to the list of transforming operators by the parser.\n e.g.: `(add-special! "#" \'x)` will allow to use `#(1 2 3)` and it will be\n transformed into (x (1 2 3)) so you can write x macro that will process\n the list. 3rd argument is optional, and it can be one of two values:\n lips.specials.LITERAL, which is the default behavior, or\n lips.specials.SPLICE which causes the value to be unpacked into the expression.\n This can be used for e.g. to make `#(1 2 3)` into (x 1 2 3) that is needed\n by # that defines vectors.'),get:No,".":No,unbind:y(sa,"(unbind fn)\n\n Function that removes the weak 'this' binding from a function so you\n can get properties from the actual function object."),type:y(us,"(type object)\n\n Function that returns the type of an object as string."),debugger:y("debugger",function(){debugger},'(debugger)\n\n Function that triggers the JavaScript debugger (e.g. the browser devtools)\n using the "debugger;" statement. If a debugger is not running this\n function does nothing.'),in:y("in",function(e,t){if(e instanceof L||e instanceof $a||e instanceof C){e=e.valueOf()}return e in aa(t)},'(in key value)\n\n Function that uses the Javascript "in" operator to check if key is\n a valid property in the value.'),instanceof:y("instanceof",function(e,t){return t instanceof sa(e)},"(instanceof type obj)\n\n Predicate that tests if the obj is an instance of type."),"prototype?":y("prototype?",Nu,"(prototype? obj)\n\n Predicate that tests if value is a valid JavaScript prototype,\n i.e. calling (new) with it will not throw ' is not a constructor'."),"macro?":y("macro?",function(e){return e instanceof Vu},"(macro? expression)\n\n Predicate that tests if value is a macro."),"function?":y("function?",Xu,"(function? expression)\n\n Predicate that tests if value is a callable function."),"real?":y("real?",function(e){if(us(e)!=="number"){return false}if(e instanceof C){return e.isFloat()}return C.isFloat(e)},"(real? number)\n\n Predicate that tests if value is a real number (not complex)."),"number?":y("number?",function(e){return Number.isNaN(e)||C.isNumber(e)},"(number? expression)\n\n Predicate that tests if value is a number or NaN value."),"string?":y("string?",function(e){return $a.isString(e)},"(string? expression)\n\n Predicate that tests if value is a string."),"pair?":y("pair?",function(e){return e instanceof M},"(pair? expression)\n\n Predicate that tests if value is a pair or list structure."),"regex?":y("regex?",function(e){return e instanceof RegExp},"(regex? expression)\n\n Predicate that tests if value is a regular expression."),"null?":y("null?",function(e){return Zu(e)},"(null? expression)\n\n Predicate that tests if value is null-ish (i.e. undefined, nil, or\n Javascript null)."),"boolean?":y("boolean?",function(e){return typeof e==="boolean"},"(boolean? expression)\n\n Predicate that tests if value is a boolean (#t or #f)."),"symbol?":y("symbol?",function(e){return e instanceof L},"(symbol? expression)\n\n Predicate that tests if value is a LIPS symbol."),"array?":y("array?",function(e){return e instanceof Array},"(array? expression)\n\n Predicate that tests if value is an array."),"object?":y("object?",function(e){return e!==U&&e!==null&&!(e instanceof za)&&!(e instanceof RegExp)&&!(e instanceof $a)&&!(e instanceof M)&&!(e instanceof C)&&_(e)==="object"&&!(e instanceof Array)},"(object? expression)\n\n Predicate that tests if value is an plain object (not another LIPS type)."),flatten:y("flatten",function e(t){h("flatten",t,"pair");return t.flatten()},"(flatten list)\n\n Returns a shallow list from tree structure (pairs)."),"array->list":y("array->list",function(e){h("array->list",e,"array");return M.fromArray(e)},"(array->list array)\n\n Function that converts a JavaScript array to a LIPS cons list."),"tree->array":y("tree->array",gu("tree->array",true),"(tree->array list)\n\n Function that converts a LIPS cons tree structure into a JavaScript array."),"list->array":y("list->array",gu("list->array"),"(list->array list)\n\n Function that converts a LIPS list into a JavaScript array."),apply:y("apply",function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;iarray").call(this,u));return t.apply(this,fs(t,n))},"(apply fn list)\n\n Function that calls fn with the list of arguments."),length:y("length",function e(t){if(!t||t===U){return 0}if(t instanceof M){return t.length()}if("length"in t){return t.length}},'(length expression)\n\n Function that returns the length of the object. The object can be a LIPS\n list or any object that has a "length" property. Returns undefined if the\n length could not be found.'),"string->number":y("string->number",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;h("string->number",e,"string",1);h("string->number",t,"number",2);e=e.valueOf();t=t.valueOf();if(e.match(Wn)||e.match(Kn)){return ti(e,t)}else if(e.match(Qn)||e.match(Jn)){return ii(e,t)}else{var r=t===10&&!e.match(/e/i)||t===16;if(e.match(Hn)&&r||e.match(Gn)){return ri(e,t)}if(e.match(Rn)){return oi(e)}}return false},"(string->number number [radix])\n\n Function that parses a string into a number."),try:y(new Vu("try",function(t,e){var c=this;var f=e.dynamic_scope,l=e.error;return new Promise(function(i,n){var u,a;if(L.is(t.cdr.car.car,"catch")){u=t.cdr.car;if(t.cdr.cdr instanceof M&&L.is(t.cdr.cdr.car.car,"finally")){a=t.cdr.cdr.car}}else if(L.is(t.cdr.car.car,"finally")){a=t.cdr.car}if(!(a||u)){throw new Error("try: invalid syntax")}var o=i;if(a){o=function e(t,r){o=n;Yi(_s(new M(new L("begin"),a.cdr),s),function(){r(t)})}}var s={env:c,error:function e(t){var r=c.inherit("try");if(u){r.set(u.cdr.car.car,t);var n={env:r,error:l};if(f){n.dynamic_scope=c}Yi(_s(new M(new L("begin"),u.cdr.cdr),n),function(e){o(e,i)})}else{o(t,l)}}};if(f){s.dynamic_scope=c}var e=_s(t.car,s);if(ra(e)){e.then(function(e){o(e,i)})["catch"](s.error)}else{o(e,i)}})}),"(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro that executes expr and catches any exceptions thrown. If catch is provided\n it's executed when an error is thrown. If finally is provided it's always\n executed at the end."),raise:y("raise",function(e){throw e},"(raise obj)\n\n Throws the object verbatim (no wrapping an a new Error)."),throw:y("throw",function(e){throw new Error(e)},"(throw string)\n\n Throws a new exception."),find:y("find",function t(r,n){h("find",r,["regex","function"]);h("find",n,["pair","nil"]);if(Zu(n)){return U}var e=Gi("find",r);return Yi(e(n.car),function(e){if(e&&e!==U){return n.car}return t(r,n.cdr)})},"(find fn list)\n (find regex list)\n\n Higher-order function that finds the first value for which fn return true.\n If called with a regex it will create a matcher function."),"for-each":y("for-each",function(e){var t;h("for-each",e,"function");for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i1?t-1:0),u=1;u3?n-3:0),u=3;u3?i-3:0),a=3;aarray")(r);var u=[];var a=Gi("filter",t);return function t(r){function e(e){if(e&&e!==U){u.push(n)}return t(++r)}if(r===i.length){return M.fromArray(u)}var n=i[r];return Yi(a(n),e)}(0)},"(filter fn list)\n (filter regex list)\n\n Higher-order function that calls `fn` for each element of the list\n and return a new list for only those elements for which fn returns\n a truthy value. If called with a regex it will create a matcher function."),compose:y(Ra,"(compose . fns)\n\n Higher-order function that creates a new function that applies all functions\n from right to left and returns the last value. Reverse of pipe.\n e.g.:\n ((compose (curry + 2) (curry * 3)) 10) --\x3e (+ 2 (* 3 10)) --\x3e 32"),pipe:y(Na,"(pipe . fns)\n\n Higher-order function that creates a new function that applies all functions\n from left to right and returns the last value. Reverse of compose.\n e.g.:\n ((pipe (curry + 2) (curry * 3)) 10) --\x3e (* 3 (+ 2 10)) --\x3e 36"),curry:y(Ya,"(curry fn . args)\n\n Higher-order function that creates a curried version of the function.\n The result function will have partially applied arguments and it\n will keep returning one-argument functions until all arguments are provided,\n then it calls the original function with the accumulated arguments.\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))"),gcd:y("gcd",function e(){for(var t=arguments.length,r=new Array(t),n=0;no?u%=o:o%=u}u=Tu(s*r[a])/(u+o)}return C(u)},"(lcm n1 n2 ...)\n\n Function that returns the least common multiple of the arguments."),"odd?":y("odd?",Ua(function(e){return C(e).isOdd()}),"(odd? number)\n\n Checks if number is odd."),"even?":y("even?",Ua(function(e){return C(e).isEven()}),"(even? number)\n\n Checks if number is even."),"*":y("*",qa(function(e,t){return C(e).mul(t)},C(1)),"(* . numbers)\n\n Multiplies all numbers passed as arguments. If single value is passed\n it will return that value."),"+":y("+",qa(function(e,t){return C(e).add(t)},C(0)),"(+ . numbers)\n\n Sums all numbers passed as arguments. If single value is passed it will\n return that value."),"-":y("-",function(){for(var e=arguments.length,t=new Array(e),r=0;r":y(">",function(){for(var e=arguments.length,t=new Array(e),r=0;r",t,"number");return Lu(function(e,t){return C(e).cmp(t)===1},t)},"(> x1 x2 x3 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically decreasing, i.e. x1 > x2 and x2 > x3 and so on."),"<":y("<",function(){for(var e=arguments.length,t=new Array(e),r=0;r=":y(">=",function(){for(var e=arguments.length,t=new Array(e),r=0;r=",t,"number");return Lu(function(e,t){return[0,1].includes(C(e).cmp(t))},t)},"(>= x1 x2 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically nonincreasing, i.e. x1 >= x2 and x2 >= x3 and so on."),"eq?":y("eq?",Uu,"(eq? a b)\n\n Function that compares two values if they are identical."),or:y(new Vu("or",function(e,t){var i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return false}var s;return function t(){function e(e){s=e;if(s!==false){return s}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(or . expressions)\n\n Macro that executes the values one by one and returns the first that is\n a truthy value. If there are no expressions that evaluate to true it\n returns false."),and:y(new Vu("and",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return true}var s;return function t(){function e(e){s=e;if(s===false){return false}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(and . expressions)\n\n Macro that evaluates each expression in sequence and if any value returns false\n it will stop and return false. If each value returns true it will return the\n last value. If it's called without arguments it will return true."),"|":y("|",function(e,t){return C(e).or(t)},"(| a b)\n\n Function that calculates the bitwise or operation."),"&":y("&",function(e,t){return C(e).and(t)},"(& a b)\n\n Function that calculates the bitwise and operation."),"~":y("~",function(e){return C(e).neg()},"(~ number)\n\n Function that calculates the bitwise inverse (flip all the bits)."),">>":y(">>",function(e,t){return C(e).shr(t)},"(>> a b)\n\n Function that right shifts the value a by value b bits."),"<<":y("<<",function(e,t){return C(e).shl(t)},"(<< a b)\n\n Function that left shifts the value a by value b bits."),not:y("not",function e(t){if(Zu(t)){return true}return!t},"(not object)\n\n Function that returns the Boolean negation of its argument.")},undefined,"global");var Yo=qo.inherit("user-env");function Vo(e,t){e.constant("**internal-env**",t);e.doc("**internal-env**","**internal-env**\n\n Constant used to hide stdin, stdout and stderr so they don't interfere\n with variables with the same name. Constants are an internal type\n of variable that can't be redefined, defining a variable with the same name\n will throw an error.");qo.set("**interaction-environment**",e)}Vo(Yo,Lo);qo.doc("**interaction-environment**","**interaction-environment**\n\n Internal dynamic, global variable used to find interpreter environment.\n It's used so the read and write functions can locate **internal-env**\n that contains the references to stdin, stdout and stderr.");(function(){var e={ceil:"ceiling"};["floor","round","ceil"].forEach(function(t){var r=e[t]?e[t]:t;qo.set(r,y(r,function(e){h(r,e,"number");if(e instanceof C){return e[t]()}},"(".concat(r," number)\n\n Function that calculates the ").concat(r," of a number.")))})})();function zo(e){if(e.length===1){return e[0]}else{var t=[];var r=zo(e.slice(1));for(var n=0;n3&&arguments[3]!==undefined?arguments[3]:null;var i=e?" in expression `".concat(e,"`"):"";if(n!==null){i+=" (argument ".concat(n,")")}if(Xu(r)){return"Invalid type: got ".concat(t).concat(i)}if(r instanceof Array){if(r.length===1){var u=r[0].toLowerCase();r="a"+("aeiou".includes(u)?"n ":" ")+r[0]}else{var a=r[r.length-1];r=r.slice(0,-1).join(", ")+" or "+a}}return"Expecting ".concat(r,", got ").concat(t).concat(i)}function Zo(r,e,n){e.forEach(function(e,t){h(r,e,n,t+1)})}function Xo(e,t,r){h(e,t,r);if(t.__type__===Ao){throw new Error(Qo(e,"binary-port","textual-port"))}}function h(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;e=e.valueOf();var i=us(t).toLowerCase();if(Xu(r)){if(!r(t)){throw new Error(Qo(e,i,r,n))}return}var u=false;if(r instanceof M){r=r.to_array()}if(r instanceof Array){r=r.map(function(e){return e.valueOf()})}if(r instanceof Array){r=r.map(function(e){return e.valueOf().toLowerCase()});if(r.includes(i)){u=true}}else{r=r.valueOf().toLowerCase()}if(!u&&i!==r){throw new Error(Qo(e,i,r,n))}}function es(e){var t=_(e);return["string","function"].includes(t)||_(e)==="symbol"||e instanceof ki||e instanceof L||e instanceof C||e instanceof $a||e instanceof RegExp}function ts(e){return e instanceof C||e instanceof $a||e instanceof za}function rs(e,t){if(e===null){return false}return _(e)==="object"&&t in Object.getOwnPropertySymbols(e)}function ns(e,t){if(rs(e,t)||rs(e.__proto__,t)){return Xu(e[t])}}function is(r){var n=new WeakMap;return function(e){var t=n.get(e);if(!t){t=r(e)}return t}}us=is(us);function us(e){var t=wn.get(e);if(t){return t}if(_(e)==="object"){for(var r=0,n=Object.entries(bn);r2&&arguments[2]!==undefined?arguments[2]:{},u=t.env,a=t.dynamic_scope,r=t.error,o=r===void 0?function(){}:r;e=os(e,{env:u,dynamic_scope:a,error:o});return Yi(e,function(e){if(Sa(i)){i=sa(i)}e=fs(i,e);var t=e.slice();var r=(a||u).newFrame(i,t);var n=as(i.apply(r,e));return Yi(n,function(e){if(e instanceof M){e.markCycles();return Io(e)}return ia(e)},o)})}var hs=function(){function t(e){D(this,t);this.__value__=e}A(t,[{key:"invoke",value:function e(){if(this.__value__===null){throw new Error("Continuations are not implemented yet")}}},{key:"toString",value:function e(){return"#"}}]);return t}();var ps=function e(){};function _s(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=e.env,n=e.dynamic_scope,c=e.error,i=c===void 0?ps:c;try{if(n===true){r=n=r||qo}else if(r===true){r=n=qo}else{r=r||qo}var u={env:r,dynamic_scope:n,error:i};var a;if(Zu(t)){return t}if(t instanceof L){return r.get(t)}if(!(t instanceof M)){return t}var o=t.car;var f=t.cdr;if(o instanceof M){a=as(_s(o,u));if(ra(a)){return a.then(function(e){return _s(new M(e,t.cdr),u)})}else if(!ta(a)){throw new Error(us(a)+" "+r.get("repr")(a)+" is not callable while evaluating "+t.toString())}}if(o instanceof L){a=r.get(o)}else if(Xu(o)){a=o}var s;if(a instanceof Ku){s=ss(a,t,u)}else if(a instanceof Vu){s=cs(a,f,u)}else if(Xu(a)){s=ls(a,f,u)}else if(ea(a)){s=a.invoke()}else if(t instanceof M){a=o&&o.toString();throw new Error("".concat(us(o)," ").concat(a," is not a function"))}else{return t}var l=r.get(Symbol["for"]("__promise__"),{throwError:false});if(l===true&&ra(s)){s=s.then(function(e){if(e instanceof M&&!a[ya]){return _s(e,u)}return e});return new ki(s)}return s}catch(e){i&&i.call(r,e,t)}}var ds=ys(function(e){return e});var vs=ys(function(e,t){return t});function ys(_){return function(){var n=B(z.mark(function e(r,n,i){var u,a,o,s,h,c,p,f,l;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(i===true){n=i=n||Yo}else if(n===true){n=i=Yo}else{n=n||Yo}u=[];a=Array.isArray(r)?r:Mi(r);o=false;s=false;t.prev=5;c=yn(a);case 7:t.next=9;return c.next();case 9:if(!(o=!(p=t.sent).done)){t.next=27;break}f=p.value;l=_s(f,{env:n,dynamic_scope:i,error:function e(t,r){if(t&&t.message){if(t.message.match(/^Error:/)){var n=/^(Error:)\s*([^:]+:\s*)/;t.message=t.message.replace(n,"$1 $2")}if(r){if(!(t.__code__ instanceof Array)){t.__code__=[]}t.__code__.push(r.toString(true))}}throw t}});if(ra(l)){t.next=16;break}u.push(_(f,l));t.next=24;break;case 16:t.t0=u;t.t1=_;t.t2=f;t.next=21;return l;case 21:t.t3=t.sent;t.t4=(0,t.t1)(t.t2,t.t3);t.t0.push.call(t.t0,t.t4);case 24:o=false;t.next=7;break;case 27:t.next=33;break;case 29:t.prev=29;t.t5=t["catch"](5);s=true;h=t.t5;case 33:t.prev=33;t.prev=34;if(!(o&&c["return"]!=null)){t.next=38;break}t.next=38;return c["return"]();case 38:t.prev=38;if(!s){t.next=41;break}throw h;case 41:return t.finish(38);case 42:return t.finish(33);case 43:return t.abrupt("return",u);case 44:case"end":return t.stop()}}},e,null,[[5,29,33,43],[34,,38,42]])}));function e(e,t,r){return n.apply(this,arguments)}return e}()}function ms(e){var t={"[":"]","(":")"};var r;if(typeof e==="string"){r=wi(e)}else{r=e.map(function(e){return e&&e.token?e.token:e})}var n=Object.keys(t);var i=Object.values(t).concat(n);r=r.filter(function(e){return i.includes(e)});var u=new di;var a=hn(r),o;try{for(a.s();!(o=a.n()).done;){var s=o.value;if(n.includes(s)){u.push(s)}else if(!u.is_empty()){var f=u.top();var c=t[f];if(s===c){u.pop()}else{throw new Error("Syntax error: missing closing ".concat(c))}}else{throw new Error("Syntax error: not matched closing ".concat(s))}}}catch(e){a.e(e)}finally{a.f()}return u.is_empty()}function gs(e){var t="("+e.toString()+")()";var r=window.URL||window.webkitURL;var n;try{n=new Blob([t],{type:"application/javascript"})}catch(e){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;n=new i;n.append(t);n=n.getBlob()}return new gn.Worker(r.createObjectURL(n))}function bs(){return Gs.version.match(/^(\{\{VER\}\}|DEV)$/)}function ws(){if(Go()){return}var e;if(document.currentScript){e=document.currentScript}else{var t=document.querySelectorAll("script");if(!t.length){return}e=t[t.length-1]}var r=e.getAttribute("src");return r}var Ds=ws();function Es(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";var t="dist/std.xcb";if(e===""){if(Ds){e=Ds.replace(/[^/]*$/,"std.xcb")}else if(bs()){e="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/".concat(t)}else{e="https://cdn.jsdelivr.net/npm/@jcubic/lips@".concat(Gs.version,"/").concat(t)}}var r=qo.get("load");return r.call(Yo,e,qo)}function As(e){this.url=e;var a=this.worker=gs(function(){var a;var o;self.addEventListener("message",function(e){var r=e.data;var t=r.id;if(r.type!=="RPC"||t===null){return}function n(e){self.postMessage({id:t,type:"RPC",result:e})}function i(e){self.postMessage({id:t,type:"RPC",error:e})}if(r.method==="eval"){if(!o){i("Worker RPC: LIPS not initialized, call init first");return}o.then(function(){var e=r.params[0];var t=r.params[1];a.exec(e,t).then(function(e){e=e.map(function(e){return e&&e.valueOf()});n(e)})["catch"](function(e){i(e)})})}else if(r.method==="init"){var u=r.params[0];if(typeof u!=="string"){i("Worker RPC: url is not a string")}else{importScripts("".concat(u,"/dist/lips.min.js"));a=new Gs.Interpreter("worker");o=Es(u);o.then(function(){n(true)})}}})});this.rpc=function(){var n=0;return function e(t,r){var u=++n;return new Promise(function(n,i){a.addEventListener("message",function e(t){var r=t.data;if(r&&r.type==="RPC"&&r.id===u){if(r.error){i(r.error)}else{n(r.result)}a.removeEventListener("message",e)}});a.postMessage({type:"RPC",method:t,id:u,params:r})})}}();this.rpc("init",[e])["catch"](function(e){console.error(e)});this.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return this.rpc("eval",[e,t])}}var xs={pair:function e(t){var r=j(t,2),n=r[0],i=r[1];return M(n,i)},number:function e(t){if($a.isString(t)){return C([t,10])}return C(t)},regex:function e(t){var r=j(t,2),n=r[0],i=r[1];return new RegExp(n,i)},nil:function e(){return U},symbol:function e(t){if($a.isString(t)){return L(t)}else if(Array.isArray(t)){return L(Symbol["for"](t[0]))}},string:$a,character:za};var Fs=Object.keys(xs);var ks={};for(var Cs=0,Os=Object.entries(Fs);Cs1){var n=t.reduce(function(e,t){return e+t.length},0);var i=new Uint8Array(n);var u=0;t.forEach(function(e){i.set(e,u);u+=e.length});return i}else if(t.length){return t[0]}}function Us(){var e=1;var t=new TextEncoder("utf-8");return t.encode("LIPS".concat(e.toString().padStart(3," ")))}var Ms=7;function qs(e){var t=new TextDecoder("utf-8");var r=t.decode(e.slice(0,Ms));var n=r.substring(0,4);if(n==="LIPS"){var i=r.match(/^(....).*([0-9]+)$/);if(i){return{type:i[1],version:Number(i[2])}}}return{type:"unknown"}}function Ys(e){var t=Us();var r=Ts.encode(e);return Ls(t,un(r,{magic:false}))}function Vs(e){var t=qs(e),r=t.type,n=t.version;if(r==="LIPS"&&n===1){var i=an(e.slice(Ms),{magic:false});return Ts.decode(i)}else{throw new Error("Invalid file format ".concat(r))}}function zs(e){console.error(e.message||e);if(e.code){console.error(e.code.map(function(e,t){return"[".concat(t+1,"]: ").concat(e)}))}}function $s(){var a=["text/x-lips","text/x-scheme"];var o;function s(r){return new Promise(function(t){var e=r.getAttribute("src");if(e){return fetch(e).then(function(e){return e.text()}).then(vs).then(t)["catch"](function(e){zs(e);t()})}else{return vs(r.innerHTML).then(t)["catch"](function(e){zs(e);t()})}})}function e(){return new Promise(function(i){var u=Array.from(document.querySelectorAll("script"));return function e(){var t=u.shift();if(!t){i()}else{var r=t.getAttribute("type");if(a.includes(r)){var n=t.getAttribute("bootstrap");if(!o&&typeof n==="string"){return Es(n).then(function(){return s(t)}).then(e)}else{return s(t).then(e)}}else if(r&&r.match(/lips|lisp/)){console.warn("Expecting "+a.join(" or ")+" found "+r)}return e()}}()})}if(!window.document){return Promise.resolve()}else if(Js){var t=Js;var r=t.getAttribute("bootstrap");if(typeof r==="string"){return Es(r).then(function(){o=true;return e()})}}return e()}var Js=typeof window!=="undefined"&&window.document&&document.currentScript;if(typeof window!=="undefined"){Fn(window,$s)}var Ks=function(){var e=$a("Sat, 23 Dec 2023 13:55:55 +0000").valueOf();var t=e==="{{"+"DATE}}"?new Date:new Date(e);var r=function e(t){return t.toString().padStart(2,"0")};var n=t.getFullYear();var i=[n,r(t.getMonth()+1),r(t.getDate())].join("-");var u="\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter 1.0.0-beta.17.1 (".concat(i,") \nCopyright (c) 2018-").concat(n," Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specific function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/,"");return u}();$i(eu,"__class__","ahead");$i(M,"__class__","pair");$i(mu,"__class__","nil");$i(tu,"__class__","pattern");$i(Xi,"__class__","formatter");$i(Vu,"__class__","macro");$i(Ku,"__class__","syntax");$i(So,"__class__","environment");$i(ho,"__class__","input-port");$i(po,"__class__","output-port");$i(_o,"__class__","output-port");$i(vo,"__class__","output-string-port");$i(mo,"__class__","input-string-port");$i(wo,"__class__","input-file-port");$i(yo,"__class__","output-file-port");$i(Oo,"__class__","lips-error");[C,io,fo,uo,lo].forEach(function(e){$i(e,"__class__","number")});$i(za,"__class__","character");$i(L,"__class__","symbol");$i($a,"__class__","string");$i(ki,"__class__","promise");var Gs={version:"1.0.0-beta.17.1",banner:Ks,date:"Sat, 23 Dec 2023 13:55:55 +0000",exec:vs,parse:Ra(Ji,Mi),tokenize:wi,evaluate:_s,compile:ds,serialize:Ns,unserialize:Rs,serialize_bin:Ys,unserialize_bin:Vs,bootstrap:Es,Environment:So,env:Yo,Worker:As,Interpreter:Co,balanced_parenthesis:ms,balancedParenthesis:ms,balanced:ms,Macro:Vu,Syntax:Ku,Pair:M,Values:jo,QuotedPromise:ki,Error:Oo,quote:Io,InputPort:ho,OutputPort:po,BufferedOutputPort:_o,InputFilePort:wo,OutputFilePort:yo,InputStringPort:mo,OutputStringPort:vo,InputByteVectorPort:go,OutputByteVectorPort:bo,InputBinaryFilePort:Do,OutputBinaryFilePort:Eo,Formatter:Xi,Parser:Li,Lexer:s,specials:Bi,repr:bu,nil:U,eof:Fo,LSymbol:L,LNumber:C,LFloat:uo,LComplex:io,LRational:fo,LBigInteger:lo,LCharacter:za,LString:$a,rationalize:so};qo.set("lips",Gs);var Hs={};var Ws=Object.freeze({__proto__:null,default:Hs});function Qs(e,t){var r=0;for(var n=e.length-1;n>=0;n--){var i=e[n];if(i==="."){e.splice(n,1)}else if(i===".."){e.splice(n,1);r++}else if(r){e.splice(n,1);r--}}if(t){for(;r--;r){e.unshift("..")}}return e}var Zs=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var Xs=function(e){return Zs.exec(e).slice(1)};function ec(){var e="",t=false;for(var r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:"/";if(typeof n!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!n){continue}e=n+"/"+e;t=n.charAt(0)==="/"}e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");return(t?"/":"")+e||"."}function tc(e){var t=rc(e),r=hc(e,-1)==="/";e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");if(!e&&!t){e="."}if(e&&r){e+="/"}return(t?"/":"")+e}function rc(e){return e.charAt(0)==="/"}function nc(){var e=Array.prototype.slice.call(arguments,0);return tc(lc(e,function(e,t){if(typeof e!=="string"){throw new TypeError("Arguments to path.join must be strings")}return e}).join("/"))}function ic(e,t){e=ec(e).substr(1);t=ec(t).substr(1);function r(e){var t=0;for(;t=0;r--){if(e[r]!=="")break}if(t>r)return[];return e.slice(t,r-t+1)}var n=r(e.split("/"));var i=r(t.split("/"));var u=Math.min(n.length,i.length);var a=u;for(var o=0;o +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; ----------------------------------------------------------------------------- @@ -1577,7 +1577,7 @@ ;; https://schemers.org/Documents/Standards/R5RS/HTML/ ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; ;; (+ 1 (call-with-current-continuation @@ -3084,7 +3084,7 @@ ;; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; @@ -3228,7 +3228,7 @@ ;; https://small.r7rs.org/attachment/r7rs.pdf ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; ----------------------------------------------------------------------------- diff --git a/examples/defstruct.scm b/examples/defstruct.scm index 5674dffc..ab4845f2 100644 --- a/examples/defstruct.scm +++ b/examples/defstruct.scm @@ -1,7 +1,7 @@ ;; -*- scheme -*- ;; LIPS macro to create structures ;; -;; Copyright (C) 2019 Jakub T. Jankiewicz +;; Copyright (c) 2019 Jakub T. Jankiewicz ;; Released under MIT license ;; ;; the macro defstruct generates a bunch of helper functions diff --git a/examples/pattern_matching.scm b/examples/pattern_matching.scm index aab2f42d..986a3ce6 100644 --- a/examples/pattern_matching.scm +++ b/examples/pattern_matching.scm @@ -1,7 +1,7 @@ ;; Example pattern matching macro ;; ;; This file is part of the LIPS - Scheme implementation in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license (cond-expand diff --git a/examples/reader-macros.js b/examples/reader-macros.js index b2ee91b7..50bdab65 100644 --- a/examples/reader-macros.js +++ b/examples/reader-macros.js @@ -2,7 +2,7 @@ * This is an example of how you can extend LIPS parser using reader macros * * This is part of the LIPS JavaScript interpter - * Copyright (C) Jakub T. Jankiewicz + * Copyright (c) Jakub T. Jankiewicz * Released under MIT license */ /* global lips */ diff --git a/examples/streams.scm b/examples/streams.scm index 2c1de712..e5c39da9 100644 --- a/examples/streams.scm +++ b/examples/streams.scm @@ -4,7 +4,7 @@ ;; http://people.cs.aau.dk/~normark/prog3-03/html/notes/eval-order_themes-delay-stream-section.html ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; diff --git a/lib/R5RS.scm b/lib/R5RS.scm index 2cfb19f4..47e5c704 100755 --- a/lib/R5RS.scm +++ b/lib/R5RS.scm @@ -13,7 +13,7 @@ ;; https://schemers.org/Documents/Standards/R5RS/HTML/ ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; ;; (+ 1 (call-with-current-continuation diff --git a/lib/R7RS.scm b/lib/R7RS.scm index 49c60504..cfac6d9e 100755 --- a/lib/R7RS.scm +++ b/lib/R7RS.scm @@ -13,7 +13,7 @@ ;; https://small.r7rs.org/attachment/r7rs.pdf ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; ----------------------------------------------------------------------------- diff --git a/lib/bootstrap.scm b/lib/bootstrap.scm index 9a11df06..7a86716e 100755 --- a/lib/bootstrap.scm +++ b/lib/bootstrap.scm @@ -10,7 +10,7 @@ ;; This file contain essential functions and macros for LIPS ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; ----------------------------------------------------------------------------- diff --git a/lib/byte-vectors.scm b/lib/byte-vectors.scm index 68acb99f..06fca9de 100644 --- a/lib/byte-vectors.scm +++ b/lib/byte-vectors.scm @@ -8,7 +8,7 @@ ;; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; diff --git a/lib/js/prism.js b/lib/js/prism.js index 45e3ef79..642a0a5e 100755 --- a/lib/js/prism.js +++ b/lib/js/prism.js @@ -1,7 +1,7 @@ /** * This is file that extend scheme PrismJS syntax to work better with LIPS * This file is part of LIPS interpreter - * Copyright (C) Jakub T. Jankiewicz + * Copyright (c) Jakub T. Jankiewicz * * based on 1.22.0 * diff --git a/lib/srfi/193.scm b/lib/srfi/193.scm index 314f2e65..b6459118 100644 --- a/lib/srfi/193.scm +++ b/lib/srfi/193.scm @@ -10,7 +10,7 @@ ;; implementation of SRFI-193 https://srfi.schemers.org/srfi-193/srfi-193.html ;; ;; This file is part of the LIPS - Scheme based Powerful lisp in JavaScript -;; Copyright (C) 2019-2021 Jakub T. Jankiewicz +;; Copyright (C) 2019-2023 Jakub T. Jankiewicz ;; Released under MIT license ;; diff --git a/package.json b/package.json index 2faf6666..ebed19a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@jcubic/lips", - "version": "1.0.0-beta.17", + "version": "1.0.0-beta.17.1", "description": "Simple Scheme Like Lisp in JavaScript", "main": "src/lips.js", "type": "module", diff --git a/src/banner.js b/src/banner.js index dc301f44..3e8d7f5d 100644 --- a/src/banner.js +++ b/src/banner.js @@ -8,7 +8,7 @@ * * LIPS is Pretty Simple - Scheme based Powerful LISP in JavaScript * - * Copyright (c) 2018-2021 Jakub T. Jankiewicz + * Copyright (c) 2018-2023 Jakub T. Jankiewicz * Released under the MIT license * * includes: diff --git a/src/lips.js b/src/lips.js index 5d68f1d2..971f42d4 100644 --- a/src/lips.js +++ b/src/lips.js @@ -10,7 +10,7 @@ * * LIPS is Pretty Simple - Scheme based powerful LISP in JavaScript * - * Copyright (c) 2018-2021 Jakub T. Jankiewicz + * Copyright (c) 2018-2023 Jakub T. Jankiewicz * Released under the MIT license * * Includes: diff --git a/templates/README.md b/templates/README.md index c1422a52..8ddc119e 100644 --- a/templates/README.md +++ b/templates/README.md @@ -313,6 +313,6 @@ They should be loaded as R7RS libraries in final 1.0.0 version ## License Released under [MIT](http://opensource.org/licenses/MIT) license
-Copyright (c) 2018-2021 [Jakub T. Jankiewicz](https://jcubic.pl/me) +Copyright (c) 2018-2023 [Jakub T. Jankiewicz](https://jcubic.pl/me) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fjcubic%2Flips.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fjcubic%2Flips?ref=badge_large)