{"_id":"bam-for-js","_rev":"39-771ee847a8c068d3393f7b321c7337b3","name":"bam-for-js","dist-tags":{"latest":"1.0.38"},"versions":{"0.0.1":{"name":"bam-for-js","version":"0.0.1","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"1731a3bbb0e37eeea18af59f8d6cf67fddd09170","_id":"bam-for-js@0.0.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-bkPnioJeOGuWv48dNReg/9+OrYT+9eIQxro2rF+zracphIcV7+nlict/kxWCHdbYoF6GIL/8ngaOVvbObZWD5Q==","shasum":"48801b91a76fb0552ccfc3382b2db0191a95a90e","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-0.0.1.tgz","fileCount":3,"unpackedSize":79742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkj7CCRA9TVsSAnZWagAAkGgQAJxEYSG/HE1PKF1MiLiK\nDPeoKMluM70ev3cpS4RXT9OW/NHkQOmvTtMFLZKDbyxM6WDr/hRsj/7nbRJJ\nS1WSiUsCHXgo23UIGkvQ75iamClBnyg287TUdXr1YaYWynke/iDY47bb/ZPh\nNFx6QwBA6A2Ydbd0xy12VaMQ1RqTQnmNvQ0XR58rKI7sMexkG2ja7dFfbyto\nV7Pzj394ZRoNUxOMKst5rA/0mycNywvTMeq8KeCfX0IqDwbp7r7dyxe0/TiW\nINz2ddzSuh34qO6+Nm9YXCiSuY9Vlhfgmdn1pyW8T/KZJtmwz+OjhQeq7Zdk\nHg3648YjeGkP2qDWtvtgmrdCeme1l4yglGFlC1ZTB5M2J6QWYpJbH6kH1rHX\n3vtX0WVKGw94r8mA1FtECzS0XEWmqi47F9etGzFX7YqXShLnFGXReIkYsGt8\nOxnzm+dMYIsUIQd/XFDNWPN42cEWknFnRi63pUeDqEELQ18ihECTdM1ci8k0\niup69YcJDdTO1kcyj3OYEICPkL/OhLx/USSKR2pkUsJhwg6ACAAjihBGCUhg\nrJos7agpzlsWbYtsDDOIwPm5bfXfOms/mfFyC9jF2rKZuJ0V3qSvhaJ+fPT0\nEVQ00fTPQE0bzT/A9JPLG+v1+r8ZMtAfXCDB0LhGMmNtfpiPwZo5bNezoDs1\nC2Sd\r\n=qHzy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGK3AJL9agbBnU1xMkvUWEkWlD1VA2Qd3w/SxtYlUXdUAiBM2z2bJt7ENHjiQTMEabuccFJ4jcACxiJzGpACnb3DgQ=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_0.0.1_1569865410083_0.4802864437707062"},"_hasShrinkwrap":false},"1.0.0":{"name":"bam-for-js","version":"1.0.0","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"96c34db040c97991d39cab94f29d8e10fc6535ae","_id":"bam-for-js@1.0.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-xXIk3/esMWpbVZTaA0HW+5d3KGSPVZbZoMmVffE7g5wyqp2ltB+hn45cAxriYE7TD6tJWmuKQ9dYSMa3GSaSRw==","shasum":"c082a82fe4095f39f30132705df478baf2a8cb1e","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.0.tgz","fileCount":3,"unpackedSize":58379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk1gyCRA9TVsSAnZWagAACYQP/i50JjVATK+MktcVzSWb\n2pCPmrSMyGQfE0JQ6T/AZGnrexQkZ/pmvOQqqoV3TCwX9X68toORWfEhjh4Z\nW84AiY/9BdZ7ZNf/SZdcCoRh9fFR7Q72GGJQEulIwOrbpwcbS7r8rbqY/+gF\n0defa0+SYa6HuIYr3hAUn+T/ceVqQpoaF69/n//ksk2nVTDlYG85k7CoJ8xI\nKaPWsunBjItYPUnnnIxPFA0pFUpec3B92XvvqM96bEF+olzwt/BbjuTK+I5n\n+LSFS03Uq6A0DlnNzy8gaxK4+lfrX7Y3KKwkw9+WifieR6yPzFMdOqGahpL7\nLGxh62+5hXjfra23zk9i5cFTUFuiIXbGYoRXandnf5hXEoQYLrxu2YJxxJOB\ngvaeLYZtxdMolzhonZgvMh17z3q7CAyXI+PndpHXjsd89dx0ZE3Y5eN5OAOw\nQb+hjJ2ccbFIIBMHXE0OkESE9UWD/gZ6ZBHW5PyvRa028mUy0/OX4wsBlBj/\n4Dr6DRtRlZuL7ZDADTCsBP6Sz2AB7Ccm+12Q6CrJhDxwjbUMQnJFenUPyHiV\nraEyWtVMT56GzIwhee/o7v674CwOSZplVXAI46gHpch1tN1J+5sIdCFigLak\nbI4EppBkT/F4xXeEBcit/O0TYDz6OOF8NPIFCs7cdXJlCUbW3TPRh/yXWpYY\nHT39\r\n=s5ql\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOt6azxWTvWZ19NhACdB5IPbGP29eH1MzyTEPo8zOBTAiBIRL4iHSlQOdOcVRItdqrgYOa9/y4kmmp4aI+uk3ZArQ=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.0_1569937457981_0.6325711520220985"},"_hasShrinkwrap":false},"1.0.1":{"name":"bam-for-js","version":"1.0.1","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"8b7a2c6be61a9416f6a19b1441aa7a05a7a02ed9","_id":"bam-for-js@1.0.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-WNU8JTvHrXxeEWgrQCDCbhvKlDT6ovhUZ6oC3B57juCJd9Z5u7oFylb1VsQI1iu3Y4WqhnAcXeCb/7+aqpT4Yw==","shasum":"013e83fedbcf5dbfe9513fab28d95e6426a107c7","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.1.tgz","fileCount":3,"unpackedSize":61134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk6kcCRA9TVsSAnZWagAA158P/0w3bV4nEhz002QbLOtv\naat5Lye/VLZHPuaKlcRmkYyoLYPFNfHGOgJ6dJMRKyWpGs2ugz5th/7JFTd4\ngbagTSj84HFqonQRnk2HzrkGLUZ1t4WorOGBNJbLzMW06/0CDU+0RNFPijWV\nPu20kF0kzbLCpiTcVqGjBd2jOb0DV7DxsJN7wAnW4NpINbwHd1EfoUPTCIN5\nnsaF5EYewVyei3qszUPWJCmNz/JtfrPAGeLuSJnOQwHeehphZCr98GI3X2wA\nqTLWjXD5DgDdWwcNd2tUj9GlYxQpbxa59AIwlV9o6ZI7T1QExY8LiSuaQ4vm\nC9n6YCasYrmmuX5QkT5QebtX7/5J+UeKJxvy0YeojwRVkDdpdH6b36R+n7+Y\nHC+lk3EDA7HTQqs4YUkRflTa/wjCNkEy3HG7u45ZRmARYiTQazeM4+hXwUTd\nkyxFkikLI+WhmDZUt9Ts/IimNYNP5BIQHOpHo4cyuvF0IFZoe8yL+e45ovB7\nqNRLM96U6lSAh9a5U3DsJeI2y340GxLLgHqEudNurjCMsXJPXuxTVnh3lmMg\nC1gQV6XHMcfcao3NAu8deiWvm+5VoGvZ4ktE8W9X6oU/iXMonCXyNQBhaD82\niSx2QxjnAT6BUIuLq58FbvXvQBJS2QWwTcxTlBY1WgaHTtgn8Ln8nXR3WVu2\nO54e\r\n=wIsj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDO+wm/kyL8jRXM1CWUIYP4s0WSx3IvP/R1aGnGNz6NeQIgVmFh1O7c7LIavxCQonUUk0Q01eqvhaNWVGomqepc+kU="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.1_1569958171748_0.6304034616843592"},"_hasShrinkwrap":false},"1.0.2":{"name":"bam-for-js","version":"1.0.2","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"936033937c2d34bcb2cf24ae1b672761e348dd99","_id":"bam-for-js@1.0.2","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-I94MN2H1oKEogpMxLrHLySdLe+rd1i50KxUo1WDgr0PPPCguITj0TIR0ITxcCUswCyIOEczassRYdtYJ+L+3zg==","shasum":"a657fb543d1c0d29dff4df61b5d51862732c92fa","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.2.tgz","fileCount":3,"unpackedSize":61474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk8hVCRA9TVsSAnZWagAAipQQAIPiGgc3bb9Uwd/M6rmj\nO4XkZM7U35KDPcX2OqKL4yUGKxKOJWj5VQMGUB7cDvvDkQHA0j5olXcMahDT\nEpluWzggyKXEAJbCJJhoh1KYpDTjBsGXqAUxZl5JMt8v6FaTCwhcGAgiCoPc\nD0BNafNYPckRLWdZvpNodsGhu96177iSEa8qDjbLKKWgvbo001S8MZp3ZZDn\nahDrsESGAGcAMuodB3XeTM37Xtc3bkSD9sQ4R3wLSeGe+bsHwTMObvq8esSM\n/TOWxlKZJASwsFFuw4lxO2SYaVKJ08F/4yjBr4vklZC+q9w37nGcuRn8NvZ9\nxB3FdBdL+mw0ZLfCzCvMWfe+ZkYzoOJKLKMDjKcwKwxAWUZnqnIpxMcbQS8M\nT215bxCZXQ+uOqEfkJeruBO6RgZtcYyI2x4g84gX1XVfeuYcpEEXcRx9QQKp\nqqR6rgsUcpMxqVsZ/mJYs9p6nslKbe16uJ14dKBDzrt7tB3KnoiE4IPR4kYh\ntG5rIPKry5lvXeNSH0FJbJtxNdqQkGjmPtGF40IfYUA4f2tvI+DT9B6XVfr5\nUDL/NAe9mCYW5gxfrFHW855EebI6E/Hxx8xG1rxO7TnCDwh2fc2ixIj8Ynq5\nMf3CXpGuzIKMFFL3nf+ND34v5t3VHsZONkswBaVX7TgcrtHYLlcH/SaNEXJL\nLoBl\r\n=aKVi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHfanT2W1uMi7KvBKy8me1R+2XziXHlmMMbKfoeFbjCwIhANLQO1STLqGoxm1EgMWa+6xoQUgMZ7H0I9DdRTJg7Xz6"}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.2_1569966164546_0.05158609362281985"},"_hasShrinkwrap":false},"1.0.3":{"name":"bam-for-js","version":"1.0.3","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"eb1c1a5275c2de40b64047498dee509c96005e7b","_id":"bam-for-js@1.0.3","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Hhlc0/gsN9DMquTsnnM/JbywqywW3ETYvd/3bmFep0Xt18vU8CNIzL140UnuaMkH2gbXaPs0KCVKl5o9cgoRjQ==","shasum":"cefc06db0ed5c394a9239ba79f0426389a7a63a6","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.3.tgz","fileCount":3,"unpackedSize":62257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdk8xiCRA9TVsSAnZWagAAH8kP/23l/CVufkCeKC2ZK/nK\nleF+KAkWrPBDY8BP59B3Pkb+uY3OELiCwawYc9owENOOXiV15FZmJdnhTPrT\ncVBBqAY3Z19hCjzB4RH/3gur39eIL5JlXAUTD7o0Ira6YZkEJyz29MHWbQcc\nA8siY3Jy8RO7E8Wtk3eHNCgy6/qhgIYXKyed9HEqL7QiTtRxAjwmNAt6MiF2\nVWeBN0FctmuNkVWHZN1c+vF7SlTa1KNZ1Hhcx8TiFHUWlm7k0e4QTkPhnyN3\nZXi0hqgIFV7IYXpv1rZPZbwUBGkSfbChTzDVn2HbUvfgh3Fu++4dNrmzsssf\nh8yqDIV2OkPk6YM9oq+hhZN7pwefbR1W7CJdGnOh90zlc0BodkEa2Oz3JmCN\n7QdIlXtFC0ghDZsJRvFXXWO3uoqf4Dq7EgnoHouWsDrtRGiXELYCSrOmZlKc\n6YbpSgr+PrDTf9cAWFijl44GoRMGHrUif49VNEHBKcx+Y3NrT/wJm0IWtYIX\nQctRwe2Hfv5bJlCyOZN8fHxi7DQ3p9tsKDeQtQHysCBTZIUtT27DwA903rBX\nm1zK9EEEpCkshYGblz27dMaEE7DvecM1XWyIwWiS2B6QU+uDOW8n0y+kSV+j\n66Pkgf3VNOj3ediWKNUQ1y7/Q/LriqRVSKTmYWj280KIYHC4bWTFZHNMeNp8\nkEo9\r\n=1IhA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq4rofUpmE3zXr2TP8RktK1A0z0Qvpz30pAJApRyWfbAIhANWtuKKSO/8gn8YbJjxOFAuFZDXnJEuO5AphCdA8oAFA"}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.3_1569967201809_0.4940838077722085"},"_hasShrinkwrap":false},"1.0.4":{"name":"bam-for-js","version":"1.0.4","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"679c4eafb6b3df90a6ef5aa6903f5c3841e22ed7","_id":"bam-for-js@1.0.4","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-FHPrBYdccrVyyEDl9d8coNnC7ihjKZvBtb73vBMxY0bvT3TgHiSst5mGvR2HG6e4n1q0r5sTPIZ3bXThxWmuZQ==","shasum":"e9268529306b707e036f5e048b00909eea0c3f89","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.4.tgz","fileCount":3,"unpackedSize":62715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlPclCRA9TVsSAnZWagAAYlQP/imPKeu2xYVZUm16wMjo\nA5pQHoegjuyvawQJ7aMxV3ggBs06XrXTEO2KFoToVOM5vBSEk2BT9JqCyboL\nCjEf3MGss2WUlwFsH1zuu+zqQxqbBOg9LxVi64NKuLHta4K8IcgV82bMv+2o\n7JDmZVp/gc+79tbMzRpNBSEwtz4A/9jF0eyo44+FWBc/1sMV89SsLQUz6O7i\nPvYxNJXP9yTrwXxIUezfbaA/4x4FdsKkj3s5UPjcUcYVqT6RHXSfLcbKz4Qw\nDLrZuVZjZjMEg1fbmX8z2v6I56buZWXdgh5M1snbTp9IjSAXxFMXeRnIp+Bn\n0Xj/MXxlUwZCTMrkFaifLIhDdxHGvUxa0Vg+wuT4H//0xf/Rxmo8EL5WpOEb\nVkVWHcfSaJQcEIb0ol9FvaBdzNrL0pzp9T8/Fm+mLRCCOedGme9b1U1QtCnX\ngYbr8CVrotwNHgjD0gQ863T6n84iJOMjcsX1zx/T1tyydQ1r7m2nRC+cQJVX\n2Qn+egCYrLMuyHZrat5zZOUSbx+Wqc3Nph0yNVDxP+CJklFQsyEmNI7ZSV/Y\nrHye3Py6WHJEos90PjRInEK8bUpsubR/XU1mrOA3U6Y4+r1M1ELrf8Mzk+6E\nK7/95RJLTHQ6W6FwyI1Qf0ja52BjzqaFd+66cxSOVnq7a6sYW9fLoR+8zsam\n0/bj\r\n=k3MF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMUjseupKCrula/zd4O3Dz4OrRAekcYrW5pOTmZEftqAiACOapV/Hk3jj2vMiZQ51mR8AGEab55aKqaAGg6i9LFbw=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.4_1570043684738_0.69307035068942"},"_hasShrinkwrap":false},"1.0.5":{"name":"bam-for-js","version":"1.0.5","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"1f07efd7fd7d140e3f85b8fd46ec94bbab570763","_id":"bam-for-js@1.0.5","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-tuxlQHerWAJL286hQKxMA/R8BaIypFlv7454Rxqzbf0g513z9PD5kgy5UrYhDyjGkup915LUpjQ8F796gioDnQ==","shasum":"3c086e4157c70c5ed4f3243fb0af822a5a9bd671","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.5.tgz","fileCount":3,"unpackedSize":62682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlPmMCRA9TVsSAnZWagAAeKMP/iYygCfOFH2qT6OdmRgP\nPFHrOKox7hYqgwyWUMtjOzCeiSgzelypu4lH4uRvboESDdqmnxgSfFUecNI2\npPiQGNc8dTABNr6J+r+b9VKqkPLtSxv0rDm8GRn1l+2MLV+Me3FDACmH1bag\nDsxwjnZDjjmGfM89tM6LJjUp0oTNqdk08L3WyJ0PkK7msxEivrT3R7qPpMnL\ng+DdkM4Dj/hHiQg/0J52A/l5THZ3L6HkHlE3ztfNl9f8uNKm3UfxEEQYhZBp\nw98tlnrW3deGVLSHJTTqUj6JwIpp8pHl0idHI6NrjzhDtbSCUoh0A3tE3p1D\nPAKdFsoXITAIc7TrNeRWJHF0TXBfqwO7JRn3Y4FdM48jVRKJNeOAVsr/cywW\nkLY98CM3PLhd38bDJlsqXICjoOpNeReOG7Sg2CY8klxVD975g0VY/sDowhDi\nsSsiFRvi51iVtY12ihGPavIq3a4r1MAm/CPzNSSoj87JQtiMFBk4VCufxd63\n8jrAlWmBKmiWWWznlhf1DikXJwpq0CL5I9nqQHbvZO1gjYZ+NdeV6aNaavH+\ndPgUz1fMd0pOAX3TjZ1Nh9r4oM4qH4J6hqd7tjh5UnXNwzt1qh5KO8F4Bi+U\n/sNF5BEQJ9M7pbMC+1KWxjLzSwnd1XTD8pdE55hCIZkKoMt5WQy6Xhx02mFE\nXFSQ\r\n=KFRw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGhe1gkRSXaiVl5ttsFsW5sU03phECNIkh0XOitrklw9AiEAvOiL3kM3EKSuWr7NXoZ6gljJW2KHf3y1mtAiOoHg7h8="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.5_1570044299552_0.48402591677444784"},"_hasShrinkwrap":false},"1.0.6":{"name":"bam-for-js","version":"1.0.6","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"b8c15cbb32f8016780d803e9260ffa6a5b02339d","_id":"bam-for-js@1.0.6","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-bE79pQpIdDKI9eNnSA1JoTvNtzNyreoXTGicUzkr8qXTvXxjGwMCuMtDJLYtB5Ce4G1XokloolF6xUJMcPfHoQ==","shasum":"e5241527d8e2de5a6fadbd4641d88542cf879b4a","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.6.tgz","fileCount":3,"unpackedSize":62813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlPr3CRA9TVsSAnZWagAA9CcP/0h94+fFG7pampzLI/j/\ng8baPvBYnA9sSx2OY3SEMm5dMKt/XlHR48vHHrWyW+Ca6uliY5VtFIzXNIAA\nj/XwsF11oula19yPThqv2WjJIgv5vjRwYyy0NAdnlqT/9oCmGvfT6t5SPTLA\nij2+pW7H0Sei/25i+5npFuNvYcSW33d4FiFJgfA6KKPE22k80AW6zTSHcaHL\neitsfiDm6ZYOx5ix7X7YoQAk/JRgguWHPJvNQkpoX8reSaiYLRmeviFTXUJK\n3/7eemDLi1zblaYqVXcx8hitE5xOnW0kr/8GRIBeCt7RbyvJ64So1AEYcsbZ\ncNzeUeJUH3FPtGg764QGVAyurFW4hMsA92wDz1l1MgSnqIYMB2wcpVJH7bHV\nCHwo03bVLj7ToEQh/dIPxL8ZuzCCVf/OjU6MqeEUb43ro4jUBZoWMtBzuJ9S\n6X1eX76QxPfqdeEqsjxvjoJ4tE51aKKm9ZyjqvuK2aRfqxvJREm1aoEo2R4z\nIQfQk+VuBGyEbjqVB0jWeYlKSaHi66DyExM1qPG62vZfLCJvILAAXSi8HGtq\nP5Xvl7IPkBRwv95FuhAcUz9X2LZaY8/hWHZaXx1B4WTPrGzOh5AwJm/WRBVT\nfev0WZJgERmDi5+6MwMFph/U8ADjdV7Io8gThUXtg1pPrpm4PfzuZ6nYs7Xy\neG4y\r\n=5m2o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGTtMTvHXOIGp/KZzKsz/NuetsUpq8CVpI/8oiRl0G48AiEA/KKC+yB97eIXZ2uyEzicBMkwXVJKHXsnV+cZjaDW9qw="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.6_1570044662306_0.3478003715502813"},"_hasShrinkwrap":false},"1.0.7":{"name":"bam-for-js","version":"1.0.7","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"48acdd0df0497f4e680656e7e78c3561104e7661","_id":"bam-for-js@1.0.7","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-adna7OLMCVLdhhJUqVeXcextS2dHgfotco6LqEmOYVW2ZNeB4P5gGP2Yx+SXqadNVx0k3yYQQ7H9JQgIRC2QbA==","shasum":"54c9f591331e5dfe548b0fe0a40308c929659459","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.7.tgz","fileCount":3,"unpackedSize":62817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlPt7CRA9TVsSAnZWagAAkVEP/0R6LcVpmEIb32J2eUi7\nNstS/lfIBCtxXtwWQtZg/Riij2+tJcmhDv7RHY97iBOWabQTDE8Pmy78NKE7\nSXceVbR0a1TXg4EhBdTwqRxT/srJQMb/B+yfnyyxuHezDKihIvAmH/ZBnzsY\nO2tAfPRzF26pFcG6bZNhk89D7D/KsnU0uhaLlH2+ZEul9P2U/BVc394y42M3\nwDms8hycbp/qUx2CFH7ynWe3R/nTAovXfRniRXUjepP9JtXgUc1JYbkZXsxm\nIXs9cEFIFDsRkose00d/nt4Y7OWxl6H/aj9gLUJGB76f8EvL/3h6RlGoxIml\n2uV8tQkk/R6mrN0TDX7X3vxAWI6xfg+NFFP0cfJEZcXvahPMlF3mD7vi35kG\nm1GqryWFlGYMTpuQpJnEwPN0iewDSeHb2ZdQAqUhA67Eatmg3vVI6a02Z7D+\nJovJH7mfg9aS+Qz4sSofzfUUhWf9PIxABcGcDTNuVfhBs2x5rgi1+6jAl5Nj\nQLsfZAVuFd7uCTMXLB9MENwfiWfwKLOWl/jh1VVK2Etyitt4vk8oTXy1AeRe\n6lXaDE4hmObaAzCoc8S2XRhHFF+i7ThFDkIpj1Hfa6u+PX3H3Dc0mzn5OImu\nrHVS8tzul7j/l4JDp8COBt4b1cEsMac8dNl4YuRw/uqG3y1U3dIYC3Y+IkM8\nhHH3\r\n=d6xq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/NfSETwJ2BoCHyjTDjxNfwMDrUC9qv+TRLQrU8bD/qwIhAInN3vTUzV8UmlIVuZtNpZ3weORFBfChurN+Lxabanif"}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.7_1570044794120_0.6343482790591255"},"_hasShrinkwrap":false},"1.0.8":{"name":"bam-for-js","version":"1.0.8","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"890834a0fb8e490f3fe2c92cebd71434a2bcc8f9","_id":"bam-for-js@1.0.8","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-65T4/vlu6jJph9ZBX1+hdTaEEhbl69khkalH6uK4UtJLVmrFynNWAz5Os80l0A/p8cheGFw4AHwDUzvtfET80g==","shasum":"cc7a2d786e525447185b249b723263af73253378","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.8.tgz","fileCount":3,"unpackedSize":62847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlP1VCRA9TVsSAnZWagAAlDoQAIutvQ7gtuN0nJytttyz\ns1hkqq8hAJwfn+R0LygnKmp/avm+BRsKJE7Pv13LaxKAYnCgxlo+ZaInm8qE\n/ibwokGhzpoFjBdgV2PKeHLzXIeuKBb9cDRYQKgZ0JsESlnw7xXvCgydLn0R\n96zEcXyBFsRm0kYyssILiAaUb77KniG0Fpp4x2g6v8HBdhQh1bfFkZmdoydb\noYPObfGKg38XTxg5L2eEjMvOFFuiwglyJkKcO/cS2XBkiobPTjNBmy330Kn1\nP54zIh1S0qwEDR2RoT+aCyB0c98lbAWba7J2a2kcFdna+dQgaq36/RzYT1OW\nyRFt87o7KbDtpR+cOut3zAbn6rufAI8rewzGUYns5+UN3qqtMYZIb4Hc1UqX\n9qm06+809rHXBFORcESQYvJMePehB68QmmcoaL9tkMT+aE1bbcEnuEGw5OJh\nGi3leNheuJvtsRFRRSvRotlZx/mzXaFUfppezh9rC7xjkMH0m3ARLRp8kcGY\noH77gZl14lgF/HkYbM/R2685BVO6ozXf7NkhicM+pYJLf9dU/SlFLUXxpDXz\nauI409hMkmNVXGXIWZpwYVollu9fqwmTaTcTrp9KIJK2N2Jw44QjiAjusuwh\n07mPkKxvbtqtzvNw2UoA+MgpdWEMNuz9EippnxVs3NWigDtxFGImX+4GTNYp\n0CRp\r\n=pBS/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCHzqf7XfSknm7WT1eEBbKWWBBvSLePTa2V5FnAPGOPV0CIHEWIm8kucPRCVBqu/pn2kgy+1kBj+zBgm8/4f2Lch9b"}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.8_1570045268521_0.9475516423189931"},"_hasShrinkwrap":false},"1.0.9":{"name":"bam-for-js","version":"1.0.9","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"9e10fdff4eaf341ed261046efb07ae08dad5d5ac","_id":"bam-for-js@1.0.9","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-J256yw/Hcth5mHb4zM4I4B/JuXjiaZG36lsjr/sJPbJpq6/z02pkupMdRUdi2bJI/Wex9oSUA+HBCxbc0otrSw==","shasum":"11dbe5b4e78b4cde93d0a7bc1dc558419136d138","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.9.tgz","fileCount":3,"unpackedSize":65933,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlQ79CRA9TVsSAnZWagAA0o8P/15641j3yIg/re2O2xAJ\nDluZLrO7xgOehUhOKpqG2f4nu3iDz0xsFJFMtVYsj7xvfwiaRd9I66052G6A\n31p5vKgUxwt4NCSkS4x51VkLtwtcIlFGLE4dPbxAWSVBqjx6fFz+3M6Pgvpb\nSTqRjvMWPBN6Ae230fEp7gOCBBbIYyf3kBaMDQm2Sz7frHxdflj+vhaEZfwd\nsEUGo6iCAujIUUiGS3+rJF5gjhT4MzQQjeO2FC+Q5Dwf4AudaIMfWs9gIi4T\nhS1iGf6JcUGoUdnjkWJonDro92jmAbSkL/nb9IY4U72R9NOKwWAaXYNmJ3pt\nfHNZD2olvnxh6FpG/mVYUSqlmEzbU/h6csGSf/w1TWaoIgDT5ehZEzz8Nt8Q\nGZ2nZIPVqS8Mmvdx4R2D0INSmDX+qqV+o06TFqXsDsRsMS2F/Vsee8dAoBPX\nz9z6A5vhrEB/eOoMaRNPMy2GBzouI5YK1e4I/d9qrwgLTa+Oa1QKuyPOV1+7\nv63yW/bWMArwUHIlWhuSSQ2u9YoUE373zZ/g5QMT7SOOZKCz6EpnoBnMHNYk\nY1ZDuHMAaox+XWU1kqCNFw0dHPqvPUQtKmjoZ900RGtsUTVyNf4QgsNyvZlJ\nhiSxU6RC4EojrFxnmMnGRqNo3cuhhFmRWpjDg8qq3bsqKfehs1YHe/9l03x0\nSybX\r\n=ZlE7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICoJsZVka2KNpuF0P43SlDZN4/1MbS4N1r2jjm2vCIREAiASpawTPAsIOUicPfaruz4enPips4HvJE24+zgXdd2jvw=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.9_1570049789081_0.88190826564271"},"_hasShrinkwrap":false},"1.0.10":{"name":"bam-for-js","version":"1.0.10","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"8bdd086cf84a805331d42f174c92387cc45f99f7","_id":"bam-for-js@1.0.10","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-vcBvcD2mnWAGjnkapYJFCg0ZRVqR1KW/AzX6BB98W2jTpeer1Fv5dPUhLalBkWJAcZLCOxGNhJkBHYhN88RnDw==","shasum":"ede75c6300d51b138d386e0fd4bd3f0d75a2af9e","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.10.tgz","fileCount":3,"unpackedSize":65938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlg+oCRA9TVsSAnZWagAAizAP/0qKXAHu9dQyYTUnffbz\n4c5YMijysGeCyW3cjPGAoshQAIMSK6+4GUTWplaff+vWOP7bx7dG6y93xauy\ncLtKgeC2CTqHHXxHVDYfyM0hr41wQwtDezDlk9vmq+np16fkgOr6jJwHGRs1\nFXwADnoWtDxFo+WY+V0INC+xr89XzJET+tFI9js4ehj7Vy4AwOCPhYl5xvYP\nq9XA6d6+nDemd+aV1oe8soiAi/dpH8mHKe67knFt3cC7hl0AQjPd7AcLG32W\noHQ7EZNaAHqFqoKDSA4ZqMpyspJiUg74EW0Uf1MXmj3NF6vVgmKDuMFzc2tn\nZ4wgwXdDCaTloXQ4RpQTDDXjpbnlcNSt/M8ePy1bmuWgR9VuBrYEK4DZc8gz\n8qOm/opnAIW6f4OSf4GK/DP7CjHcDFgWW3vcy0Nzm+DU9Xzqyi0BPI6/+2i6\n+6JlgUJabAY+XNeLIt17j88sUFSdDEiBqFBnOR0LfudD+8jMwEfsnL99cTuM\nbRQBKcyUFMhtSAGVbPUo14qWprdT+XxmMdE3rZMWaSTO1/h8DD1MmthjMqb9\nMII3b9Nlw2f1CbxiktL7L6VRCv8JohyftCb8TEJt113UXeVK32ymFFzrD72e\nb1KQeDHbWsGT0+UElwAO0OGIxMTo5EOfO+LbJqBw5dF8n2Olrr2FmmRZ9WMs\n1EJs\r\n=O6or\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKpXlacA2+U+IZIee/2OUO0VVDEJyxHEnTqJJw6ygEJAIhAPtncNAkESW8yTOGy1dDEscUajENkOqQbDZcpJ+921JJ"}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.10_1570115493319_0.6664031124099403"},"_hasShrinkwrap":false},"1.0.11":{"name":"bam-for-js","version":"1.0.11","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"75f17a5e84091d5384625fc5222818bc03f04296","_id":"bam-for-js@1.0.11","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-pqDGPu7v3hsALfw6vi9IbQCRleMe6M7x9j973i0UGxpYI2BawKr1GX4VaT7uGykCvDnEsTjmEWEeszJHqK8t/Q==","shasum":"30d711175ff0f7a6e15136086c80df12f5481d7a","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.11.tgz","fileCount":3,"unpackedSize":66196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlhQMCRA9TVsSAnZWagAAQaEQAJaH55FdQZpDfrz50raa\nTeM6U+3TkVfpj080KECpZ/Ev9hLzzruYZXyboDOAsRzcAijOvyoq8wFZo70L\nmCE5OMBluaGAyZ+BvByep/F3IoYVCDcYE49O8CQOB3BOTvrxPoB6xIFk9B6w\nyS3Y5Y+1u2jfHbnTvAq29k19TvIPEyF8pDum2r0tztN1EMbed2/GznsauzmE\nFLFaU9Q4gC6NKbKTO8C7dfAMMzLlmLiPQqxRnTJFwwzg8tuhjvaWo32COcxg\n8xhBeIo1B2Q6mAQf8V0rVJY9QE1QxSQUMZ+5pOyujpUeV98ApwXFRjyqmxKR\nFACeZJNjiVuXqF1i2VLj1qFURODPzRCeSb4/LPxSFbUK59EIXaY3jVdzrD/u\nn0T2diyls7W07wrZxbYrhNtqLH6Bl5LBkIYIHcJ0JKu1tjKK51YayMEQC3W0\nSn8hFFz21FM2gQAnMq6Efhwrg5YXxCnGupBQM2wJeQ6duNKL/z6qO+156vK5\njAv8zM0BVoAm0+6piG0AStI7+3/XSbONsuqWg+0v+iBEBN+IMhFfiTqQJBxU\nybNiV04r0eoxbLX+FplIlfAPxHCnTv6UH2MUmZxW/RMVlXus5lslH4LMIdm9\nchUcB0Ita+Q/cWRZAvFGuq/OboJ7YsEMY2RPz3igWIdUGunra4oLP6WoJuA7\nmOsS\r\n=YmUA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFibN6XXDUmv4WxPqmYQJMGhGVFffzi6VM9YBLQU2qpgAiEAsWOx1EYLYzvFsIt8+5ON2/y4TlHZpkRaog0p7Zi9G8o="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.11_1570116619328_0.45929986996500016"},"_hasShrinkwrap":false},"1.0.12":{"name":"bam-for-js","version":"1.0.12","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"cb671f07452521a052b2c36bb82e2b64fd06c908","_id":"bam-for-js@1.0.12","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-3BClUTM6GJ93JgwvfJKUNtJlbq425TFI2P1BPd/mINKdMzCWAQpRNTUG/sCkD7tpC+su1YYkr4MBcY+Xodzggg==","shasum":"33f5ea67242336961ce3e9be52181f1d7f468a98","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.12.tgz","fileCount":3,"unpackedSize":66405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlkLXCRA9TVsSAnZWagAAYzoP/2nF1L5wP3/MKtBO7Ogo\npiY5NXnOjXDDc1fwSz1vhmjQnDhEZGhOPfdTDhl6aw3MsvP6mH4xNQIL9Fp7\nOxiRGX8QtXaAE+ylTGppXW5u6CTOrd8n4Qe5IOn+sG7SibtdNwZ6Ntncm4Hi\nyvMSrhpz1ESu3unLLN9S3SlsZxEyJLMyFpNHJKnRP0sQErKSW4cJXcOEdnrU\ntThvZsVijJFMeUQswSf3iDmjryONPj6VDfZeN89H/oNAbpcSAyYwv2VLj0mu\nmA6E3QlS4m0Dwfn7ECs9TNuaThfK4elNveI83tXSm+T0GvcI8swPLv1doazi\nxY9JiJ9+iDmqK8US+vSuKVIeanRJbSZAL9SWnFZqY4jIli/h7uOdl2kBedpA\nGNVG397I70/V19QY1andID/ZOncPDdRm+FvBWvaQpGaP6AY7yvAUxBkEkRmq\ndGHcw1ZJWXAQ9PWCGcX9e7XVtCqUPUgChCYs8e/gYA7HxGQ1oa2U0AFUbthu\n/dnStP0uOVZYEohdPlOXHd3Ic/LIiu3vaLFIlIpuKfXrlObeHq5Ted823pyr\nhgI8MqlWSd6I/TNAjSeIQucgK0inMTXoTJXHMrNpJzzYD5eDxvrSc6NZsbE/\nlMDQcPII8/OL+YKEo4VVsDlPRYe8E1DNb3NTXcrHyMKfq7pYrp2W5JyEbIOT\n52bM\r\n=jOAt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFBxi+xv0MSthZ88vEYLIn0TVu8tZzo9wzb0QqPvfJMDAiEA913lQOahx6i7+QTMie20B7WB43eQCgGQyoj9BVNziIU="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.12_1570128598508_0.06354386695015579"},"_hasShrinkwrap":false},"1.0.13":{"name":"bam-for-js","version":"1.0.13","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/","bugs":{"url":"https://github.com/MikaelMayer/"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","dependencies":{},"gitHead":"1736a74219b6a60d5d09f0e931056fb476e83b0f","_id":"bam-for-js@1.0.13","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-3tw/mRC96MhhPo0ilq/Bj2vUM6l4scRtHF277/hQvY6gEHr1yvwZ9nwq6HGT6Vs5gs9BTdT8hBwgeYi0eKw87g==","shasum":"f5e8639ae068d7dfa60bf811759bc1d44e808e79","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.13.tgz","fileCount":3,"unpackedSize":69762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnQINCRA9TVsSAnZWagAAfjYP/3PNbSPgnKmd7KsV/r52\nBMSDcy8lNVxY+6oMYVrYixGQEd/YnWvCAT77DVnTIyUsjj+5ppSBx+K+huRV\nTBqwCJfFvc8jbmM4qz2wf2DuKe2LNno55QdEmdohEaUqbFwVzJjRp9ve905U\nnFKy/YsKqiMfNfKavQlqNdnR3EEBDeqaTTChWJZM1IxbTAyxiqunsBN0qaY9\nNV0BDIc/gLbQuFxxV8L7m1zzABWFGoDucNfJmTCYIRmKPjX5h+4MVlYIoIbp\n5bRbnToNGHbngi2TUmdZS1qtqQKbJVGZZjNxGhnt4LFL9BTpPD8L0MYbMdn2\nj2134sOKsQhYKpJgfERberPfGVrSqeO333HE7+w9Pm3P7r2PEHpk4n0t01CK\nZb66fPqfWFuObwPSAMC4MszjGReBjnCUCf91IX+9Wm409iMzGqQBvUsV4JKO\nPuG9lgIUSYRaNs53KcN8W5Bnhc0+XDXcm07K2pouXsf6v5JVteyvMm7l+wK/\nR8OHAfIGxdmTAy+pjQ15jAUmjArMquA4yfaW6YBmKP2LkdE1eb+qDGzsFysm\n0dqBO7ubmdbierwW4vSGlutt3ZUHwGKUCJ1xanlZjjTiITZZvIgnvuz16JWY\n9kdNnx52iuyPgINPi6Da+mtRpPqZXuYxtpufMgJ6VvwpdJrEQJZ0lG8Dtk8Y\nw73p\r\n=a+GM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFlack+V07ht8SmW6qnxyzkDW+6tHHJNQ6rkYQms+HcqAiBwyUYLl58Z7elSQISluBZhA7Z4JX79oQxhg+hwQJulsw=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.13_1570570764341_0.719467745063346"},"_hasShrinkwrap":false},"1.0.14":{"name":"bam-for-js","version":"1.0.14","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"36b90a1c90145542c21750910132f2b04d06c3a4","_id":"bam-for-js@1.0.14","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-p8Pxz0nyHBsHpxXvO7yuNqb/nrDcF0dWFH4UtI905OHevvThnOyu6D8a8cAWXTcjmNo4KqMymYi7NmNfkWSuRg==","shasum":"db8f3effb8fdaa16810de425e3bac0603f774c8b","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.14.tgz","fileCount":3,"unpackedSize":69911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdn0+vCRA9TVsSAnZWagAALOQP/0q9gxQdtIJsSYMmljWH\nxtWKlwA4kTuJFyAgGa1wrZNvZ54/bCplIMHiuP2CJ5kUaJY8YpxXaZk87num\nTkjPr96y675SgSHd6BtsmQt/TuJvYScS+CqDA622oQXSoE+rUGAUOkM9gLL8\n1Cov0vjhZLKh8CyHBrH/SPlXoPHS1M0SWW7KRwr+FaNi/0MMPLqZvpcoPvBG\nycltPcprLgSNzvbZ6wj80xezNJOtOV42nd+JzVTOt2NPT+iqK4+NYjkk2KeC\n7WA/LMBqKfXFdal1MyAL14TrcB70qizJlEP6ZEPND0pc8FOB3EDOl08BvhEo\nM0hQtYBZqCqVvth511b9M0mCqk5IFWuCuoc9I16L1hWgS98bgtVFfyfek+vg\naz0I1487z5kjTEQOTBz83rEvuK2Z9yfGlaNy4278Lj8RWzVY70z7hPa+PCAy\nuHj4aWqdw5hffrVl7Yx0bXrND0DP6pRdVT/0+uLjoJ4ODL27WEDtO8cgHpLE\nd5cp44thaly5vc178Bmn3cZB94x3ze1ZjJJRAlysXE0+Lq8Bi8y4cgTU3BnS\nmGNPjV+qGBX/5GQGicWgs3Jnwr2TZ4escgmB/T5ebWcB2i2NRrfJgc64eROM\nAPyllSXkp2YPLFQaJ8iAUPM/YMD4wGyt97AS4C5IenNfw8zPuEQie0J1fh7x\nil/9\r\n=aiy5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnyxD3LpOqXVYvpHF/01yqS9dqVRar/zUu50ykSkuALQIgAPVwOB5JD+STt8o3GpU9Vq5GF3n7NqkgmZ/9BqBADjQ="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.14_1570721711066_0.39758807029283005"},"_hasShrinkwrap":false},"1.0.15":{"name":"bam-for-js","version":"1.0.15","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"49b5f94e4e2e1925225418c20b0806e086fcf277","_id":"bam-for-js@1.0.15","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-TGrPiF6uqwuSgop2/QFUNv+cUTpUThDnsyivBO1Z2fkJBD+ZnVSrWaKRQSmsYkCloWm7cVGWB/fbXSHHa1Sc+Q==","shasum":"f48331e6f8819e4013d51c2fe630784d5e193118","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.15.tgz","fileCount":3,"unpackedSize":69936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoBSKCRA9TVsSAnZWagAA/4cP/0QUYkyQGeB0iZHFmpMa\nmKbX9wUWxbfUAAPqqjCKQJfb0oYEAy8HcEI8WCQn0IOn7qmYe48/unrjx3zU\nX1cVnqi3eaLOpIaBbdOkbm2wCleUWBg3qW4+iYKyMxnJZSTVFZDqeQ1Fzbcw\nsMuOprAwkSvhj7WNDF9C2B0cu9EVJk+Y7Pp8EjPuh/PX3qcl9Kk3srQRHbRo\nH296e2CQh8tHHIs+HnIkvimq/2YXJZqaj6vfJVsubzyvGQ2aurTGOggyOh0R\nRYXHmoP31BTOspLOkRX2DVJkJr6mXtjudtuWqVum4BKbR5xbo3Ev+36YNRpl\nLDQlqkqjgKnT3hR9S2QpqzzP1W/3SsBbIcrC8vsgn18A3g2ABXVCdCFthY2M\nxUNS030XFkF4vQOf5KSRqdkLDXvvN375x15e0IlgttuW6NHS6v9PBJUrnyj4\nr+0xbmYds86nDoNjidy8oAePRe8yMoEEd9xq+eq+ivgCtyIXmY1r4kKARMRi\n/jZLGWAKyXwqT3LZTi78f/bmT9L0fFR5n9uQPIoNSOYxL/rwFokSiyHrVlIk\nyy3knOfHfJMLr8Sdo2+tnZhbHwvQpEiJ3McyeSLGT1kyJXDy3F4DeyVYUhI0\nI2hckezWoBSZgbtCoJWzUA8IB1TC3pi01IbfBwjzIeHSTtE6TRL4WTEen1C2\nUnwh\r\n=xrKD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChepC54nHcKmRTfgKacQRVc8dct4SJOA0sIOQ4D2L5QAIgaXZaDEB0HP14LM4ta5hTRGLEvgM6wROLhep7lhiIV0o="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.15_1570772105241_0.2045908518498989"},"_hasShrinkwrap":false},"1.0.16":{"name":"bam-for-js","version":"1.0.16","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"dde4d6dab6891072ce11463c14c8349beec18b18","_id":"bam-for-js@1.0.16","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-v8RyzeVYKUx/OGoNlIPHLkslKkdLN6BTKY1GSO58W+T2GJTt5tgQrJaV0bw97fq5K1V/W8MIOMyKDGEBlEJbwg==","shasum":"0b517244f44d2e2276aa566f438ba538ddaa9843","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.16.tgz","fileCount":3,"unpackedSize":70273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoJ9jCRA9TVsSAnZWagAAqh8P/2vUL0Xo2P6TgaMh/Suf\n6/eL3xwtdxAMc+jMnejvnHpLYYi714/gqSoVbrdNbQNiwMfzAOyooKsGP+9r\nfHdMyVZNHzlBXbiJni2C0bdy0CWqOOmJ7dPWDFO5hPz90OqfqcyZLM04SmdP\nuDYPwlXPm7/Mi5Z/AAxRQoKTLgxXX/uqzcmiIppxVwQy5KBNa1HYSn5zhUqK\nDt0MIKLFuOy6cSPzaBZzLOdXUObwNajlqWnVmD41q5gmcPOlVqu6TmBNE664\nQGbHkJ2XsonMmk3V5dUruJTk+1dXznWFF0FyAXh11pb1fhs4S7Kn23LcPzu8\nClG6jqxZQhhX3dWIRQrYUXaXo7zx5wV4+tmNzCBE9I1tTvaRsUhL11krxZFG\nf9SnyoD5Jr8rnfuAwCY/JoZ5995k/r8Lc8KaMwVW47U/neO4MFJyo4TQwGMB\ncDyc7HOOOxSJU3Bj7HN8/58hBvKsHWl/rA6Ozs7dKPediaJ4H6ZEozSgsvb+\nYrkZjozxd/f4wwrO42xXIxkDiIbeKPbvLwaIssNMtoRH+FCdLbMxX7w887IK\nomB0sPevh7rx2FEdfFuUQsBYkTffXPzSTZ4USKKRhrl03N1WP7IR2CAg5n4r\nxqPF9GaOppOjFBSjW162bv1QFC0xb3yOlj2zR4rlXgc0IByWBvGl1P1lWEy2\n4x2d\r\n=rHYI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPMrU3i6Kla9GVVyYQvEB/RF3kedetTBZuGKHa6ATiuAiEAokqIzyFoHDN/vTaJfQlO/MW95/mp+sGT8HCUuInPzIM="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.16_1570807650756_0.08375550251874553"},"_hasShrinkwrap":false},"1.0.17":{"name":"bam-for-js","version":"1.0.17","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"9fd19598f4a022596f5172b32bbb1793fa7a3761","_id":"bam-for-js@1.0.17","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-AICoyJTeOZ3tPSUMcraanz6sH3TaMYhjt+TyX41nDclHtszZBF5j4AmxwkCimUc/Llbd/n/xOP+47NBlgLMKgw==","shasum":"f2208b9cc91669acd57a75c43beb993cb5598a49","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.17.tgz","fileCount":3,"unpackedSize":70299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoKMOCRA9TVsSAnZWagAAK2cP/2zhf/fJw7d+fa+jG5hq\nodxgTr634BTKqKFOJbpCv7VlxCxr91bxMupoMhsIGKHCUGdg6QxjYDs0OVhp\ndj1bSC5ZChchUKQm9+Yw5s/bMsvKa3asf4MbrMkFS7cn5NV0f7PzB+MZe56w\nBwjmLCkSDqExtIv+24ePGBzVTcHeEeSrd5PEfcux7ZJ0Kff3UsJkc8DcJqPE\nOG9R2WyVWqcFaF6uYg82wvnKa4fN7z+2A/wyzidn9bSlSKnFkZ0XAqpg8rHm\nEOLbgpv7i8lCIx8vjgF4JhpXIT4D/GmSAWvlP1nzh/HNXZf/1FqQ81KW+MZl\nGzrBzVB9s0QsWjkwZWnvYkyqgF3iUnVgB6SNeg/rztRyF5gcxOOuP9QmenJ2\n9YIACF7lxrGY3NyxYFTJ32GgALO6QfqBXZLyyufhjT6/xKfjdtV8oyQuxZiM\n8mhwhLEAvkmBxPye+Qg51YifpqxulPZl6B6+hcWIr7hpM/HcodVPsOONa9KE\nW5MK7z7mOAOEaEkJRNus1IFNPB9nszFMPaMBEwHMkDBmdDuS5TLBCSeLhpwP\nlBV5XztA9chCqlluzveTMFS49kR5GTgy4swVq7yh7qqQIdXjF56LDF21Pj7L\nOdNsjJPnNgnrRY7gPNvhRckG5mEpyEMYu//eP834Ov7y3BdEE0wTpwZCbLZJ\nB9CR\r\n=Apli\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHejoyralJv40fXd87U8dfh5z16hlQFztJCsimqd2fHAiBgN3bSj7VDmde5WYQGsvuUbOgWfDHG1qjMy1Uryx5fqw=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.17_1570808590073_0.5670955648637006"},"_hasShrinkwrap":false},"1.0.18":{"name":"bam-for-js","version":"1.0.18","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"051c15291ed6f1a7d217247a932f4941557008ee","_id":"bam-for-js@1.0.18","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-x/jYf4NZte2K/99DgjSm0ppUb1w8hejRChhrL5LSsONwb5VgroefpSXT4s8x2TCNCxuIQ2RFwUe2Qx2k24H6Eg==","shasum":"813bafa6d5e085ce8a129a33fe991269c4d1ede9","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.18.tgz","fileCount":3,"unpackedSize":72117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoNmRCRA9TVsSAnZWagAAECUP/jiUh8IxsSvNE88pt/Qe\nS5xlVNhC7eb0YalRolPPfGKskbrjGkK1Lb64GdVh2ezq18kW12hRF2HOBhNe\ngV2Vfbb2bxtVsnsIGdlF3MG1yROv/SDikZR6H3U7FmQx0og0NlP0r2RB+WqM\n4CXuRy7HxgYc8uu3SX9+dFlcmKcegQkWtebAErLWkCiE+fKw9HMERE+TfFMS\n1j506Oi8WsvYH6wgcG6fvS/WcThQyfLYlzaCUmPrbA2ZjdZNOpC5r0ajGm7b\npfCn3xgDhlOmobinQjHEyKNERHPZ3YUb1YOqkaBW6QcXqyt+FprC9OWZh5A0\njeQ2SyOBz1fpdUTNHvO6jd3L/QpUcjSCqMc/3t5MOozvhHmzvNi6CW6os7ly\ngnFIh1qm10yxomErximnJP0jv7O9OyhynghxhqXkKIwsnRKpzbuLvgyulZtF\nK5MOukI453vz6xN6JZRPg/DKcookAgV6fjj+M3Pn1wOMZEVq4yCWhLY0shp/\nNw53hTOhFUU8UTjCbXjr+fhdhYx5OraDgx9B31CG9hFhnO5CLJ5PqAsAXQcO\nJtkN3uSE0lGKxPbFci1UW5b2iqSPEHsve4SCOKTbdP9W/EVgCfy/tzTOrNj5\n+OMlB8S1Aicy9xEaDaAD11swA92HCIu/r6stBWthOgu4wy17RrRSh7VCeczB\nlvGt\r\n=HGcH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCy3DzwhK8AtRdSNKlBpUHZJtwbsmVQ5WD/KJQaoMf9IQIfLl0jRck2KaIvgwybijGBFHsNlBvsAZmvNU6qlGDJtw=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.18_1570822544835_0.4422273372555272"},"_hasShrinkwrap":false},"1.0.19":{"name":"bam-for-js","version":"1.0.19","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"54865e15173e74c170f7b431f78de00dab1748ba","_id":"bam-for-js@1.0.19","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Vb3IfrRkn2GC5G4ulDORJ9Q3zr4KfHOWXQHJA4WD/rBLj5xTcfyXjnc88McuvtzI4U0pe5MmkDy3qyZG63em3Q==","shasum":"b2a2acb5b0cbe1abc2d807e427d5c3d216d7bd92","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.19.tgz","fileCount":3,"unpackedSize":77732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsyakCRA9TVsSAnZWagAAuhMP/1K6I3fTEujzMCmeR4JX\nbFrkPFpszdnv6uSCKm68HK9JR7THXJ4cY6d4SB7aZ6NpOfGUKBUbC/2GVEgR\nJth0MMtKKu8g/4HQCVG2zicSXJrm3+TuN4uxaF2RdfmFNTU/kJ00ZoJ5hrDM\nTdqbC63LqDweRdpMHz6JNk8LK60A/YL+ewPw14ZHPnBF6GSTy0MTgoSs7+G/\n65rFCAqQV+YXJB6LF3jtbWxss41erSkaeBxcmaLxXpz5+I8F/uIWe4CjxkbY\nHmk6c/CQgs5TtbbOfTtWehs6tEdI7yOO7mHzd2OtpzBlIl8yLnMpsyfPNVkJ\nbgj7H+iXAqhoh55unXm9xADKA4HeVjBYTURtZCm1jtbAnjijFJV0DQnc753x\nN5GXojLcvY2D9u4Qrfl/RWKgJ2ypVb4AZtKzOtuheYPmgxpSkCAsOSusqDpR\njNj8pBJ+PsqIsB8RUoznJ1jqRmK0bWu8aAo3NqvdPmIUqtm8jVEkv61RTexa\nwDX9KzaWd59zq4oT7hrZJp4VX/hPzd73huM7s0xabT5cYcHpQxplnjmNAAFt\nLSC/8V8JwVlmLerFsM1FmxwL2g0+/ZCrSwUnxinrkeAzG9Qz3kK0MiSkH/6b\nTAzFJNLvGCzeqM1llzCVBUEd72+p/oqsfIbTAaavJ358I4k59V208Dvgo1eJ\naxaG\r\n=N/yr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAH6gNy/dVWIYhCffAjluDqXERFYree7eEtfUpxsnbtmAiAOweQiombLe4GJN1jLqEimWGit82Crv6PYcAqsBONzfA=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.19_1572021924340_0.3200403517722681"},"_hasShrinkwrap":false},"1.0.20":{"name":"bam-for-js","version":"1.0.20","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"8bfe58940ffa296b85942bc7a19007f4ec783803","_id":"bam-for-js@1.0.20","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-3l86eY1BKb55K3xkoyvN1GtCrPzVPxsgM2DHRavLxZp1VXRqP+kMaUutfkm770ees2lsJ88YHeaiPsKDQBkc8w==","shasum":"a9173b763c8e84d517e0b458dd7c795e739c8f5e","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.20.tgz","fileCount":3,"unpackedSize":78813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsyifCRA9TVsSAnZWagAACPsQAJ6OKiL8dCCmgcwD/kYr\nSXeDpTsakAurbsSChsuKcDcOZ5k5JyEBsopGtxioEpxnmJHY+NK9WtoMo7V5\nesUwOE07Yhoqpwovsq3jWcpSHOrosQs2debTH5c6BOTZ859lvdnGCWgTW58x\njseR4t0QJrtmVy3jMGTQ/XojsBxe+pKZCrhJ7NLcbp9nDP7G/oIowuKHPMe4\naaViXSuVmqVLGXwfg0Sw1lHTSOU1d0+T2R/OEt1UmBgmec3Ggpr23Eydjl8j\nE7dwGNNqvTvTqZK6SF0XQccKr1fOCPn3azzUZ7fSrBIwAQVnfT33Yq+2yKg8\n24NvoWVf7Zv0SFI7JKMH2iiw/ZL8fHwJgvqgjpJn/q9PfOjTHLm2TKK1xfxL\nMf0oHjFUp9T5z97YzAhIKAZQMU94tAPCPvZjlMvqDo4zFLKf8bVOK+y+qMvA\nGev4JSBssx2YQnw9hp+olMrbtueob0uBqKspXFKZtekKO/q4QVnVBtgJ6O5F\nVpNsWy9TArULHkgGG/uhn/3VPSXKNZsSioo5m/3ZPmKJoIS1qw5RIt0+WNfO\n8JDq1WFfO3FwNGIDa8gt0QFszmxvpGDAZCWv2QayhPoUma2NizD8gra244HG\nF6Fw0xOQih+HyWYAyZujIzzET9m/5BgNVjcnL9OP3jchhw4K7ur7gjH4Xr2B\ncDL4\r\n=GeB2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlpqPUTU38SWU6/clAn3qeXac3dzDyuUhB5p1i51mMggIgMf5FT9DYssEMTFOBBNl2V3d3YyDyPGhnBxQc75w07aU="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.20_1572022430589_0.5514224607013971"},"_hasShrinkwrap":false},"1.0.21":{"name":"bam-for-js","version":"1.0.21","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"f0cf2bdf4dca2162f1edc54d9a70e447c85f01f6","_id":"bam-for-js@1.0.21","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-mp7cDDieKZHh6W9Kk5scbJ/k88HPTufD3Au1CpFVJezudtfabmj2qfE14LAsTGWEdvK25vYnkO7J7zo2tzwA2A==","shasum":"1e14274ef5ad51a60a344866009e4f67bec71536","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.21.tgz","fileCount":3,"unpackedSize":78754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwDBdCRA9TVsSAnZWagAATU8P/1MpUSnKYFDSUkP8/v7T\n3+n8Njakq6OV8cmahARw15/fnNSEzW1BcacKAxFv/InimJNc9Mwc5GJNgyt1\nZ9ZHRcHlRo31SkGdctbT12cItyJWlxazMMZGKib7CKap4o8d5Zha5Gu+GVc7\njZmtWDLW6xrYMDhmglQeItqqSQOiSk1Kdl5pbeDvOgxt8EtASovabq9Ieygq\nBCGEQTT8FGqgp+Ek0asqNw/cCH+Kvdgu/k1fzFwEe7StdBEcgqCDYa3GPgT9\n3oem8RgZyJv5dOBtQrmy72hJ/SFOkiEiOh3Wd0+2NSEewrf1Bge/mxIC7/pM\nh9iYOlzbut1r9UKe4yi6F7KQh/dYVgali31J7vXuSouWBuiDkhg+1fdoGy6P\nKreFTzj/XtLm1zJdHnnQv5FLsCTaNq/muGrUeUrTYjXmEKZ868e8k4gU511q\neGC2SXXllJnEkC8sp0gratMlLP2mREE5K8WLRVJPZRhR6y9iQb8QWn6OLMqd\n91fV1COsAwbyanHUsklrrKtzyVMuUl/2izNgbQaZd6933q8qdVgCl2zTwccC\n79DHv4gw0B8oj/avrD6qQ947bXIuhfmAxzCvKPwItBc4DzHr5zPs9y2m1kvR\nBZ8IUe1oOQCwEskkAJkDB4UWP53gDBm3UsrCkv+U6UKQ5AdXocu9fHTdAm8n\nw5eJ\r\n=XX2h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH1MU464x23HOpzmHiP9L2ubzKLbhZub23a4CZgokGFwAiAWekU1LYEN+4T5jvF0vYR/3bEewzFWkScMLPKZ/KLC1w=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.21_1572876380979_0.12587989746898587"},"_hasShrinkwrap":false},"1.0.22":{"name":"bam-for-js","version":"1.0.22","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"680231d54bd689d2d02aa988db834f8bd09f4de7","_id":"bam-for-js@1.0.22","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-tZlj+GRiPUriYzLv3Z8QkJOcXgwpuq6PFCv72Q2N4SmBVmCdMhQaBppG8QD4UqGPHjujBmGbWmllCNue1xxLug==","shasum":"a4cbdc37f3d8a65ad935cb98d6753f67a215d61a","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.22.tgz","fileCount":3,"unpackedSize":79316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwDFCCRA9TVsSAnZWagAA03kP/jSXLf/k8y/w6nHl2dbl\nY/tpyuqA4nOK7OyicZtGqaPkyJX4bu6FdDmHN0+W6TEcmFt0RyBe0PGHMjWP\nPphuAIUwCWNG62yJsyTsTn7Q2Plt7osm9r3/En2WZxSD10+CQDM7RD2A/tFv\n/660yuyTTJxqarVdpEvzCUsoMC3FI6/oztyFT2eAu2W+QNhqxD1Wy91OXIyd\nGCXVnPu9iwpv8zDxQLgkGu5M6j4gPUk+VUpPMv4ii5/ZmBCOa+6Xfrvq7gZp\nxrkebEohjk0GzJAlcgEwpofQvav72btc0vIqRPG1uDdzMBJ/6lCn4Nbhl6PT\ntTyXR/Io4uAjCXJniVY1heY0tUFVrGJDHRXkzoedRgwnFDH8PgryTd57Njic\nRYwMe9Pj3XKtm8pFv0FIrvgyeVZV/cNqHXjZ9L+Iit4g3+JbIrB5nGF8oSaT\nagqPqaG6nwKO6vDbJT/tfNesxPDkOJMB3uZ5fGN/yz7+kE3TLJhL9QWHVSQ2\nwbPnB+CKAsDkOTP+tJL++anftelUDIsLyc5SMVvm9Pp6bK6RB42WeaqTOZOF\nHmokpTLvZECVxnDWCe1R1w49PcI1TS7b0zSy3yS+tTEFW431vfpr63n+hwW/\nkf8UP34o9lUbWuhPCbRg6oCvA3ehT8VFUswlF3B1ckIqa8TBWL2Yqni/TRmc\ndILu\r\n=REip\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDysvdVr1bDw+rcpGNBIkhPoNlY4w+xGydDjI8X6HGMowIgPW6q32VmMKYgZuakvGL214dG0h0QqzaIt/Z5dEHvaHo="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.22_1572876609638_0.7303379404130039"},"_hasShrinkwrap":false},"1.0.23":{"name":"bam-for-js","version":"1.0.23","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"0e096079cd09811974bbc3bba1e0b8a6da734940","_id":"bam-for-js@1.0.23","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Y7vfUdL1MIFPutETfykDMfHk84hUwgk1L4jaKre79lcMJUBI4xiqTqxaD2Nt7pPVI3qGK4i5Y+Y9JeLAhSTD1A==","shasum":"deef9e3f1ca12ed715474ceba088d87052907982","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.23.tgz","fileCount":3,"unpackedSize":79568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwDlBCRA9TVsSAnZWagAAAkUP+gI7AlWo2HypH5cJg+/o\nDMceHQi76OtuQLL/lYfxYCVCuwkT3cZXjFrRNWUjuvOJdjVhKTZ+62mWLxMD\nw6ipq5jkkSAbEbowzEUvm3AtpkocAIpYf3NRbpQ+ZUOTqBAo4/rpTMIJx3X7\n0MfsBk8JTErgM7vHgR5cvqDpN0uR8Xvk3eCq4dTA/9F1OWhFuQ0lJOxPO9wI\n3MIQiPVwcSoywmqkJjXpyOi8O2EYdto5j6cergd2A3mjiuqUM3Bt/U3dG84C\nmqqqy3QSimrnHb406BQoK0m/lmtQB8HEx2OQJUiZgZJL2CaJbeTuaHKHmiya\ncaXGDap0diKVEr/C54B7N2xXJWJ8hOX4wVvhNJEj6GjMp9D+pgRNPPFaG9Iw\neLsYVAOdCtrAjJs6B51swETsQxVYqjPUDUvjonFytIpgI6W4R1iGlaEgGUGi\n2Whj3m1yGnVT5Gwfg/EFZ4WxINARdV7dh75ywV6Zj5kmesRXqBhEwFlHw1Eq\ns4tqtQ1tDTvUtlwiOWRqB/lnuyoKWmHnZUuvHqZ7Oeh1b/Pdq+63TnlnLYJ9\noJK5YUfHP9cFtOFAMMqL+qPlfeyEhhWjZo2R+DM6WIYF8Oqhr76MiFjxhgkI\nNFFy+C+IBdA6jYlaf1FVTkg6h9ZqMcwSkcoLH0zQLIt5x3MXLuITSK0D+QoW\n+PE/\r\n=M51b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDMFJp+8spmzIpflsSUZJCfbAY4f+gJLGNGj6/P0cdibAiA1qM2IZzqU5/UPRct4iJIU1Tsi2IGRQxEWVEViWsQtSQ=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.23_1572878656680_0.5039572855757586"},"_hasShrinkwrap":false},"1.0.24":{"name":"bam-for-js","version":"1.0.24","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"303d19c64ff11de26222b5d70a2795c2d118071e","_id":"bam-for-js@1.0.24","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-zLgQDuAc6f6EiR2eOGsyUOOMpM3O9IwfmI0aXY3zHVC7oPr5sZtXCdjwvKhEH2a6goM7lrLQpJjVO5yod8Kkxg==","shasum":"a23ec157470b6a091b32ff9ca9974ce3f6fb4d2e","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.24.tgz","fileCount":3,"unpackedSize":79565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdwZF0CRA9TVsSAnZWagAA01MP/Roc9Fa764AmJSR81D+d\no6tqkdMX2jaAg5wlFbdMaQG/raKU3hK4Zejmll/erTGSzvGKGyL9pvl0hlL7\nms4cInNevayHlFgAk2ptHznvBk2lFasL36PPUBDtjygaD24EPwvq1Oqjtaqu\nAyHCFgJXPzCK+fKUlNpvuVlCiD/EqcrfSqC+RlPdble4TKu/9FL6+geTUY57\nQMJ0D/cZ8fmc1td7WUw0FI2QkuUxTcPBorvsY4J0fyh/R8Nzf+gXmkbiPFk8\nfLabs5EfN/8zAuQxHdeP4DCrwUHgwLA55Uwhr054L20paxLXAtURn7EDeVxh\nvmoHSmkC+WCI33k+aKbY3jrAWBu2NxGrUJ2ZzcIFFr950UXAVUGS2/83RJFW\nTzfVbkAbD23OFlGmQYLa7kemnpCE0IVUtx5sDyPxMRVn785edNNYDDSl8Zon\nqZQWplU/NTemCiyP3+wHged57Q4N5YrwkJXIu7WDMefhwcNzIUB0ZJzqEEE1\nLo+cxRE8wI7dZGYiuXnLn8o5SxiD062TSxm/EQLomnzKDVzLiY/A4I+Kwm/H\n02E+DARGVG8iIqLKKRG0eJEjarp+X0GpilhPtthC4UhM6LQ7ppnp9FRqFk+N\ntasFdqg5cK/Zc0cLBQSpjOuvJXc7dp6fnDiiJlHPZOQF/CTcfDVJRnxmYeRd\nEZlm\r\n=va3E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbe62ZGeKPOr2P5pXh2FbHA5sL4f94YaRbxsgo0G4JmQIgKkLEKbtS2vuQjvMPuDU5iq2Upjygv2hqicaNuSRmePk="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.24_1572966771490_0.6626188287716794"},"_hasShrinkwrap":false},"1.0.25":{"name":"bam-for-js","version":"1.0.25","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"8a084305c37ad65fba49bea8a6ec9e1be82173c4","_id":"bam-for-js@1.0.25","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-qVXTxkeHOOBAD7K/W9u1C7+pmMCBbKtPQuDKIbQCJ4Sxy1A/gRnn/+mhW6uBY+DIbEL3SVNQE3bQeJ8J7C7o7Q==","shasum":"8764731474e6a8e00d08b29c82947d45d97a7841","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.25.tgz","fileCount":3,"unpackedSize":79628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdw7DOCRA9TVsSAnZWagAAOZIP/RthFtRagHpncqCnj1FD\nYMtsXvFKRbs2G8UjyiyO7yFvaepvePMKeBdoKiMBK3FbZygNWiWo0j7QT8/8\nLCWFMsS4SMvI+/R/08HnURdXfNOBWxp/M6Si4SZho4Ctaq4alpjZQpEFWCSl\nIfoFYLClc/x6gX3ud4KX6HG79IJ31iVyIzoxfsseRxeKOsa0jf5nPFMC0OVB\n1Z/364vNOGVYS7eF35sMMpAotGUIP39J6NqvUbvmVwnSQFAKEHIjE7Axf22W\nqSbYGKprWLv27Rx7IhjY1hHiNc9bfnKdNzsgPEM6WAaVql/hyie3kR7HJnUi\n55UdRvnSvvrPNr0hIRIZMJXdsXA9YLY/xlhVCNQE+V6qMeaFAOQQyPn1kyMV\nr59fps3JlYgqR5gVdGcMmKxS1eLuVorIxQwapBNm2m+e/aN1a10vLVMXLMVH\n86bPvcKoD5rMUlrQd9jiLtDLvgWrHaaLtzdEm+7uQmFnH4n0mzRgD3gYxDe0\n2kN/tXijK4AdiMsAhsY6fqb81qCnF5O3J5uymL0vTqtqXc1b8fDPwVYq2lFg\nDDTRzR+WGYnX0XP4/lqncNySAtLNH9YBHpBBOLqeZDWhV8lMKQWciuBEMmQF\nrsfg9a5/8idlFZf9eiYr0rDW0WC/hkz8O9cYKwZzpaxF7LcabOwAjcqbEz4B\nBqUO\r\n=/O8d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFUdSVoZyX1Mqn6CekAwrfJt0CKJxiRgTbowyH/VZwzIAiEA3WKT6ZE/uWhaz75dInZkCWyBg1HU0OvZ33WWepZkR0A="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.25_1573105869726_0.7944795992853255"},"_hasShrinkwrap":false},"1.0.26":{"name":"bam-for-js","version":"1.0.26","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"83388c6e355a11c1a89c99894a28407c7d7704cb","_id":"bam-for-js@1.0.26","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-E7ntguqMzTXX7vxBU6hgJOFGaNgCr7YdvKa36COZWJx8SrBtybk50FipwIWpPLxRNwMkIvsEGtGsWGDsWSI+Rg==","shasum":"d2e63e90259492163a0419617b74c458cfd3abb3","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.26.tgz","fileCount":3,"unpackedSize":99469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdytMmCRA9TVsSAnZWagAA5ckP/2YyGoFi0CAgih0S1wLe\nwb7sBrqcQXvALgtaRox6ERd19IN22Z01lBbu2KYzFc8QsusIcmq8OCVKNJd3\ni6BsRdrT0niM4Cit+L9zYg0RlcFaaqTkY+DfqPHCkPMxzOFfDdyapr23gKJH\nkdYzDXuYtUtFpU4T4e3pECzfZJ02/eq4yNv5ApVa6jxoqh6GCocF7S2vUR78\nK8MpFWztw7OT+3EPmwaLtl7b/FpwBOeOiEfSinLjItf/SSd3RXfV3ZOh9Rqu\nqaY14h04WKR0y49jN04qKF0K+3+cn/xOK+MRXE6BkpEedt2vvhmxzntZ4nGZ\n6NHjTKUY36ikvmsCF6pQvz9rquiXxHYiyI9MwuX2SSapSIk3tIWdNJyuiBl+\nHPRNZ0jRUKXs7AaMzjQOrBWlNKV3/pMBdSSEIynCYuvmI6YEYXePF9U4k7Tf\n9Yo3snic0t514e7fWJqZ1wRiIR1rI3RBqrAYecaXBzg7aWAL0elKaA0CfauX\nLymz35YNmk2gLUTHcHSDsLPqRUctsGpUgwyp5ogCulCnmGn/dsGkQLJaqrjB\neywu9gECD3+q+HCskMmhliTLCAmeVufz/F3yunzD22xT1NsPhcsFCF+tbjdT\nvoEpQbGRIuXfhv0iHQFUXx7hkUviHohwpw8fIVMWg8qpgzTAxBIY/mU8Vtpt\nZcZZ\r\n=nJ1K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyW2RB+xECXS3ZkuCyhOf2YaJty02i+aU8Vnq+6HOLVAiEAu6TxT1cvp4PYLhcfOvobGDyMkf71xTyncXHFYPsiZ7o="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.26_1573573413736_0.911988463731856"},"_hasShrinkwrap":false},"1.0.27":{"name":"bam-for-js","version":"1.0.27","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"d500a474b78f6bde1edb58f0395a6dde026cd38a","_id":"bam-for-js@1.0.27","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-No7xCd8Bj50/BNT4nyaFfMXqSqVPoh43chEUvXXwXhOPT4jPAcgTNPg8cSHh/fQCOxr9psC2MduTasEUf/Q4iw==","shasum":"b4ccf9e5b1057a4a2ac6df71dbdeed1e072f28f6","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.27.tgz","fileCount":3,"unpackedSize":115868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8jL8CRA9TVsSAnZWagAAiIIQAIiQVN2bzzJHzt800Iyt\nguES4dyTEMq1nby0yCgXwboRW55o37TRY5hBMSPiKgvOO1hR49q5LN5d3qhb\nSDLTbmlZPGcW9l0KRmnnERd87FtLrR+K7J1zVzBYFkezJRpJBQ2Ih/ALQCrh\njeRNosRV3hF5ttoXCo29HQHVaA4ajn1jMN6mLt6eRVynLHoo21kGHDJakqhb\nl1JFVXln9wsGUYA7G2352BRY2yQYfeERmUhC1KOw56XLypjLjYrdqLPXefeN\nkCxjeYUs6TvnCFr+SMLUgNPIpvvuHaBVV/hEWoNmPi/2l+5UZhLu6B7Kxq89\nHNzmang6n9VZ1cZGd6SCdIJ5csISqj+6ECY8nE2irF5oo50R97njvMW2wGOl\nvd1ZlCwkUSuKVvXBzVUc8MCXASm8MWjoYl+Oo3iwQOUVsQjfvPlprVEwhcv/\nprWC/dAMAv3Iny9sqkEPGErMvWSXp9Wsogst5YcU/2Fd3OUYguvPi1S2/fcN\n5DyCtQcQ0PRvx97+V1PiMrIECwVpfRpQQAz+JugcjVkdHY+PbaOXSbqfT2dz\n33E7L0LTBlCgLOUxha0l5hdK89DjXGzZBJk/pse/Ng2x+ZhytcKkx6eWhn3Y\nESFCwDMBGmO/lVXCXfxdNZLadLiQhSN9lebWA2gj6L2juMwbXJPPtmnm3246\nTEFn\r\n=d31a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvHoc95lZvgn4U65tRHT+rxqbWwAaKkkRxJTtSnC5ApQIgMRSSuWGHAZyeZ5ZdqnWfi+UGKkmv7nvOodf/IThV44M="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.27_1576153851927_0.015390105727822512"},"_hasShrinkwrap":false},"1.0.29":{"name":"bam-for-js","version":"1.0.29","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"94c9266809a40b905c93f2bbaec2232ed3f126a2","_id":"bam-for-js@1.0.29","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-zztoM2sF3C8TVnr5wSLp9fcZRc/TMzwZtnvpjNFOuc7yYSZE3YEt9X99EPzjU6MZmj16aEt6uv5UP3VHrS1Ohg==","shasum":"42b250f6a477d5088be9f94d460c175cbe1f6d74","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.29.tgz","fileCount":3,"unpackedSize":126366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd975aCRA9TVsSAnZWagAAXjsP/1/f8WxLtyqP5JzWIQ4t\nQjyhsr11aObO8k2DBDKHh1EgT1yZb3f+RpYILwIoEjltc7Six0JgXVmD4hFc\nLP6DmBOfWJ3NpdmK1hBZ8bG9dWtjxwwbiAYKYQ2pve9pllQ7CLmArk418L2L\nLUi3OiapdbBBYciUob7DGiGH3qnMlBAWx7xUwomhUZQQzwymkX2LaWOmwQ93\nen8GyEn7j8T+Y3fKqXxJKfUjkqQAwlYYrdaeGUiUnQ/SF9xsSTJwNTFJGJp1\nDZ1nplLx2WeOLCXsVfsVWNCePQ0w5fdwoQy0RciVmWtOA4LwiURrkpgeS88F\nXdH7axM5DUc+2J/YTw/YXVQ9HA4RYBNJDX4wDP5x69xfSN4ATmIybv3wHe+t\nWfjWcLEDDHNcxcSQJwULiImWeokU2SUQJIeitwbG2el/8wVM3V0IfXT3mYkS\n3JQ0/GEtfPdMw9OAcUqIoULMBhG0zViIAppH0fKcIddRPHUEoAZEQWLVbSUo\nea+txn/YO7920/Mcpm4PEhjngqz5lnXbB3ANccPqJ4gGNprBCUyh5qxy+/AH\nk9E8uolQubUcCajlga6/aUXizZPB4WsMhbapDLVwB/Mb2vJjR6kpUrOhqYen\neTlvcEqmjoyVJqHzn97b+eAEVNsuiBgh0nMeaZiIP6SthrVbyy+Xxq9yAja1\n681u\r\n=NjHM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEaA6af91iArKCL98zTzcSXMwygZCl2rx5GgPCQh3iMzAiARQaDj4MY0CKKns9ptS2buHq+rMQficPpad2qg7g13lA=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.29_1576517210064_0.7378537637093243"},"_hasShrinkwrap":false},"1.0.30":{"name":"bam-for-js","version":"1.0.30","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"ab78a5d46496cf3505f4e6e838ec27717b9c0495","_id":"bam-for-js@1.0.30","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Jd+cTy/5EcBzo6g+AFJPmFHF4e7ccLicf3W1wf/AwEUjjIZ+PPJ7Ejn5iKusjhOecXROb+K7ICkyVbYlqRS9sg==","shasum":"5db559cb32ee30cb43e2cfe62501369a98dc9f72","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.30.tgz","fileCount":3,"unpackedSize":164020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePp0GCRA9TVsSAnZWagAAIeUP/1Nm4wcNVwzCPxXkzqy5\njSygws6dV9NXiVDoeTUNvmve1yRYifK/fSOxR+4iBEHP/kqfwAIzoG31eo/N\npy0G/IvF2s+MqXCQsHfcY3BhUlR12BzXjWciAJ7auKlkVLk/D/ZumK3k2G03\nQ0iet4i30DwpHCRzZ6oQEssIdW7DKCLjIOl5yYFm7hg03MycgOc8UHURMc/7\nPa2Qt8k1lz+oCpDMApzcX3A1bp20LVqJ6yFeBX7nJdtotIZu0Fb6nEKdGcf1\nigxOPJI/NvOLTn5k4NYVvfAgIEkR7pkUJFBqwTRadnqVIP7Z3mgMnLM/oxcf\nRowsSVcOy6qLl/o6EIjSsjbOaFzXmPUjzOr8AuMYbSk9fkCNELQqNjudbn3T\n/YXAzwSFM///bTB12kZlOM4d3PDW6oup0CRUK0fYxgBrtdMRpVZmmy/yeEis\n6K2vzXQsCg2uQFuPVzYXFeA88oUhjcrN65jVdXAlmStUojCU9bo6zSPe9UgR\noCQ5SKDpTdqYgkiJ2YA3bKgC3FP6Vm+3iVtbj47zlrCdcRS4hgyziCiBs0mz\nAg0VFkfv4lB5makCZFO/j4AwcxVfyjXfMzS+8+l0iJdvtSwYBoNKQfjmuLXL\ngGfzfkiSX5coBXPGsHDKZ2AkLbTgH2i8dAqb7sS/H0sRdztDuZWBySoPlhP9\nBeQy\r\n=rNtk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyMoI/XqYMFZBIic4WxmtrWGX18P4uMREqC2XKlo/JGAiASYOi34Adn5LNAqOEv+ujxVU1o64elIoa2br1obcnz8Q=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.30_1581161733743_0.33228449052812414"},"_hasShrinkwrap":false},"1.0.31":{"name":"bam-for-js","version":"1.0.31","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"ff25727df5ef2e2ab6f6e93ada2a01fe1a9217d1","_id":"bam-for-js@1.0.31","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-I7Cj/dEzjkV8+LlEzd0410QAW4XZ+aoTOwVjUELlFPD5qkWvPCIRMDXR/e0TIhKPQP1Qpq1NfupWl9tHesQigA==","shasum":"1fd1bef0d6fe925661f4913834eeb253d94cf84c","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.31.tgz","fileCount":3,"unpackedSize":164012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePqQPCRA9TVsSAnZWagAA+gAP/Rhqb00FxFmbV8PtDWnm\nDDzkO3GZqMRxmIqPy2OPDjcrU35G1tHWLCja4I89q3jT4CXAs9rYjCcSf6hS\nf9ZaEO5ygzjDm306gtA4F27t9K34RxDwlTxqP0s0RKezcKGc1veRk5hysdrb\nETNJa7NKIFTAlpHSRZJej6G2dSuQ8+XP0yBiLEx+X0+f+KC0np0kR9eSPLmG\n0W6J6adH6JmSw3R8M7GPIf76y9FyxSLzmsEeRcXJVaZW6uajpC+YD8wP6fX7\nH4w77fTxVRLSdwsIhvfjdT8hWEEVzgN57Sq13twuG/RyxbtjOs/WhGkS7UJn\nBzQnM6D1Btr9COqQ3kb7lYiU+fFm+9U0eFdNO+PlafSCB9xXOJxaKJlDq/Hm\nBth6OLj5gdUvxQIX4SfGSk7RqJr4tMn0ff9q/pG1TPG5pGHe5K/SC2IXJsWe\nGbLTcwdN1rm3IL726s3lI68AIL4qIomMQv0k3TAiAqPtF+4dgFp5gXzMal9r\nCJpiy6+mEwVGvYRsbRwJJCFUwHMneljDcYsxjeqt3cAi6oEN4Cx9JPYLXm2q\nPVR2/Nrn9q0nWQEgo/6HI/dAfaXcbzw8flCRIbML6jaTJ0H+MfsV7nAHqdkE\nfMEM2hGfT2+BOrfUVxSJh+oeC60JuPmZguTinRjDJLCdhobRBkyhNGO1aEVS\n//UJ\r\n=UJ2s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGwdYis+ptDTvuN0TjPUqTEq0K59ZR1+4kYMMGxRQeWYAiEA3Kmd2RKUQrj8onqDE52q32TJfRDJavONzxLHaMnCkKw="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.31_1581163535317_0.33304002541976296"},"_hasShrinkwrap":false},"1.0.32":{"name":"bam-for-js","version":"1.0.32","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"499c020cbcb9d0a0ed73f3153b21ccdda4fdb6af","_id":"bam-for-js@1.0.32","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-abd1NbMQnz6fyNNwIR1TEgazTCJoQl59efpkzxgSA0g3+OFHeaW/DvQ4GK2rSeRdbTaTUFXM+JZYpiUd5JarPQ==","shasum":"8b96610dda1f20d0add5bd018566e1d2dfe8119f","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.32.tgz","fileCount":3,"unpackedSize":166067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePtf/CRA9TVsSAnZWagAAwyUQAKAMlnm61WfOsJMCQeS1\ndPl9ZO2kJx/THEkG7d8fc+OqG1OCJBFtU3YqIvMHbSTPCMvGFlbgJDyhQWYo\n+pc3EWHfQ3vUrNHh2VaI7M3cj8aITBHHClhZA6GDNiq5rsFwv5CrVXqlAeVi\nGAgLHNKvhu9b1mffwGl+T8U1+tQbGPX5Yc+0SoSoFLUYL2Q+P+fb+0/Q6qyh\nPtDmsantntcxNoOWId7AYPHsH/iDrDeMYztvNbP2sCyJZzLAUDGYfkiyiwLW\nWyNHxpt0TBSyAaIj++SpgpDH1PaFUPTHTZU07Eoe4gwl3OJUwAjvsGOoHx68\nKsIwT5EQ7/l/WFrXcBKvDMvkHuqJ0sdUsThiwh2uzX4VfVodBqhbJdYgF4gG\nvrqy2KtEaGfo3zKJTQ9dZNlaUYSurDqUNVVUG1QiM6310zOlNCCsUDXNhZdL\naqwiMc3rhpuLhAaY1EaJBPje48wZYYosNOG93UC1QNrkqzu3N0zA02lAL3UG\ntcuR2kvhQwmjJJDFUEyPagIeKQ8g2JELkpSeZfr2etH8vx9GCpvAVx1WOxN6\neJeGDOZEcyWhxCQDfIavyaK677aMJRWzqfS6B0iuJg8JQIWytzJE2BlYvt3d\ne8SBQUmBSir1OzDcM8VE7aowRKJIRrdw+GHSqSdYlgiMeKIQMSUWunDpygAy\nY4UC\r\n=sDK1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDos2CRqO7oSG7IgDKN/MrdmcQTxBzHX8l7CYT2BuHaYgIhAMXdhlGuwXTYjRBZcDkmRAHeuuYAqvKWm5979Nodw6iE"}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.32_1581176830732_0.2377018314210455"},"_hasShrinkwrap":false},"1.0.33":{"name":"bam-for-js","version":"1.0.33","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"cbe86874d0e8b586f9cb1ca7ce120c93b035c5b8","_id":"bam-for-js@1.0.33","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1oG4tcdO2VZrmpeUiNL++8c9jem0ycEQhDfncROThoXne2xyOFDef0RdUr193NGIWq0TdL9BlrbWz8S3ofIkmg==","shasum":"d46150bedd4665e878bdc39a05ebb45af18403dd","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.33.tgz","fileCount":3,"unpackedSize":173481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJej35mCRA9TVsSAnZWagAADXYP/1Ls5FChkrgDjzmSXVuW\nPYlwFQ7fIDLOuw8mmXTUcTl0YwXxg1mufgCDKT81Kfgms5OH4i/6xGXCyIDS\n8TUhqH9qv8bBR35GYs85+bcGQLMeeJ3CQR0uCDtU0NHEeM3khuCcj2uVnQkg\n2CIFTeysmFdXm+gNByrsWlQlMlBJx38XY1JCCGEI0E17aUJxV+TGmTZ0xq8U\n3DbQrnNzuj6OppuRX3NvxMZxR4QwQ/y07+IPe9/ZNOY5A4xxjiP7Cl5zxN07\n614/Nh5Ai3D6QDKys7nvU57QSxo6WNbmH8Y7vvJaNE1ehKatOuThSVnwp9D9\nY9lLAnDM54WtB5SFPmTxLmIDVVigDVSw1DwWo339/Ogt6bc6p0gWRC/bBuWA\nDGjTIBq2h1pdHg86uo9g5QlQdLIb3fGZgyul/+j/3RmAjOSba4tjAe+VUtac\nrxo6rKLQRLBnJQsUMCIolt6GJbuWBmddvkyhLGBY8PR0eklEv0PlrrGtMbvX\nVa49GywpNqfIIURarHBfqF+CIKG2wf0goieqKI4lcc3zN1wZc015zdccQLQ8\n8n5gfiyh/U0bGJ/c4rLj8TecNbcAOrC6X4hhtJc4nTStL5ryKigRwqtLg0xg\nem6Vzu0uYTo2hhZPR7tyHtqeHagZsgHO8Cc8rymkW0pI+QCPDiL9n87MlWtH\nD4mf\r\n=+U5k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIERILQwcWra7J8II25M/oBM+RXFLm3Tnm1NEV3GgiyZOAiBDX/k14oJDI+S4FWxVipRko8nDs3cVi7EicJkC+EaW4A=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.33_1586462309549_0.3502071042277013"},"_hasShrinkwrap":false},"1.0.34":{"name":"bam-for-js","version":"1.0.34","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"66050a79fecfc8b6ffed7d3dd271f616ae9a6399","_id":"bam-for-js@1.0.34","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Kd89Fze52scB3H9vwU6SUucwGM9+otmBlrPGyXr6nZZYz+5pTK6J6FLGw1qgZF0Swykz/IC+H1zxlyA7EDu0ZA==","shasum":"3bde796fc316d94b6718c1426fc5faea1b6a2c30","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.34.tgz","fileCount":3,"unpackedSize":174252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelQhZCRA9TVsSAnZWagAAZogP/AjSYPGukmp4puQXQc8S\nVDZ/ZBVstsB77VxhJ08wolmeBGlicYBio129JjoPOKvwmTgenZelUze6UUxA\nS0lx0L+FrehxK3XHDAM7icqpy31wOI7JArxkUSfTgmJSszXSBuM8gkaRjnWo\nPdqq1vds2dFCmHFX6Zhxm33h/+5hLqWHDTK4tGaIQmtAWut0WYDI/3+fOK6n\ncf8W0/QV/+gjBvkFc+WVwoxJZfUDR/KmBeDUyS7rGMinRmB5gv6PelOE7tfc\nL3BPrYbAMfyOeaEuYj/zRpkiXRkpP23YURoIvnqwFmzrnE6zNFCXu93VQzJE\nYStJV9rOymXG8sUnmfw1wdDqzBL4j5QClsjrQHNYCaKnMbgreU4suGg4bCYz\nsw5AQOOjd+KojRFpyhtFM+HbiXYj9yTVrQtLqFArUAVt6LhuIFf0PhqsVH89\nKRnv2zyq4d3ATWcUJR6YzaZ90C2nbbbDdvKmmJD6sfNgXe58pB7sSEecDRWF\nzlTkUsbOHShrItOEuZhdZ7vwPx5HvOVtsHXGyvbgxpsSBn7AGMGXKobBWAFx\nDf6HNES58MOlyMElps8OHh6u13sKxITehpkeayXWID5kKHM4bSONDKbA24XH\ntdNARE9e70QwI98DuFfvIPKStGokYSyMEPzN2XxxC0ymuPy6cjvS9K4LKwwF\nx7VJ\r\n=x0EB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+qNnfRAS3wOTllmGhV/VMpQn0VQkdIyOj9LvKNBorXAiA+feDIlXrMTdE98gZblUKP1XoTepRqXgBE1hf2KmoDjw=="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.34_1586825304653_0.3396004990061203"},"_hasShrinkwrap":false},"1.0.35":{"name":"bam-for-js","version":"1.0.35","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"271534c030b7f3eed3c21ff7bb8adcd7fd229856","_id":"bam-for-js@1.0.35","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-92XWC1yWweGbPRF2lEH7RiWe9zKH1Ohfsu+EvSBwoVWNI9xC0ZX+RtEqtbqeqmFg1mS2HkNwujhK+bSGGX0ubg==","shasum":"dcca752a8ab111e70bd057f1acaff1fcd4ac2571","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.35.tgz","fileCount":3,"unpackedSize":174252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelQimCRA9TVsSAnZWagAAmk8P/iKFtAIJ1RPZGe/0us59\nCt1qyOe0Z7hFgRjNBsQoEwGyP+Knuw2tt6vdjWEvKYkI+Q9uB/1nqvrbErlP\nm8b4PLJVK0KNQP2sYWxROg2weE8N4kTj8/8zipgoRo6GsTQHn2hCqlTXurCd\nEYRgzEMAJb5H8rMpFipez+70Z70k+ivGZUCXjgEYcYMML80ENTwSSwYKLWGI\np4LkAuYhMFfy5TrWOk+PARKlgcdFU0kNvgriZPunAufGFaK74O3baml4laNw\n/j6EwwRrB4lSh7d2fDYTr5h1GXXeY31AXzzPLxD6gVL2DFTlwYL10Hhv/Arl\nuNFJcjGLuEh1UdZSDthsIqYrhqXwaV7JJvU89Wf27zlEbyPT4fahSmY8wwn5\nuqbfvrYRx24KUsIMqMjd2JfscizfBnWTJkY7BF/yDVC+ejacALVgwhWmg/qt\nMXs3Q2SVMoWBalEhLUouETIlwPOIrS/kB+bu2y474SBy4C/D3K1VQctdJuwT\n7stheLsxjD2MLdB6B8azOp3Lfqu3MuSG01oPehcNOU+3QfPxqps0as01zLnG\nLTTkQhyhdKgHHnJWWTgYY9HWxe272ZoWa0XTFInaatMKKPY4y1pRgylsSrqO\nuGc4atZvsQF5uS2yooBOtcodnL3MVsHLP9qpgEi7vDw0OvRkGg7b2HquLmOm\nooo6\r\n=NG0i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlBOTv31NEb1Q1w2+qxTfJ6mRxjJRDNYMK3EUdu+ZOEAiEA8WjFX5FB3Xou2L8k1Jrvj4FPm6xgVml0Xzxr3AfZ4fs="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.35_1586825381562_0.04222787134031458"},"_hasShrinkwrap":false},"1.0.36":{"name":"bam-for-js","version":"1.0.36","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"f8a9f16454aec887f722a6f501c051ff5b6fe061","_id":"bam-for-js@1.0.36","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-QRlWyNYBzqfo4cPEq5H3hhTEQCQFRouTPrOwq38BJnx3HaX4ofEOoqRFuXVsrvxkpYpBW0cFnc5Sa0i9RUrdUQ==","shasum":"23eb336dca2f22ee61814d76f7a8b55440984123","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.36.tgz","fileCount":3,"unpackedSize":175678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerENMCRA9TVsSAnZWagAA6/AP/AlIAUux8mdQKyKFl9GK\nPffHiQLkBBbiUdcio0jfK1rPWfdAH+ULNr5nh9JNvvWhSp+vdsByeA81DSbb\nHcnK3uEgUt0GHjR2AetllQBxuoRRTMqNUqryOiRT57H4syZfySyYGcsQkcwp\nc2+sRqHg3CMkdzdQuHpLIUge68wVmWjgbM5q5ZBRwKVfFe7WtFexJwJCxhYY\nVqGhncVHlzfbZe0MVMBrjm9LiRHygH9p8n955AOkPwkas/kEaCesupJZ9PgT\niQC+vQd5c5DpXCEnNxePfklIATSBx2/4ZFvZynOgpoYmVHdMvEhuaLu9nzUO\nE7poyGlFgJjDDJvRZIa70HbWUJVtUB3san3ukd+LDo+0HHIziXPf173TySIp\n2bd1apDC59Bx4TrBTYKfJ23goIX9eVnTHreIix4Eqnge7rmHn8VNZaR9GYWw\ne6LTyq3miE6grSQ24G+vI4pRXe5qNRb1QV9CYY5vKYGTEl1dllQEAeWSwCBu\nA/ZiQrEmPOYkez/FgLcotHvLnINtkIypa80URqxBUM2Tv0LZReRxZjetB/pC\n4KkoKT3oYm8TRTrttMUkn1v0OffeOBW7NoMFyJbSFhOlnBPiY4sVg3538Ym3\n5suhsRYcx3UyJKxSQnHU8lh+nWg3TbHGL6q7bKv8ZjR9aSNzmpDK2ewmdt/O\ngwAO\r\n=kx60\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQDtVswNnbOg1nH/UiGq2l7mVKgbpUEoIfBI35KaDKLAiEAwut/QXOuCEtXE4RwS5LUu2L9N6pmoz0ldiTg2l8Fen8="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.36_1588347724244_0.3929747152476042"},"_hasShrinkwrap":false},"1.0.37":{"name":"bam-for-js","version":"1.0.37","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"7c4050339726bf36d86a4e20e1d8cecd64bab6a4","_id":"bam-for-js@1.0.37","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-AI6Z55JoXieP5BNMpJ67V8wHzjhiYYEHcv7o70TS9JefI3U9QDQJJ5V6OEt/u42qEG+KWYkiliMLUvtTb+F98Q==","shasum":"0bfe6efe4ba3b52c8a31e25bfcebcac1ee63ce9c","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.37.tgz","fileCount":3,"unpackedSize":176573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetZmeCRA9TVsSAnZWagAAoaIP/389+xrGptRYKQuCv7eb\nSSp2Djgr/yjYZSf71BxarsDw9fqwz7p1H+4QFtQYIEpvyDF34XOiJ4OSX9uB\nhR62NiQJp3eM9Z1dq7Ef0ZJM0mJgtMZxQ1JAI2jiN4LB8VPE47oO6MxZXdyF\nNGRYLbRgPdSWRa1igdH33YQRb4kFz+LmdpR0uDeBrRgQok6MYxJuf+S5DASV\nqvuUzxL86j9yEUy75Bfwwv1GrvARXfyymhu6X/eECIS3erP8uO/F1TUaWguG\n6/mprlnqeSFskNOxGZR7r8/jfJifh8XNmQDJsUPxsqvwt8hAln7RC5giTnDE\nzfMMekEj76OoRkKjVHQXN+9rt2GTXRVm3cbAHrT+576EUOFYO5A+hX3BkXPH\n9D7n5P4ZQI+gMpcO8oAT0oyl5W9X9FdINrY3NstYHEPM8DG92DqJfAcorLeE\nQzd1gVLEoaTcEP9AG35dnfH/NgsO8Fw+00eLTVV7TS8AoBRWIthDDdXHBpnE\nSfV0Q8Gx3j2AD1IPorwgRZNsNgjmg1B60NnKZ04VXBjDcO64D4o0xnklOJrY\nWoTHwGcvOATi0yXARBxCHSMG1bcmid0qd94/Q1fC6qOdY43jZC5XeSoItYeE\ngxophR6fBytACRi5qJZUspOiGFewonmJU6vPDw9uSs5EkAyaJABV/dHZ3EPi\nhhaQ\r\n=llNv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzKstBxGFgvw1v9H1B+TMSFRbAZZ7kyqAF8JsBQfQiDAiEAjtWED7cgVQay1y63SsCd3JARCNaOOJrBsyDeMVrTHQU="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.37_1588959645436_0.8849776016589481"},"_hasShrinkwrap":false},"1.0.38":{"name":"bam-for-js","version":"1.0.38","description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","main":"bam.js","scripts":{"test":"node bam-test.js"},"keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"homepage":"https://github.com/MikaelMayer/bam-for-js","bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"},"dependencies":{},"gitHead":"e6c296b69f4b6e1eeb1cb16c2ae20c74545ed036","_id":"bam-for-js@1.0.38","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-QSegxl9tV3P9xlYlmxUh3k7xGU/dWKM2YRUQRkZBMSRgw4i9GE9OPEff32C16Yf1tLmvUZ9fxzCfUvoMyvZalQ==","shasum":"b91465c6150161f913eff7dd8b21bfacc47c3f51","tarball":"https://registry.npmjs.org/bam-for-js/-/bam-for-js-1.0.38.tgz","fileCount":3,"unpackedSize":176584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyBl4CRA9TVsSAnZWagAAPN4P/0bd3zTvsFtHD6FDAoCP\nOZVKNsX6mv30tS8KNeSqc5pRa6xz5nARtWb1iOE97HIZ+8CZ1Dsn6y9bwsox\nk+k1GGO0Rmpj7ZtENgBj+4Vxuh8BvfPHgvwKq9qD0rZMTVBvtUDUL/ELNf/1\nZ5tF4Bx2mqzjHa+8etQ8kgj7R9rsPZNECi1z327XwoyuTAa+Q7yBs6S0pdE/\njyprYuglsHgSsbo0X8haK/QVD+a18jNFQt8kez7Hc+XCUUdfnZqK0QisZO61\nzbavzbHxJNskhINmfYJIDUkZ1YtKd9r/POwfcRF0LVh+u2XoIlsEN+2udpI/\nRivvLsB0x8bFuqyDDd1pPx+zA4LyCuB1FDQNMke4O46dG8DvpC876R8XvyXb\nvsrzo1C7UTTVzCkRqpqK2wf+9kRfM1uYeGcWGaz9sX89tTZLdV/jsVoatr+f\neaB3T73D5x8wtV0lMG4trE4PNY6MO6QOT9KTUkTT7jEVAtSUQJRgaHbQTf67\n9F7IQqg7wzalWHeyZzOFJ3N1iD9wu5S62fsMvw+tUnuKb0d1FoXjzFCaWkCh\n/b4hf6Vylx5QvIibYKbwNTMW0ctIpUgUWH/tY0rx0L5x6CS8rOFXj+o/s/i5\nWDdkdX8UzaUyUkAvpk5wYSATiRzJy69Lui6RNpVGkrk3A1ZMIt1N9TvL2I/P\n5WW4\r\n=liLV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDIpdQuDVsvsXLB3wQiMoCciLkD1wtAk2ZPZs9E3BtjwIgIv9qwEUZgUaGeiiYvtiMKu8ZHZ393DRAcm/Lb/sHoS0="}]},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"_npmUser":{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bam-for-js_1.0.38_1590172023086_0.8737406299944024"},"_hasShrinkwrap":false}},"time":{"created":"2019-09-30T17:43:30.083Z","0.0.1":"2019-09-30T17:43:30.290Z","modified":"2022-04-11T16:58:45.112Z","1.0.0":"2019-10-01T13:44:18.120Z","1.0.1":"2019-10-01T19:29:31.893Z","1.0.2":"2019-10-01T21:42:44.713Z","1.0.3":"2019-10-01T22:00:01.993Z","1.0.4":"2019-10-02T19:14:44.843Z","1.0.5":"2019-10-02T19:24:59.674Z","1.0.6":"2019-10-02T19:31:02.573Z","1.0.7":"2019-10-02T19:33:14.273Z","1.0.8":"2019-10-02T19:41:08.711Z","1.0.9":"2019-10-02T20:56:29.228Z","1.0.10":"2019-10-03T15:11:33.537Z","1.0.11":"2019-10-03T15:30:19.475Z","1.0.12":"2019-10-03T18:49:58.728Z","1.0.13":"2019-10-08T21:39:24.535Z","1.0.14":"2019-10-10T15:35:11.204Z","1.0.15":"2019-10-11T05:35:05.386Z","1.0.16":"2019-10-11T15:27:30.918Z","1.0.17":"2019-10-11T15:43:10.263Z","1.0.18":"2019-10-11T19:35:44.980Z","1.0.19":"2019-10-25T16:45:24.475Z","1.0.20":"2019-10-25T16:53:50.724Z","1.0.21":"2019-11-04T14:06:21.147Z","1.0.22":"2019-11-04T14:10:09.803Z","1.0.23":"2019-11-04T14:44:16.824Z","1.0.24":"2019-11-05T15:12:51.640Z","1.0.25":"2019-11-07T05:51:09.860Z","1.0.26":"2019-11-12T15:43:33.889Z","1.0.27":"2019-12-12T12:30:52.099Z","1.0.29":"2019-12-16T17:26:50.221Z","1.0.30":"2020-02-08T11:35:33.911Z","1.0.31":"2020-02-08T12:05:35.457Z","1.0.32":"2020-02-08T15:47:10.927Z","1.0.33":"2020-04-09T19:58:29.760Z","1.0.34":"2020-04-14T00:48:24.790Z","1.0.35":"2020-04-14T00:49:41.832Z","1.0.36":"2020-05-01T15:42:04.363Z","1.0.37":"2020-05-08T17:40:45.567Z","1.0.38":"2020-05-22T18:27:03.214Z"},"maintainers":[{"name":"mikaelmayer","email":"mikael.mayer_npm@m4x.org"}],"description":"Library for building reversible interpreters by converting them to Bidirectional Abstract Machines.","homepage":"https://github.com/MikaelMayer/bam-for-js","keywords":["bidirectional","abstract","interpreter","evaluator","ast","rewriting","reversible","back-propagation"],"author":{"name":"Mikael Mayer","email":"mikael.mayer@polytechnique.org"},"bugs":{"url":"https://github.com/MikaelMayer/bam-for-js/issues"},"license":"MIT","readme":"# bam.js\r\n\r\n*bam.js* is a JavaScript implementation of an Edit Action language.\r\nIt's a way to summarize how to transform data in another format, which makes it suitable for reversing changes.\r\nIt makes it easy to create and maintain reversible interpreters written in JavaScript.\r\nIt features:\r\n\r\n* An edit action language\r\n  - Easy-to-use constructs for deterministic and non-deterministic (i.e. with variants) rewriting of records and primitives.\r\n  - Operations to compose, merge and reverse these edit actions\r\n* Documentation\r\n  - How to transform an interpeter into a \"Abstract Machine\"\r\n  - How to transform an \"Asbstract Machine\" to a \"Bidirectional Abstract Machine\"\r\n  - Examples\r\n\r\n# Sandbox online\r\n\r\nThe [sandbox](https://mikaelmayer.github.io/bam/sandbox.html) is a nice place to experiment with BAM. Click on the buttons to apply edit actions to objects, and to back-propagate edit actions from edit actions.\r\n\r\nTo illustrate the example explained in details below:\r\n* Put `{a: 1}` in the top left box\r\n* Put `New({b: Reuse(\"a\"), c: Reuse(\"a\")})` in the top middle box\r\n* Press the button `bam.apply(evaluation step, program)`.\r\n* Now in the bottom right box, replace the program with `{b: 2, c: {d: 1}}`\r\n  The middle right box is filled automatically\r\n* Press the button `user step' = backPropagate(evaluation step, user step)`\r\n  The middle left and middle bottom boxes are filled automatically.\r\n\r\n# Quick node.js install\r\n\r\nRemove the -g parameter to install it for a single node project:\r\n\r\n    npm install -g bam.js\r\n\r\n# Learn BAM from Examples\r\n\r\nBAM handles ***trees*** whatever they might represent. BAM does not care about the fields names, just that every object is a tree whose children are labelled by field names.\r\n\r\nHere are the most basic two examples. The `New()` operator creates something from scratch, and the `Reuse()` operator reuses the previous tree:\r\n```\r\napply(New(\"x\"), {a: {}, b: \"cd\"}) == \"x\"\r\n\r\napply(Reuse(),  {a: {}, b: \"cd\"}) == {a: {}, b: \"cd\"}\r\n```\r\n\r\nWe can nest these operations to get more advanced transformations: `Reuse` can take an argument which is an object whose fields indicate which fields should be changed and how:\r\n\r\n```\r\napply(New({x: New(\"y\")}), {a: {}, b: \"cd\"}) == { x: \"y\" }\r\n\r\napply(New({x: Reuse()}),  {a: {}, b: \"cd\"}) == { x: {a: {}, b: \"cd\"} }\r\n\r\napply(Reuse({a: New(x)}), {a: {}, b: \"cd\"}) == {a: \"x\", b: \"cd\"}\r\n```\r\n\r\nWe can also reuse elements down the tree by providing string arguments to `Reuse`:\r\n\r\n```\r\napply({Reuse(\"a\"), {a: {b: 2}})      == {b: 2}\r\n\r\napply({Reuse(\"a\", \"b\"), {a: {b: 2}}) == 2\r\n\r\napply({Reuse(\"stack\", \"hd\"), {stack: {hd: {ctor: \"hello\"}}}) == {ctor: \"hello\"}\r\n```\r\n\r\nWe can also reuse elements up the tree by providing the keyword `up` to `Reuse`:\r\n\r\n```\r\napply({Reuse({a: Reuse(up, \"b\")}), {a: {}, b: \"cd\"}) = {a: \"cd\", b: \"cd\"}\r\n\r\napply({Reuse({stack: Reuse(up, \"state\", \"hd\")}), {stack: 1, state: { hd: 2} }) = {stack: 2, state: { hd: 2 } }\r\n```\r\n\r\n# Language API\r\n\r\n## Deterministic Edit Actions\r\n\r\nThe standard way to express how to transform a record into another is to create a \"Deterministic Edit actions\".\r\nA deterministic edit action is either:\r\n- Create a new object, whose fields are also edit actions (`New`)\r\n- Reuse an object existing at a relative path from the location,\r\n  modifying a subset of its fields by other edit actions (`Reuse`)\r\n- Create a new object with a way to explicitely reuse some field ranges (`ReuseArray`)\r\n  which is especially useful for arrays or strings whose field names are numbers.\r\n\r\nDeterministic Edit Actions are well suited to represent what an evaluator step did on the input.\r\n\r\nIn this section, all functions are accessible under `bam.*`, for example `New` means `bam.New`.\r\n\r\n## `New`\r\n\r\nFor primitives, `New()` takes one arguments:\r\n\r\n    apply(New(1), 42) == 1\r\n    apply(New(true), 42) == true\r\n    apply(New(\"abc\"), 42) == \"abc\"\r\n\r\nFor records, `New()` takes a record whose values are edit actions:\r\n\r\n    apply(New({a: New(1)}), 42) == {a: 1}\r\n    apply(New({b: New(1), c: New(3)}), 42) == {b: 1, c: 3}\r\n\r\n`New()` can also take an extra argument which is the skeleton it should build the value from.\r\n\r\n    apply(New({a: New(1)}, {b: 3}), 42) == {a: 1, b: 3}\r\n    apply(New({}, {a: 1, b: 3}), 42) == {a: 1, b: 3}\r\n    apply(New({}, {b: 1, c: 3}), 42) == {b: 1, c: 3}\r\n\r\nThis is especially useful in the case of arrays or JavaScript Maps.\r\nBy passing an array or a Map as the second argument,\r\nthe record of edit actions will be interpreted as actions to perform on the provided array or Map:\r\n\r\n    apply(New({0: New(1)}, []), 42) == [1]\r\n    apply(New({1: New(3)}, [1]), 42) == [1, 3]\r\n\r\n    apply(New({1: New(3)}, new Map()), 42) == new Map([[1, 3]])\r\n    apply(New({2: New(5)}, new Map([[2, 4], [1, 3]])), 42) == new Map([[2, 5], [1, 3]])\r\n\r\nThe reason to provide a non-empty Map as a skeleton is that it keeps the key ordering.\r\nNow that we know how to create new values from scratch using edit actions, we'll see in the next section how we can reuse values.\r\n\r\n## `Reuse`\r\n\r\nTo reuse a value, we build `Reuse()` with one argument, which is a record of edit actions that should apply on the modified fields.\r\n\r\n    apply( Reuse({c: New(4)}), {a: 1, b: 2, c: 42} ) == {a: 1, b: 2, c: 4}\r\n    apply( Reuse({1: New(54)}), [40,30,90] ) == [40,54,90]\r\n    apply( Reuse({key: New(true)}), new Map([[\"key\", false]])) == new Map([[\"key\", true]])\r\n\r\n`Reuse()` should not be used to create new keys, only modify existing ones. To add numeric keys while keeping previous keys the same, it can be useful to look at the ReuseArray below.\r\n\r\n`Reuse()`'s first arguments can also be a path, which consists of a comma-separated list of either the special string `\"..\"` also named \"up\" (up the tree), or other strings or numbers (down the tree), or arrays of these.\r\nIn this case `Reuse()` will fetch the tree pointed to by the path before applying its edit actions:\r\n\r\n    apply( Reuse(\"b\"), {a: 1, b: 2, c: 42} )                   == 2\r\n    apply( Reuse([\"b\", \"c\"], \"d\"), {a: 1, b: {c: {d: 42}}} )   == 42\r\n    apply( Reuse({c: Reuse(\"..\", \"b\")}), {a: 1, b: 2, c: 42} ) == {a: 1, b: 2, c: 2}\r\n    apply( Reuse({c: Reuse(up, \"b\")}), {a: 1, b: 5, c: 42} )   == {a: 1, b: 5, c: 5}\r\n\r\nOne can call `Reuse()` with both path elements and the edit actionr record argument to obtain clone-and-modify behaviors:\r\n\r\n    apply( Reuse({c: Reuse(up, \"b\", { x: New(2) })}), {b: {x: 1, y: 3}, c: 42} ) == {b: {x: 1, y: 3}, c: {x: 2, y: 3}}\r\n\r\n\r\n\r\n### `path` for `Reuse`\r\n\r\nInstead of providing the list of path elements, it's also possible to provide a single `path` value.\r\nA `path` is a special record of type:\r\n\r\n    {up: number, down: List String}\r\n\r\nFor example, the path `\"..\", \"b\"` can be represented as\r\n\r\n    {up: 1, down: List.fromArray([\"b\"])}\r\n\r\nThe `path` function enables to build such paths by combining paths and path elements.\r\nArrays are exploded to single paths or path elements.\r\nThe path above could be computed in all the following ways:\r\n\r\n    path(\"..\", \"b\")\r\n    path(\"..\", [\"b\"])\r\n    path([\"..\", \"b\"])\r\n    path(path(\"..\"), path(\"b\"))\r\n    ...\r\n\r\n## ReuseArray\r\n\r\nIn the case of records with consecutive numeric keys (arrays, string or even user-defined records like an \"heap\" in an interpreter), the `ReuseArray` edit action splits the original array into two, apply its two edit actions respectively to apply each part, and recombine the result.\r\n\r\n    ReuseArray(count, editAction1, editAction2)\r\n\r\nFor example, if for two edit actions E1 and E2 we have:\r\n\r\n    apply(E1, [1, 2, 3]) = [6]\r\n    apply(E2, [4, 5]) = [5, 4]\r\n\r\nthen\r\n\r\n    apply(ReuseArray(3, E1, E2), [1, 2, 3, 4, 5]) = [6, 5, 4]\r\n\r\n**Cloning path**\r\n\r\nIt is possible to clone another array instead of modifying the current one.\r\nFor that, just include a path right after `ReuseArray(`, or some path elements like `up`, numbers, paths, strings, or array of these, just as for Reuse.\r\nThe last number is considered to be the split count and is not part of the path.\r\n\r\n    apply(Reuse({a: ReuseArray(up, \"b\",  3, New([]), Reuse())}), {a: 1, b: [1, 2, 3, 4, 5]})\r\n    = {a: [4, 5], b: [1, 2, 3, 4, 5]}\r\n\r\n**Syntax shortcut**\r\n\r\nAs a shorthand, we enable\r\n\r\n    ReuseArray([path, ] count1, e1, count2, e2, count3, e3, e4)\r\n    \r\nto represent\r\n\r\n    ReuseArray([path, ] count1, e1, ReuseArray(count2, e2, ReuseArray(count3, e3, e4)))\r\n    \r\n**Cloning up**\r\n\r\nOnly the first nested `ReuseArray` increases the context stack length by adding the top-level array.\r\nAll consecutively nested `ReuseArray` only modify further the portion of the array being considered.\r\nTherefore, whatever number of ReuseArray, only one \"up\" is necessary in a clone path to access the entire array from any sub-array.\r\nIn the following example, only two `up`s are required to access the entire array from the element `\"d\"`, despite the intermediate windows [\"c\", \"d\", \"e\", \"f\"] obtained after splitting the first array at index 2 and taking the second half, and [\"c\", \"d\", \"e\"] after splitting the second array at index 3 and taking the first half.\r\n\r\n    apply(ReuseArray(2, Reuse(), ReuseArray(3, Reuse({1: Reuse(up, up, 5)}), Reuse())),\r\n      [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"])\r\n    = [\"a\", \"b\", \"c\", \"f\", \"e\", \"f\"] \r\n\r\n**Full example**\r\n\r\n\r\nHere is an illustrative example, featuring deleting, keeping, cloning, inserting, and moving:\r\n\r\n    var prog = [\"To move elsewhere\", \"Keep\", \"Keep with next\", \"Keep and to clone\"};\r\n    \r\n    var step = ReuseArray(\r\n        1, New([]),                            // Deletes 0\r\n        1, Reuse(),                            // Keeps 1\r\n        0, New({0: Reuse(up, 2)},[]),              // Clones the field 3 before 2\r\n        2, Reuse(), // Keeps 2 and 3\r\n        0, New({0: Reuse(up, 0)}, []),         // Move the field \"0\" there\r\n        0, New({0: New(\"Inserted at end\")}, []) // Inserts a new value\r\n      );\r\n    \r\n    var res = apply(step, prog);\r\n    console.log(res);\r\n    // Displays\r\n    // {0: \"Keep\", 1: \"Keep and to clone\", 2: \"Keep with next\", 3: \"Keep and to clone\", 4: \"To move elsewhere\", 5: \"Inserted at end\"}\r\n\r\nNote that `ReuseArray(n, edit action, m, edit action, X)` is a shortcut for `ReuseArray(n, edit action, ReuseArray(m, edit action 2, X))`.\r\n\r\nThe meaning of `ReuseArray(n, edit action, X)` is to consider the first n elements of the provided array extract, apply the given edit action to the sub-array and concatenate the result with the result of applying X to the remaining view of the array.\r\nSimilar to `Reuse`, `ReuseArray`'s argument list can be prefixed with as many path elements as needed, but these path elements should not be numbers as the first number indicates how many items to extract.\r\n\r\n**Caching output length**\r\nIf you happen to use `ReuseArray` or `Reuse` with a path inside a `ReuseArray` edit action named `e1`,\r\nyou will have to wrap the edit action like `bam.setOutLength(e1, count)`, where count is the length of the edit action.\r\nThe reason is, merging algorithms require this length to determine whether or not edit actions are \"aligned\".\r\n\r\n\r\n### Special case: Strings\r\n\r\nStrings can be treated either as primitives (for a full replacement regardless of how the string was edited), or using the `ReuseArray` described before.  \r\nFor example, to transform:\r\n\r\n    \"Hello world! ?\"\r\n    \r\nto\r\n\r\n    \"Hello big world, nice world! ??\"\r\n\r\none can use the following edit action\r\n\r\n    ReuseArray(\r\n      5, Reuse(),                       // \"Hello\"\r\n      6,                                // \" world\"\r\n        ReuseArray(\r\n          0, New(\" big world, nice\"),   // insertion\r\n          6, Reuse()                    // \" world\"\r\n        ),\r\n      2, Reuse(), // The string \"! \"\r\n      0, New(\"?\"), // The inserted string \"?\"\r\n      1, Reuse()\r\n    )\r\n\r\n## Custom lenses\r\n\r\n`bam.js` supports a custom kind of user-defined lens. Here is an example on how to define a reversible addition that backs-propagates the diff either to the left or to the right:\r\n\r\n    > var plusEditAction =\r\n        Custom(bam.Reuse(\"args\"),\r\n             ({left, right}) => left + right,\r\n             function(outputDiff, {left, right}, outputOld) {\r\n               if(outputDiff.ctor === bam.Type.New) {\r\n                 let diff = outputDiff.model - outputOld;\r\n                 return nd.Reuse({left: nd.New(left + diff)}).concat(nd.Reuse({right: nd.New(right + diff)}));\r\n               } else {\r\n                 console.log(stringOf(outputDiff));\r\n                 throw \"Unsupported output edit action for the + operator\"\r\n               }\r\n             });\r\n\r\n    > bam.apply(plusEditAction, {type: \"Add\", args: {left: 1, right: 3}});\r\n    4\r\n\r\n    > nd.backPropagate(plusEditAction, nd.New(5));\r\n    [Reuse({args: [Reuse({left: [New(2)]})]}),\r\n     Reuse({args: [Reuse({right: [New(4)]})]})]\r\n\r\n## Language API: Non-deterministic variants\r\n\r\n`nd.New`, `nd.Reuse` and `nd.ReuseArray` are the non-deterministic variants of the constructs mentioned above.\r\nNon-determinism means that wherever edit actions were needed in argument, arrays of edit actions should be used,\r\nand these `nd.*` constructs all return an array of edit action.\r\nThe original edit actions are useful to describe unambiguous interpreter steps,\r\nwhereas the non-deterministic variant is useful to describe the ambiguous user-defined transformations.\r\n\r\nExample:\r\n\r\n    `nd.New(42)`\r\n    `nd.Reuse(1)`\r\n\r\nNon-deterministic edit actions can be combined using the `nd.or` operator -- or the JavaScript's native concat operator:\r\n\r\n    `nd.or(nd.New(42), nd.Reuse(1))`\r\n    `nd.New(42).concat(nd.Reuse(1))`\r\n\r\n\r\nFor example, a more complete non-deterministic edit action associated to the transformation of the string:\r\n\r\n    \"Hello world! 1\"\r\n    \r\nto\r\n\r\n    \"Hello big world, nice world! ??\"\r\n\r\none can use the following edit action:\r\n\r\n    nd.ReuseArray(\r\n      5, Reuse(),\r\n      6, nd.or(                         // \" world\"\r\n        nd.ReuseArray(\r\n          0, New(\" big world, nice\"),   // insertion\r\n          6, Reuse()                    // \" world\"\r\n        ),\r\n        nd.ReuseArray(\r\n          1, Reuse(),                   // \" \"\r\n          0, New(\"big world, nice \"),   // insertion\r\n          5, Reuse()                    // \"world\"\r\n        ),\r\n        nd.ReuseArray(\r\n          1, Reuse(),\r\n          0, New(\"big \"),\r\n          \r\n        )\r\n        )\r\n      2, nd.Reuse(), // The string \"! \"\r\n      1, nd.or(\r\n        nd.ReuseArray(\r\n          0, New(\"?\"),\r\n          1, Reuse()\r\n        ),\r\n        nd.ReuseArray(\r\n          0, Reuse(),\r\n          1, New(\"?\")\r\n        ))\r\n    )\r\n\r\nThere are several ways to apply a non-deterministic edit action to a program, depending on the expected result.\r\n\r\n1. To obtain the first result, just use `nd.apply`\r\n\r\n       `nd.apply(nd.or(nd.New(42), nd.Reuse(1)), [41, 43]) == 42`\r\n\r\n2. To obtain the last result, use `nd.apply` and provide `true` as an extra argument:\r\n\r\n       `nd.apply(nd.or(nd.New(42), nd.Reuse(1)), [41, 43], true) == 43`\r\n\r\n3. To list all results, use `nd.applyAll`:\r\n\r\n       `nd.applyAll(nd.or(nd.New(42), nd.Reuse(\"b\")), {a: 41, b: 43}) == [42, 43]\r\n\r\n4. To list all results as a record where all fields are arrays of possibilities, use `nd.applyVSA` (VSA stands for Version Space Algebra):\r\n\r\n       ```\r\n       nd.applyVSA(nd.or(nd.New({b: nd.or(nd.Reuse(\"a\"), nd.New(43))}),\r\n                         nd.New({c: nd.Reuse(\"a\")})), {a: 42}) == [{b: [42, 43]}, {c: [42]}]```\r\n\r\nNote that the last will fail in the case of a non-deterministic `nd.ReuseArray` applied to a string. Use one of the other three versions instead.\r\n\r\n## Compute edit actions automatically\r\n\r\nbam.js has some support to compute deterministic and non-deterministic edit actions from two values. Here is how it works:\r\n\r\n    > bam.diff(1, 2)\r\n    New(2)\r\n    > bam.diff(1, 1)\r\n    Reuse()\r\n    > bam.diff(1, [1, 2])\r\n    New({ 0: Reuse(), 1: 2}, [])\r\n    > bam.diff([1, 2], 1)\r\n    Reuse(0)\r\n\r\nIt is also possible to ask for all edit actions it can find:\r\n\r\n    > bam.nd.diff(1, 2)\r\n    [New(2)]\r\n    > bam.nd.diff(1, 1)\r\n    [Reuse()]\r\n    > bam.nd.diff([2, 1], [1, 2])\r\n    [Reuse({0: [Reuse(up, 1),\r\n                New(1)],\r\n            1: [Reuse(up, 0),\r\n                New(2)]}),\r\n     ReuseArray(0, [New({ 0: [Reuse(up, 1),\r\n                              New(1)]}, [])],\r\n                   [ReuseArray(1, [Reuse()],\r\n                                  [New([])])]),\r\n     ReuseArray(1, [New([])],\r\n                   [ReuseArray(1, [Reuse()],\r\n                                  [New({ 0: [Reuse(up, 0),\r\n                                             New(2)]}, [])])]),\r\n     New({ 0: [Reuse(1)],\r\n           1: [Reuse(0)]}, [])]\r\n\r\nIt's possible to add options as the third parameter.  \r\nThe option `onlyReuse` (default: false) prunes out all New solutions if there are solutions that use Reuse:\r\n\r\n    > bam.nd.diff([2, 1], [1, 2], {onlyReuse: true})\r\n    [Reuse({0: [Reuse(up, 1)],\r\n            1: [Reuse(up, 0)]}),\r\n     ReuseArray(0, [New({ 0: [Reuse(up, 1)]}, [])],\r\n                   [ReuseArray(1, [Reuse()],\r\n                                  [New([])])]),\r\n     ReuseArray(1, [New([])],\r\n                   [ReuseArray(1, [Reuse()],\r\n                                  [New({ 0: [Reuse(up, 0)]}, [])])])]\r\n\r\nThe option `maxCloneUp` (default: 2) specifies the number of maximum depth traversal when going up, when looking for clones.\r\n\r\n    > diff([1, [[2]]], [1, [[1]]], {maxCloneUp: 2})\r\n    Reuse({1: Reuse({0: Reuse({0: New(1)})})})\r\n    > diff([1, [[2]]], [1, [[1]]], {maxCloneUp: 3})\r\n    Reuse({1: Reuse({0: Reuse({0: Reuse(up, up, up, 0)})})})\r\n\r\nThe option `maxCloneDown` (default: 2) specifies the number of maximum depth traversal when going down (even after going up), when looking for clones.\r\n\r\n    > diff([1], 1, {maxCloneDown: 1})\r\n    Reuse(\"0\")\r\n    > diff([1], 1, {maxCloneDown: 0})\r\n    New(1)\r\n\r\n## Aligning elements when diffing.\r\n\r\nWhen diffing arrays of elements, the options\r\n\r\n    {isCompatibleForReuseObject: (oldValue, newValue) => Boolean,\r\n     isCompatibleForReuseArray: (oldValue, newValue) => Boolean,\r\n    }\r\n    \r\nrespectively indicates to `diff` if it can try an alignment using `Reuse` (if it shares the same keys) and `ReuseArray` for arrays. By default, this option is enabled for all arrays. A useful use case is to make a function `isCompatibleForReuseArray` return false if one of the value is not really an array but a tuple, e.g. `[\"tag\", [...attributes], [...children]]]`. That way, it prevents a lot of comparisons.\r\n\r\nAnother useful option is:\r\n\r\n    {findNextSimilar: (array: Array[A], element: A, fromIndex: Int) => (newIndex: Int | -1)}\r\n\r\nIt takes an array, an index from which it searches the element A, and return the first index at which it finds it. By default, the element must be exactly the same for an alignment to occur; but it might be useful to specify a function to find a partial match, especially if the match changed as well.\r\n\r\n## Debugging edit actions\r\n\r\nTip: Use `bam.stringOf(...)` to convert an edit action to its string representation, or use `bam.debug(...)` to directly pretty-print an edit action to the standard output.\r\n\r\n## Operations on edit actions\r\n\r\n### Combination\r\n\r\n    andThen(b, a)\r\n\r\nis defined so that\r\n\r\n    apply(b, apply(a, x)) == apply(andThen(b, a), x)\r\n\r\nNote that `andThen` simplifies at the maximum the resulting edit action. If you do not want to simplify, use the equivalent:\r\n\r\n    Sequence(a, b)\r\n\r\n### Test commutativity\r\n\r\n    commute(a, b)\r\n\r\nreturns true if we can guarantee that, for all x,\r\n\r\n    apply(b, apply(a, x)) == apply(a, apply(b, x))\r\n\r\n\r\n# Advanced: Language example\r\n\r\nIn this example, let us have a dummy program `{a: 1}` that an interpreted transforms into `{b: 1, c: 1}` in one step.\r\nWe are interested in how to propagates changes from the output back to the program.\r\n\r\n1. First, we rewrite the interpreter so that it does not output the result anymore, it outputs a term in our Edit Action language (`evalStep`) that transforms the program to the result. This step is explained later in this README.\r\n2. For example, `evalStep = New({b: Reuse(\"a\"), c: Reuse(\"a\")});`, meaning the `1` was cloned from field `a`.\r\n3. A user modifies the output so that it becomes `{b: 2, c: {d: 1}}`.\r\n4. Suppose that `userStep = nd.Reuse({b: nd.New(2), c: New({d: nd.or(nd.Reuse(), nd.Reuse(\"..\", \"b\"))})});` is the edit action associated to this transformation.\r\n   It encodes two possibilities: Either the 1 came from wrapping the field \"c\" (more likely) or was simply cloned from the field \"b\".\r\n   \"nd\" stands for \"non-deterministic\", i.e. we can offer multiple variants. Using \"nd\" only makes sense for user steps.\r\n\r\nWe are interested to replicate the user step but on the program level. This library enables it in the following way:\r\n\r\n    var program1 = {a: 1};\r\n    var {Reuse, New, apply, backpropagate, nd, up} = bam;\r\n    var evalStep = New({b: Reuse(\"a\"), c: Reuse(\"a\")});\r\n    var output1 = apply(evalStep, program1);\r\n    \r\n    console.log(output1);       // Displays: {b: 1, c: 1}\r\n    \r\n    var userStep = nd.Reuse({b: nd.New(2), c: nd.New({d: nd.or(nd.Reuse(), nd.Reuse(\"..\", \"b\"))})});\r\n    var output2 = nd.apply(userStep, output1); // Applies the first variant.\r\n    \r\n    console.log(output2);       // Displays: {b: 2, c: {d: 1}}\r\n    \r\n    var userStepOnProgram = backpropagate(evalStep, userStep);\r\n    \r\n    console.log(userStepOnProgram);\r\n                                // Displays: nd.Reuse({a: nd.New({d: nd.New(2)})})\r\n    \r\n    var program2 = nd.apply(userStepOnProgram, program1);\r\n    \r\n    console.log(program2);      // Displays: Reuse({a: {d: 2}})\r\n    \r\n    var output3 = apply(evalStep, program2); // You'd run the evaluator instead, in case some conditions changes...\r\n    \r\n    console.log(output3);       // Displays: {b: {d: 2}, c: {d: 2}}\r\n\r\nThis concludes a basic illustration of this API.\r\n\r\n","readmeFilename":"README.md","repository":{"type":"git","url":"git+https://github.com/MikaelMayer/bam-for-js.git"}}