{"_id":"@markroland/path-helper","_rev":"58-62b7adf29b340986a939ffa50ac469ce","name":"@markroland/path-helper","dist-tags":{"latest":"1.42.0"},"versions":{"1.0.0":{"name":"@markroland/path-helper","version":"1.0.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.0.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"004e88c038434eb3cd3d0e2e01670580b44412ff","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.0.0.tgz","fileCount":3,"integrity":"sha512-vGkstZXyMPqV3jpG+r0iCP/GqADkv37xsLkAFtYnsx9AzggiF0IlpDiH2qj6t4DzbWRDkXNu+5YU3VKlMygVOg==","signatures":[{"sig":"MEUCIEjONgvRUg9gVrkz04wusnBz5YisaTKXRi0WLEILbmhgAiEApidgkYfzCK7nSnEkX45PrJkfxseC2pa+cHNFRa0xTnA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47899},"main":"src/PathHelper.js","gitHead":"79aba87fa07c2d16305ef170d7ea860884479752","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"7.20.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.0.0_1634190645291_0.4049661719624478","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@markroland/path-helper","version":"1.0.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.0.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"d63b7b12b6b375b44deed82fa6fab4f862f52dfa","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.0.1.tgz","fileCount":3,"integrity":"sha512-nS6EeTxJOIw1wyr50193Kb/4ybwBo3D4m44URojczaPcutN2Xps+UH4y9FXX6ySPvIouM8IzISaBYTFJ2YsgnQ==","signatures":[{"sig":"MEQCIBCK/0jqm+IH/1Dl85XLI6Q6As1T/f+EFZzl7xNvzZKvAiB+1GS/+BFYY+NO5a0zY/PiXlBfXbnDxKMwY08ez/Ybqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":48610},"main":"src/PathHelper.js","gitHead":"291594522e1c8c7a3e037352268e6e83c377c146","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"7.20.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.0.1_1634191885074_0.415240353626259","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@markroland/path-helper","version":"1.1.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.1.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"b6f541f365e3594425969ada3439f4bdc3cb95e7","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.1.0.tgz","fileCount":3,"integrity":"sha512-J8GwVKq19Xnmokd2Iz4RYD2sXNIA4rBnmvSprad8Lev9MIV8tbuzkpHJJr5awmgge5A0+fF8zpEnFs2ZB0LoIQ==","signatures":[{"sig":"MEQCIDEoE7x+CZpGnuKpt74d3U4bTbKH6IyD62xvCGRWrx68AiBeTGPFujTcw0f0/q+EV/MmXu9kD4o0RSLkXaDmPU7wpQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":52123},"main":"src/PathHelper.js","gitHead":"c1bb298ed396f22a32026c59aba165e624da31a5","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"7.20.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.1.0_1634535356893_0.3560253045359236","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@markroland/path-helper","version":"1.2.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.2.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"e2bc0663062dd53b5483dc85c6bec296ba195344","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.2.0.tgz","fileCount":3,"integrity":"sha512-YyjoCFBry8BRyHEBkzHBtUJf6Qh22Toe8djMVJFvRxjkuFEctCd+CMNp6TGUUMN8kv66iZI4IUU+ON/meMjlAw==","signatures":[{"sig":"MEUCIQDh+jrhk6iFKvVdUm66a+/ilu7kWJdlrNCPlgRcjBuHrwIgef77gdj3hXdRILB5/UVT18ZDzfR50ZVKG9W3zk/N7XI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61356},"main":"src/PathHelper.js","gitHead":"eabea95e948acd80a3c10f44b1669aa22f0083b2","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"7.20.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.2.0_1636485688629_0.6860764820991061","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@markroland/path-helper","version":"1.3.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.3.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"f18b82f7c41543c30425c11c9e5464e3b3dae006","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.3.0.tgz","fileCount":3,"integrity":"sha512-OT9OCS0AMZlJUCoMdi56d5HAA6tBtnhC0Ss+QUJE8P8edjCUWoXtqH36vttARmYJCEuhmMt7hqey3AWhv6IkxA==","signatures":[{"sig":"MEYCIQDJI6OnyElyneAGCRfV1F41FFfSri1fwIrtikoDrsAYzQIhAN1XDna+YXJxi9j5aGGIsnuyvS3ZEtdCzf1g3XpNpoIO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhobqcCRA9TVsSAnZWagAAx5YP/00yPIfsXon4Ae8nl8WM\ndSGfjjuEC1YeHa9j81pGtJv9YqYBDmBO2PYtTADawyAU8MVH5ewxKS5+A/J9\n8iiUArIU3LBZJzhmrhn7Cr4KCdA4YhoNg/jUJCqkXVyDujMEJ9/syqrgBlbr\nargM23U8aSzkpBBo5+pYY6VsZbfa+hEgeTUwCIaDz6gdweLM2KdRUOkNQpc9\nrjuP63KwbOeF2b5wnrYxSAGKJPKUk/0ALPwJ4/XVHh1SrYD/vfw9Xw50rXhH\n+PpHk3FC91thl1cbe6DyJIU69a8wLk+bQiZmevV2a+EyGIcwHGDznlzii5U5\nvSFhfAdtIwCPiUB5E2GC5VHuAb8jfbTVccE3uN1N7tIL+5AiLyKjUd0c2SaS\n2PkACPL/j3lN83I0QZprAzA8n3IyZa6d7Z6J+EkXo71Mf11HDQ9ZEkajfx0Y\nR89gF77FQlQUFMrp+fOUCwZOiD0fdUbRi6HUiueTXJ6RPZIEovE1raznSDuX\nESHnvqJ7kcL7UqTKsVNFVcJFZEiQ0rA4vWexcYaBVIxAgVYte1bCGbGNSBj7\nCMJzcnReP31muKuQMeLoCAtSAjEvFZoFzBzAY8oxkK9EhlL89R2MVqU0rM0c\npMUqlu2dqhzF3u7bdNTInzhfRqujchLMYuO/wSE58oDGPKNfNwouLL/Dtqtc\nTfLc\r\n=8EkO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"9f5a519cd6de5caee36da90c919af5ced9a499d6","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"7.20.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.3.0_1637989020007_0.03897869600546655","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@markroland/path-helper","version":"1.4.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.4.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"09fc7cc787263067c2ed3327873c95c4c6f9ba08","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.4.0.tgz","fileCount":3,"integrity":"sha512-VJmPeaj5mujLjYPv3o06LAQiLQo4eYuQ2KLCN56wJuoR3y+6T8dIY7/X+ADSJjDAy/S9Ps6Pb+nxKSzhYRmeMg==","signatures":[{"sig":"MEYCIQCRCowQss2h8Tpcl6TwmoZDtIb85GmRVcqCTPN/hM5UeQIhAPiSvZHeJzEvbI+YaefipnCFbh1vmqRHMzOcx02kCAZH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz32cCRA9TVsSAnZWagAAfM4P/jDL1aPWM4e67votZT4Z\nPjTdXa4qn5IDgXTa965iu5DqgvGLJcc2vB+Jh1mGqWPgDbuMq2GoCWhuLjQq\n4K7i7jp9eZ0Rd3qH+aSE7/jlk5TZx6q4+tggN7yDRn3xE6mXMukQUEqNoCL/\nYwN1wxiHJ8CAy8dRH/95RXpNbI5HuM7ciLj01xntIIHtOCzuZ6PjZrlVZnds\n/fdJNvqDK+OZUSXDNfxZAIw3QdjXxpBGYz9WPG8WcfQic5FFkfw/dGVfycU7\ntm5u+9cG2ft/ndH6esrgzcupaWIFyAbajvYdhYqUjYG33cICr+gPXR50RuLc\nkMrd5Z8+Q8OAJ4Xm6/+zUfAHY3kQyjPaax0GkWdcgRd9uunyBCXlPnyYtlWX\nOPHpyJR4E823ntTn67vxCJZ1I003ZiZRIqO7eizs2cIa/LmITYuu3YYYqdse\nDyB/ElL0JDo90bFiWq7bIy1QsC9zm+g7tbOZYFGvrL4arNYqQcswqnI7JvKg\nbIpcueWqNlatFjXyonjhCBSQVemSwWgaDzEuFzbltTqhYdDaMB8Txb7L3Any\n7Ic6chhOYII11piQ39C4Xnw+RNDuWuBwuKJxriMS9npDitsd9iDDdgXteKTh\n+XnVvrXPhlkXgRArFgQ7/0w7Z2KXbsOkF+wVopYE9ZugG/BNUL8eyIVz/2Zg\n1ecx\r\n=BwoO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"1b3e335a9be696e39692b31999bfedc203b056ef","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"7.20.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.4.0_1640988060715_0.24670111054338517","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"@markroland/path-helper","version":"1.5.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.5.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"d4117f00562e3a1b136353394864258083e7a4d9","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.5.0.tgz","fileCount":3,"integrity":"sha512-9fqKJCiNldLDKVt6fm+b+I0y8b7kNsbM1uCp8v0MdzVPZxIOE4ZtkVoQLJMCaXTfL0wOSiuaWZKzyk5iAYqlZQ==","signatures":[{"sig":"MEUCIQCxYJOwG/W9mFsH7yFRWGEbw3rVyEhEDKsEyExrR/z2ugIgV7aDDSsRX12YryCy5RKVNAafnGPUjdEgeYLmmENsi+o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":82901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2O0HCRA9TVsSAnZWagAABRIQAIcY5M3AlM/NBFmXODKJ\n6wgbc3K4Gt7T39x9AlXNImXlXpo92xtlIunGiXWeEnba6YVaMlNrNAlmwUlS\nfdAIKS7DuyGBeyTksMr6SIyRh69R1IlHD0OUg2eCk14P7/8390M2XoiUBOj6\nM2zDU9ZD9RJEqIjq/XV3qN5mybn060BJtETfnPWFWvWLMti8J3OT/ETniftI\nMq12b6Sl53JKvyXgeVvfor9z4Jsj1iHLJinyXR+ufm4ERbDVqjJPdBC9aQUt\n/VeoPIyVg52RRM9j0Sow0DpB/dv2/FRsZJ6yzDEQJKPn2uXYHc033y4UdMRe\nqMIHY8TAW+ybNinTKEvhCPOisQErkKzb781jhSt+tUSpVSciQ8YZrCTQrt/P\n1FKtZLDV6Q1KjVGgw5t8914+ZAeKK6J9Jtj136cJ0clkYiNbizps3oRQDvhA\n+Dt/7EbeNhpuD0D9NVfm6oVVALSGga90/g/EAtwBpqtUkNXnzhIt/IQm1jjI\nN2ZqcJ2r+etU4g0pK5uuRgy8ej5DqLHBsSwH66nUUplcLSvYCgVEZh4Ff1Gm\ndxytlcV9iPrWGM77szKhuqsuOmkOQE+n9J9AhYCCV2Dw/8DkhygsNIAqT9XK\nWVBWHOctn9JcLQrfJxZ/iQsaSFQBLQOBfNKMkBUAkkLsukwcZWJ4gayfxa6w\nfZoO\r\n=TFe5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"444b7fbc432a4301f7ed1bd2966d7db742584abb","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.3.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.5.0_1641606407528_0.4336852129861002","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"@markroland/path-helper","version":"1.5.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.5.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"65d4383f6b0e31ebd1d413da147d329986706c18","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.5.1.tgz","fileCount":3,"integrity":"sha512-f/hf5IB0R7MEK5u3pF63MWCSmQD36tHYVjZmJD+xqIlvl+7tgJSgkEPmDrcgN96T3TQCeVuw0t9jaXQLNxbNVw==","signatures":[{"sig":"MEYCIQDAann6HRbK1tTEXPM6pIgnjxhm5Nyvc6WZMbhUzdwBvQIhAPQkuZyYsEJZhqAjWP3L4uG+Aj6dKvdv/9hW1kHR9UH3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":82901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2O1xCRA9TVsSAnZWagAAdmwP/i7V5Qa3I7bZWwQmbeLl\nIzCVAdRWluZ7VCoqA6vJpnavnHo2++iC1ZjGzPkuYUEHtMUvkCCU7IbJo3p/\nW98ef+D3fg042CiixgqgUFU71WWjLsYUhnrm7m6g5WhpfAXhAtLptAbZqwcm\n69mWHAX3dOb93LeG8lkaZWXFLjsYfMICssPCoPQfFMEmwqb01WUjqYPxmA4x\nwZTQv3oAP25TSARjl6LNyJrTDQB6M/3PBDzdZ42d156LuVSgZvxl2oZWzeya\nzTZYnjZTgiqUxr1e+JTNmHpXJS07dcbUmimYer4Aku7uTIRtORwBmIBMOrL9\naIvvL0yzeBWr0MNrsXYCHJ5LDfb9WUgsi8E5drreDu+zM+QOBF0CglO9Jvzn\nfXRjemb5EDVt4wFI0GlSPWpR29UiGOG3P9T/6mP2r0r8T2G0YNifzrwhCQ/1\nvEgjdXGDl58Hk3PUdx4xvlT1oBn3NHAQzxLHi/FGY0ihV7e++uXvDEWrJFBs\n7R7NuYR6Cu2blmoZUq1SIXHOWDBRHbsEjyO8vEIzYDZwLK4SMUNuV4QH89uD\nPnKfnZrMa86seLz5tZ8ClLIZ8ZmU/xBOxsGkYizk/zQZJiWQJnpsCr4EV7Bb\nwKIBOEBR5rOuCTaPZHSPAjMm8yGBYHjIz17IOgG1Ya7iN6dBWawV8BF4J0Wq\nu9xv\r\n=wt2L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"418cd0da442a68dda8d6d8f5ecad43e11fc0ad1a","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.3.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.6.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.5.1_1641606513284_0.9399852067558594","host":"s3://npm-registry-packages"}},"1.9.0":{"name":"@markroland/path-helper","version":"1.9.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.9.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"b2db285181ddc2bda041520728383c29dcf04212","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.9.0.tgz","fileCount":3,"integrity":"sha512-QSKWEJNfaddzHWyFZR4zt2mpjuXnzPDSMXwuXlJJVVialagTLdAgy4SAHYhDJiHTeZxnBtchS0cbOq4x/dS0xg==","signatures":[{"sig":"MEYCIQD4uvusf33vh1aKR4aKPzF1GZBsgF+yBfGhM4NECpKu+QIhAMA/1heC3UdUW3T6oFkojuTiUTgWKeQxp/oJiEl2QZmS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8JDVCRA9TVsSAnZWagAArAsP/1PT5pawUzcAEf5EgAc0\nD6Hovk8DaM/upWTQOC4JR+Sg4sCMmyWZadLErZO/IdeOYgXoxePNNNBNMvle\n7nnN8w2jjNmzkU1k0uCu7vqkMC71p8CpFGLRs5h4SCzlC6QS+NGaxiQ9eAiX\nY0lhTAsbUWnK769GrurzrQJ7yxNq5FLG4CV9BM9QDVaCgbdIDYw09HJ0bnWU\nJlQjWYnr8vzVkJUu5hcVRJZl7Z4UBLatYH+/JZNZyflI295KhnnasAkRoNrL\n+MCzfNVeR0+hjgTCdYvpsC9GaTkE7euhe2ysDcbxGaIbXoTvFr3eDosqLfVZ\nPgMQ6YIP3CFORR2gTw2n/60SoI9C21L+Gp6W8eBmE7UUubjLkR8mkoXyXk86\nLfdp8bw4c+3tz4GAQKNkt+unBdp+RqLEbZbsef2ojnqJqVxWPKFNHNj3cuXA\nlT2BbxznNeCHY15dzMi2RVEls5cceHwLo4D1e18GYmfwgBxDtSWylCmKigSi\nJGiB2t5qmqKRiohhh366kzCXrvcaTAIcOFIvkdNMvlPCxzQoLfGhnYBD9Evi\n/9yEb5HVw2jRongFo+Uw6eZ4NPSOrqf0p93OXgLfMie3lgopZsfUbnahirl2\nLdCw2soQk4WWS82kjnxqcZSMVh8Ah5NDh8oALP6XQ5gW9Olj2AQLIQ5laZft\nPUCd\r\n=e3za\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"9b6dc93234558b4eb1935918c37add5222fb21f3","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.1.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.9.0_1643155669227_0.9608948658857452","host":"s3://npm-registry-packages"}},"1.9.1":{"name":"@markroland/path-helper","version":"1.9.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.9.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"aeb014b003f3db3f0be27fbd43fc88bd34648506","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.9.1.tgz","fileCount":3,"integrity":"sha512-IKYhzmysSVSVeNG7B+K/udUc1+iQVuZeNd49aab1GfN6rVeDkXbGIhL30hmA4ip0WRoq8qvUNOSAgyN7HAzJLQ==","signatures":[{"sig":"MEUCIQCwAXhSsGeASZ2JqQUGnh/xVmoXpUUhwNbQVUv0L81EwQIgd9QX79jdgTb1BK6oMGonC/TDEcUyqj3cRlRcS6GiA4Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8JU6CRA9TVsSAnZWagAAaQwQAKLVrV8S0aw1yxhTuOGV\nL8HjHNiMBpMSU4IFoEuejNY2oSYBZx+c3nc3E2XiORBEoUCm9EKH0DVW/zRJ\nrJZqHr1NxL5jmjip8fJXcUb22tfWk+ICc0ZMlbb722qZIDWeA5VvqipLvqNT\ndTXqfRfuQQVQaU38xo83ggrISMyrZ+2Rb2LyWn4I3Hwjxfioj2lswFeYoAsI\nFdrY3ZG3R7e7MnXVGa/ibwMEslsQDjlharav1ne4jB8aHMRJPoudk0v0t8f4\nImN+nJiCSskuvtrz+XY37tKlJ6NdehnRlhYydHLHejUtosYaRfDP5q2ogiY9\n/bHu4yrCyZKNDVLEQ97X8uxxKJ3YdtjpoZg8tkj5oLlF/rle0RBh/DqkkkqD\nkmXW/WanM4xpe1gUVsZyP36glZktjjSs+sMJIwtuDTTiGayMnBkOX38fZRBW\nZtNW+njTPDlzcYCy4/gKsmOonuABM8pI16I3mTqOJ1NqO8bc4J/uYrS3VW+9\nHdhD2tduYvCfnx0P7pvkTD+gzniAzroEQfQAPX0fKkOUHiYZCNtdNV4CfxFs\nIlB+NlObyWPtWrHF0nXb6vDXmD9q9oGtvlFpDuiXxe80DyjH/Ck3ovaIQT49\nlku9fx1l4KsOaHyTWmH8M+SHhdRuZeRcCeuLsUGF10rB6Ubke/o/zXNY/v/a\nIKSs\r\n=0/Ma\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"c814213c45a0a9bbac90bef9ac1109b3f94c4ccf","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.1.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.9.1_1643156794260_0.4872074234309558","host":"s3://npm-registry-packages"}},"1.11.0":{"name":"@markroland/path-helper","version":"1.11.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.11.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"c6af2ccc14adedcfdf4aea2529b883f45b8db298","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.11.0.tgz","fileCount":31,"integrity":"sha512-MR8URp9Lvfkt4usQ9YpFFI/gnPxwAAugIcoAGaUtklMiqjUNDVYq8c2Kxj8cDNyU5YnX2yKvGU7WALxhvYZX/A==","signatures":[{"sig":"MEUCIHuqQVH5n1TNvNY0x7ALs+6UwiaOnqnc5N097X4u73XwAiEAuj0UAyWEGnaAXe70e6O8WB/vOwLmrS8lSrTEXGLnIlI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1475564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBp/5CRA9TVsSAnZWagAA9w4P/0rC9t7undj6sgjNzu14\n47LLICrJ3ivUryi/6STql5bQgJtojoMuuC6AS1RodvRG4Y1eV5p0Rkd/cUFX\nLREIyKOU4IC/HKiR8EAOF8gAspSxzCkfFSqhERP+5/Y+Zzqp7XRsbiBZMJus\nxiW7k+tBniQH0UP9wkMD9QqDh0nl8ufUJ3uEgQisewqAGBqBBzFv8/FHLjgW\nhFO3p8I32W3M/9YnIMSKroiC/NBrQtM5ohsGk5ODcQhVnK2G8RswmVTR06CI\nxFaQ2oPUAVVyCYLe989PNEGOBc8sieIvgjA+tknS2x6cefJMf20Fm+iETX4z\ni7pQv1FsaLl+ewAmHhA8O5XTiCnymZOSilVpiSEpkRlq+a6SySyJqbN6HaNT\naJoFeRUwnd0t03ToVb6MOcpalCjhQAycX7gqmb8rT8zhcMq0j03cOVmFZBD4\nlSd6JQLGX9qr0G+PaPP5DYtG8HqRpCRgH6zFdJAqbYHMhPXVyN0OF3nfBnJB\nubNS6HoY8P9n4WubM/s67sYWB2J/MHN4QVNCaY2alWA6XWWZzI+MwT7B8NaB\n7XWLBuelItJYsav6nruaXDGY+lpQJ4tzUas/ljsIWxp+rKP5ky6r52wEq5SS\nBICOtkPSvRzLbVm4xo1O8vNnsfrYMpT19sWoF/plRMDfhPvki3V9hnSNmXnL\n1a/O\r\n=2Jsy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"c5c6673988a6f6238a6b70d1d58a4d9b164c5f4d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.1.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.13.0","_hasShrinkwrap":false,"devDependencies":{"jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.11.0_1644601337616_0.5813840468974996","host":"s3://npm-registry-packages"}},"1.11.1":{"name":"@markroland/path-helper","version":"1.11.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.11.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"a56d3956a6fd9bc03d04c3a74c284a7cd99df6ce","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.11.1.tgz","fileCount":32,"integrity":"sha512-wwDzCHL54UprR92Hv1GRIJ2qnegw/t1Hb+RCr/PwZiAqNX3ACLOsynbROSchIemNoCQmzSOECBgoZ7u1U+4qGA==","signatures":[{"sig":"MEUCIEF3JC8Ma8NsxGPcyEIVJDze6DwTcOkK0in8ZdC8DTErAiEA2SNrGn4kbL8QXmukmv4eZirW4LPOEbGBC/1dSyy+CFI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1476181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCfe5CRA9TVsSAnZWagAAFr4QAIY17SctD2AI2JFqoqNP\n8tQuVj+ekie+Xaz45NtOnI2UZ2/JzFRyP5m3hbtwqkMly5nY2a0IxW4Tm7SV\nCrWhWAb6+gR8ttd/RWrdod8NWsK9uvmsxmWq9+Xx/TorLHCEHmte4KlQyzA4\nVRVOtSfyINvtsd+vd2ndgQn7yaObSZVKEum0M3O9B6JfCisLpPfMoPPD+nES\nnbZiACdWkukYqHfkIO4OXNdzsxl0TbTHNVj3g/4SCosOYxBkLBK4SXtyTg1s\nml2Tc6UVcPkL1afwxBRQ8PB6bNJ8xDsT74nccrmAhTJWjC17HVEHcKJmehaS\nLU5jI8p/mDDvIi7bo7f+MijEx/5lLvyvh+IZwxeWV+3qq2IGZbvfGFpcuwRf\n+e018p11F40jMWJoZNKIlKTmiQv7nwuUah8vFc9Vm2ZdXQkW/0ptXc0aE55S\njPKhTyLa8c/8mF67Qb448FhuQ1v9DojjKB22dI/BhIT5WuOhkb6of/kXRx/2\ncz2oh+f5/g84MofwFIMdAbHJZvSo6lwQ0PylG+qDoDkrmpj93PVla6QASvCM\nuLkGmoHVKZYLPsspEcC9SeWrhB2RuDgR6xzmF6Nq0jNrOYW+NT864lM7Td9e\n1wRPOnQpG2Prc8OdqY4FL+cgVwUpN/bETsyecYN6P3DkteszjNQY44YtpSYz\nnBZp\r\n=vOKr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"9a18bc06280f6cb09c375f6068fff196b4d3ca8a","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.1.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.11.1_1644820409378_0.5632648607663051","host":"s3://npm-registry-packages"}},"1.11.2":{"name":"@markroland/path-helper","version":"1.11.2","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.11.2","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"1a3e35a77f0d79679fea5e5a921d80c8d2bfc431","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.11.2.tgz","fileCount":32,"integrity":"sha512-eo2tTJSJkwJN76prwbXIQFqMNuxjdkVuHv5Cr7J3Zi+a7w9JVvEdgNFoheptag7EBqAyatT7YVj4v+yJ3DFqZg==","signatures":[{"sig":"MEYCIQDVfBrrQHlMQiuWkfuGOrZyiYCcFmNecb2oNOTnVVS8igIhALeIa2DmfeUtRh1Hvt3hisTOpcLAL2Vde/O5MDsTvXuF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1476274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiC1GOCRA9TVsSAnZWagAAOl4QAJG7C4zI40jAXmuOYImR\nX+fSwx+31ADk79OObmtQDTmyUkaFHehc8ClpkUZt/IGc0Qqv41VrW8D70SPq\nyUoMPVXYuD07zduQmp+ksHk9pScQ7ngEhs3to/TpnHiCn9rvISZQayBtTGGr\nrkTYR3Zs0Ls5c1AjpjvNnB4o0gh3bpQCzJwNvYAFaf6sFyt24rbskb9T7fDx\nrtynEWG0mr9b7e1tp4oRXH6fi5uFonXapMbM6RSRKTzZ6FmmA9gqhjrlwuAS\nIe9d0YQmn5AGRunLvtrbTByTLJfng/zR/YF3fJE6uQtPEYbKtBxms+uc/2Qr\nZqlbDB4JTy0Ay8f6dhQ7YnhhO0HKNi7YXgbtlJNbpwOLv1BmbPiULkB5GqON\nRYD3HemwMCRUvncxSD30jFqdVT+BLIadF5k492VTIQlI0DYPRX9SMG/F9kf6\nUfPeZrU9idRFWCYkzeQh3wjV9JPRdMRtyLHOFWySK83GpyJZTTk0jMR9yT/J\nFf4nnuxwLGu++nOnWd0Rd4baVpHqFPsfCd54uOzdWsLy29MyYkUtGB44XmaK\nk319/7CSr0hpmk4uc8W2YfT2p9L+8tGhij0QmvjsMrkApmfgGlYvG03/EFvp\n5d08Yi+1Rj5pVu7bDrakJPwLtEe35LgJBxukiV4lKewmDwTNr3EjVG9i+Ti8\nFEpQ\r\n=U5e3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"58fd8fae69074ab614401049272cae956c45acd9","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.1.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.11.2_1644908942272_0.06969088610834029","host":"s3://npm-registry-packages"}},"1.11.3":{"name":"@markroland/path-helper","version":"1.11.3","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.11.3","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"9671f1af4c0c3f69780f42765a4ff24211f442bf","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.11.3.tgz","fileCount":32,"integrity":"sha512-TN9x8lW4stxIl5jnMjpa+KEV0ijarX1Z/Gm0+F4bZjW0RJM5ajRYpUjuQtipYORgI2+KwZYkqUXsmVjEhRzlZw==","signatures":[{"sig":"MEYCIQCVgx1P+MtZ2JJMIipICfFJZwGvcF279cQGr7t6WVlRWgIhAJ2bo9DnkazzwqVPgtNxZCBXOKfUiXlKfCEcwtrD6Vud","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1476295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiC1SwCRA9TVsSAnZWagAAt9YP/29mambGU4T3kzeisdyV\naTIcvT43yz8fXwn/9VZDVLhULQmWfUnvyqHm6b1rlksymx2SWwK76Z906nqq\nyDHmpqxVJmCU1d3IwdIMwx3BaypBHhuP7UN/A/NIq/VDvzvUwxX8IIaOOIuc\nAgILAtiN0lt8GHQMwqj851zqpZqYg3fw/pQF13sftDWSzOQVJnmdVOGBj8+0\n1iW9jmQt74oWdAQ5kWu2eEV5MdER8TBG2fpEeTSZvWAI+RdCsvHdnh9+3jVk\nSlXqstbLYFKLj/EukkbotpBVc+LJepYf4NP25Ra7S2dXCeujYVbgmVLcZKbl\nU+vN1LC+ywbEkaf1cgdi96/V98u2mzqTMWbIZlJ/MT1Likoc4nNwFoSSCbql\nquW+xw41u+GfvV381UTl8x7XvV7qxhOAMGQQWOzoMaMJayIuGbp5yALRIb2g\n7/8zRmmp8EICa+SgMv+OBsnz6Zz8zYKupWjC0XROGxIxs3+CB5GLVfUyrSQN\nLnnCJmtL7ddI0ZewtF/FobwR3Acm6O9cu/0vKVipqfXz1+gBUhy8jBi9xn9N\novl23oQ0+umRcrSEjd3wwmqxHysx5Yc7MjgcEEB59C3cBG0Y9IJDTgik3k6w\ny+YYJ1NWneRVN0lr6XdsbUKgv1ZNuDyA0pAgsyg/HHSQHOsbuQHDVSCU56Ja\n6zds\r\n=eUwF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"3d84d86e2104664a94a2318ace6a1beacc4eff69","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.1.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.11.3_1644909744504_0.44566707387088367","host":"s3://npm-registry-packages"}},"1.11.4":{"name":"@markroland/path-helper","version":"1.11.4","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.11.4","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"ba49de0e57bd357f41e7c70bd2ae20ba98cf0acf","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.11.4.tgz","fileCount":32,"integrity":"sha512-y1NH87Chov1gEH60kNqk20iPkrPQJ2hN2BLLbZ4r5UA1KFguSDGgaDdwOxiTHDcX3zvZ/QE/MSEBuSwIgn64wA==","signatures":[{"sig":"MEUCIQC+qQ7eSgAwAXz7ljOvWS0tHANdnH93yLB52E3dwzZ4KwIgOpXOiF0AQNtU8m21hG91Nj2RdRoXQC0cVPA/kIA/h08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1479243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiNAeDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9jg/9GbsRGIxqQrbkhaBbVvMghBit51wEbAk//AFzQSIUi1xyrfo2\r\nlYaWT3JEuKilGUnjvCFenskuT+1H0J1gFf5TXYXT5WqUTS3bX5z4f4/cNLdi\r\nkwt1pSYNNgas0Y9vBdJFIlJKSIogfKYSpeGsrKJGREvX7Q7r9TiYBXbET2wj\r\nSJFkQQMhxXcUTbk4BAX35sWjER7FuLVsoLhEb/pHlLFa85S5UGYkTWpsnNhp\r\nXHrx9Ia94PCSP1RjGLp2h8hSAE+rN86FJkcrB/ZAuctffPx6hI/rgPVNhEHN\r\nHEp/gCzHFNm3sJx8gAeCjELaEUVmi++C/uulR+CLX2071V2xgD0ubTfXGkU3\r\n7QEh1kxpCIpiL3WiT+WvC4KQlZZni7e4T5u5fcu3CyEngfvf7VOUUdFIvb/Z\r\nUmoVChiIfdBE2m05g4QkXYrAF2907gfI0DHROnk02PRnEz0b3JA5ZjvSZTUr\r\nXgQy4TlKxICXOWhU4jRu3bXiKHIQyg8h6nu4qBEeeKxNXlEwVCpC7oF/GeXg\r\npJ+NTEi4ifAWjjbPAFdgNU5zKMGXY4ous5EaXKSokx1lAF0NEiBqIz4CJC44\r\nxQkxF9/UVMdDZ99ou810CggGMVE8g2Rc/TwW6+npi4b8p1D3iaevq/amYvFb\r\nY7XrAhXOd5Qyn9FWL6xGmzleW/IWM0SDiCo=\r\n=kZw8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"78f9490fdb340ab863e638875fda130a201e9d54","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.3.1","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.11.4_1647576963701_0.7386691526907028","host":"s3://npm-registry-packages"}},"1.11.5":{"name":"@markroland/path-helper","version":"1.11.5","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.11.5","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"f6bdb33e6a3bbb42b354a3f7d94a1c999226a3d2","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.11.5.tgz","fileCount":32,"integrity":"sha512-nCfdnJEJ16WEUdHSEwP51mQbZebKhUQ2/pLuAO54hXNNB8/aHX7QTV835PDjTZAdRO4M3S0liors6+tqKofG/w==","signatures":[{"sig":"MEQCIFL7hzufcOt9Iz8FgRhJLbEQQ9atNI1c12UlMnRlq/dNAiADf97OgOIUG0U70H+rAm8aJVb661qZlcHlvzHdfVpHPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1481566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiP/YeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjvQ//avC/4HLo6KOyrN/NWO8vkgjqkAYpkwKy41Xk26hIco2jFOWT\r\nUfK9257OAX/rxfRfRKs3q/QtL0p1nKydI0XhRBo3qYTH/8EveOU1uNqwblJT\r\ncPckAJGPHSH3SHbeNRkFVbIvYtrhUGTDJQ724gAZJucKVS4agelKkChlwccg\r\nPsSqAGH++kKAtbIN0VfzRsSQ85QVVzOnO5hHbWTUoIPS5pn6+qda8SB9dTX6\r\nvD0EDPB72ctfUBFfDrtzhEfaTyJMYRjQ48AOqHu9nemcM7ecUmdnv8mKtxbG\r\nVL4e6/z7d7bGt5ORzSQb9g5AL1i+sNMibq5qAU2b9iQnXG7a/OnwR2VzESK/\r\ntpIpRj8K2v9rP1J0VMWKPMbToswV2exQEboFvwZfXQs8ZMAr8x0TSKJEm3vq\r\n/ZVdzS/EMU2aBnH61yawojsb/T3EEjB1lLNgRPKSykU2n3OXmYaCJrVwTtj4\r\nwJL5xuXavIs5wWYHOremDPHvqmbjCvn3DlkbyiINR8JV+o1lfHtniLJiu8Yj\r\nJC6rl1/t9J3ougUlJHpgLJkPT9IG525YXxuOnf5BlgtRnyUJLnq0sFYB5DV0\r\nc7oT9zYwqBrb6TA4catem+LKVyjnFKtO96s711fWwM3qJ2Ljc/cuOCuW68k+\r\nyaDWqBlSVZ0zugBMBYLKAXJa1AmDpGyinM0=\r\n=//JO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"f7a72a433cdb23f0ecd25976404ddad28bdb2002","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.3.1","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.11.5_1648358942387_0.15374560218845268","host":"s3://npm-registry-packages"}},"1.11.6":{"name":"@markroland/path-helper","version":"1.11.6","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.11.6","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"d067e5bb53d7eea002e8509b389c42e1d391fd99","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.11.6.tgz","fileCount":32,"integrity":"sha512-u0rj+W2K6/CF8doe50uAqh9lUgox8WHNfcguWdDdAJZxF6jnBwwjTFcsn/bDBHMStSDqWDR75psYAzA/nLniqQ==","signatures":[{"sig":"MEYCIQDxYSPFFUeIf3NYb0wK/uB7iyXV+2GFT1rn64IY5kHr9gIhAL3l5BabNpQOGyxchBkNg8fav/UuP3yR5sazK9U0xUre","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1481674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQODXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWOA/+M2gzf3SYSGEc8MqzCbhBpz07n8LZZUE2E6qnB6e+RdFxbxqh\r\nMFyO/svC4RDbNGiz9D6QiFHsNVA2tjbFnKrRentoj81XcLVIxOVWC94YKg0v\r\nVxgODmAD8q5921c0BEKDICo9cp7ZjSN8GGUwSTF3gank5BWkUJMZEuf/ZFbh\r\npfjKQuenOlyI23CzZnIqK2uDsU5NW4JhoiV40MYToZK7VcKKO0KXbbvaCqzf\r\nsh46MeQSIPCNaPbmqpG/b+z3DMPC1+d7PCgWUKIetTRZ3fZMUvfeSDu2cJQq\r\n60vCdiAuZr3LcgKhgOlLZNECOWeG7nw13l+tbKZ+361DctVdE34XVEb+UzgP\r\nUBiS5NEtM8+DfGt6UnBOD92PLQml+SBojrQWnRCtpXg8OhgZfcpM3aBjZ5Rf\r\nA9enU3OahHYmMj2zPEnhPgLxg0INgkwSG6NKUmNtVJBSfRRPIwPrQKERS+XU\r\nfh6VcMtXgNdg1We1hFHZA+s6qdnH4vNkMf8GYa2iP6aLpDoi84H1mu4xiodU\r\na3DFNaN3xt9GMrJdTNOebU++BpD1+QcuA/MR+Ex6vMv0AT5RhTLLuvh8tsMb\r\ntYhwcmhBrOMWUMIltZPim4AcTNT1a7nis6kGvpE2tAcsLk22TXpkUx6HSmEM\r\ndyPy7GfdAXIhIO5L1LCdefWLgSZ+ynMYkgs=\r\n=wY2v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"a6aa0df7f7040fcee8c6ef6aec18d9f37590f1bd","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.3.1","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.11.6_1648419031390_0.332686040026388","host":"s3://npm-registry-packages"}},"1.12.0":{"name":"@markroland/path-helper","version":"1.12.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.12.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"93719dc6c776f9db556a29b3bcc75b29863648ce","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.12.0.tgz","fileCount":32,"integrity":"sha512-jHQzPgPSIpBD3Zj5JdidKO/+IpQgUezc77a5gwt280xfgo3aF04LJYahSYoablIzROAfpAs9XOzTxTm3TBGfuQ==","signatures":[{"sig":"MEUCIAWq5IMVGXOt7yPfqH/t1eBNfeXh+MwrUEUPtZ2AqBlRAiEA7/YnungbzjvyHZPgfrGtzra3R3TU95K3O6Lnhquzqno=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1482479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiSMhEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrO0w/9HsbzPGbgvof3qTpOLE7GwRHgGsVoEk7xYqiyUvAR59nvK9mf\r\n98xDg33ntTaUfu+gE6ZwXiwMxu3FkMjaokMJqgx3KBkNeFcn2JgUGRkdcpWb\r\nFqsAegW9/A70PCWvILjrAz5GUq19pfY/6po/dex+usR+dd7TOf5X7WEH902G\r\n0y+2ngPccyjYXzC/uqRt0+PBuBB9gUQwhF3jTGtE8TB4/aCf/pGJI9X6DAJI\r\npm4EHmRskPjK4u9lbbwQu8sPxDnOy4cTH+L/aiVfmGASyGCJQoOtgQdtRSTQ\r\nNxTEjRaap2aL3DkMPAev7Peyr8WFVVJzQrKA/EOw80v+d6sXAtUKExqrwYe7\r\ntObt2YA0+xypgqLnC/s2tcn2GAzq3dIuFnnTlUSDUbkmOvuXYFPXbnnxxEdh\r\nvkCwXyGTBxft64sxpS46bxvnRkARRUgcvF/NNb5Vkw1kBtGzDXuj6P8MZ6Wm\r\nP6+mW0k+m0EtdHp+y6dGhwkl+HNzosE4WM/UOLRfP/xhlrlKHzsBQuEuR9qY\r\nh8ELQkKSb4VtWCf19alhNyiVEi7cVKFtQYlPCcHNCPGupvjU8uXRctigg8x5\r\naNGfWZIeS3+hmbPiRt7cncteSzexSz/Moco2bPvDF2HiNKyo8VUHp+6T65oX\r\nMAsVworg8dbSVMNRzxzp4PQ1NZs3DVPpb0w=\r\n=/yFG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"56a8c1cfd9280b5939568e2d8dd5edbd90ba82b7","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.3.1","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.12.0_1648937028639_0.9660157275247017","host":"s3://npm-registry-packages"}},"1.13.1":{"name":"@markroland/path-helper","version":"1.13.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.13.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"6d98554ba9f0bc3b199d634d9cc6af23ed0d8816","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.13.1.tgz","fileCount":32,"integrity":"sha512-JXQPdZZLJuqFV8pH8Ct8O1c6lR+FHxQSC4A8mN2HLmw+oKvU1f0VKxqTNmp9/HKy26udlV1cokPmkFoKZHaF6Q==","signatures":[{"sig":"MEUCIGjZ6gB3H5Z0bw463b0J5D11VGT0E+Mq/li8oS2ZfuWkAiEAwaBJ+B4BTsRcG9KH2vnTN5c9efnZWyqlmB0OIMNrdcE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1485298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiX1ERACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrW7RAAnj4Wj37POpzacD0jSlAsv3uIv39Kw6OGCV9qOr/4D3fwPTyc\r\n2qPHIatjVW7jOcqn43aBa96wnz18e7BXXbh3fjE0IkbV39hzt+lgmAONGo80\r\nNlgH2378M7Ew9ENWymNONPvWV/xsUZ/4zHcXwECvT/bIOqSfG9EoXkF/UK7k\r\n4QcKzBr1xWxWR9lwgQ3rBVo5d4zsGKYfQBhUJ6abUgVH4rXF2ZSbc4DsAt56\r\nN0uBDl0VikvRxMcPjgp2A6Pe7r98O1P70tsnTzcKRn3kj7sZixy1GK63upvC\r\nG+xRoLNd6fyF1cEZLfvj7wcs2B17fw4I4FBoHSOy6S6FySm8JdN4PCi5/hIG\r\nlgyd0aSCyD0MET025RKzf3R/zXkQUfiO/wUdlnYpOxUDGtvt0HzpqVR/sI6R\r\noC8yHWcO6MWdRJkF0GTtvdjhPdibnQQmWg26MjD6dgjwv7PQQYFGAHIzxtSe\r\nTQkqCWbWd3ujfN7hxI3qf0rZyBFGJAX6IoW+pxqcQMJuUbhBP/VxDtt5MkDy\r\nF5UgHrJCFQ73oJkIBTs/amtjZtfXv5b8WL25XF/UFKT69AsOyiAYo+0+p9ZQ\r\nox0z0m4+L3f8XKYraSjG4m+Ast9GKHX+JqW2PkAw80RZTRoi7hypVkGzenT1\r\njtMnTQxamjPBAedETK6pvWng/sgdkTyI8Eg=\r\n=qNab\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"6af349aa9b8df49c9c76c4f29e5e40e025742917","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.7.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.13.1_1650413841238_0.10907751067458249","host":"s3://npm-registry-packages"}},"1.14.0":{"name":"@markroland/path-helper","version":"1.14.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.14.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"7f2befefea27ad61423e3d51c90305701de87774","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.14.0.tgz","fileCount":32,"integrity":"sha512-fzbJvi0/hsab2hO2weIg5wRcztwfxVKqhcp6XDK26x/H05zY6PfeduM0Wo73nI/ngWH4kU4scZcIIhbRDKE70Q==","signatures":[{"sig":"MEUCIQCaDIYJ+ldNBZvZvTCOJBkC7CyIisnX3Zg/rw/xksa5uwIgVZX66aaS9S6giIraeD9GvJjCp+q/9IwmvUlTMaBz/p4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1512341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiY4n9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmri0g//VUBfZaOCSPXTX6i6HlVdne+UVfxshrWRPNNLp0jBuVMQo+2d\r\n1x659SanFp2AlG845avil6cBLlbxp4q6d/aeB3JQoy755mrhTPeru0PGV8n+\r\nhNYBfwxOGSaTCcww3ztKVeP/M3eDK6ywPUIi2lCAZDCGK2au3PgjNSLO+0IK\r\nYvPmm2zLBvoPlrJTqNDM5rGrB/BqXFO6ZjRh80EgixQUbyFSc3fBDiTW55ap\r\nbOZw59fMBUQ7wzFA+nK+IiyJo/qXjFlpb4LjjZq7yZfw1QksFmI+TLX+utUW\r\nPUdqh9WjvmgqF8pk67KGaJziTDqnV2h7xGf5ZQqS0SeJkliExBw+ZWS8+GDM\r\n+gTu5NdvHJGnb+PsVdO3lCJ9ZtGO0VkdyEkTVl8+mq8lqzWM+3Fc6PvU38+Q\r\nMikuBxT5qVDBgFs49c3NpEDPL+9pKsmZrl+pffFCmZYXiY4ATzxP04u7BwbR\r\nbqDUrZf2Wsatk13skMCH4Ek2UXBB7I6G1GXf+9pJUDC2MNdf2NOByqT8Gdx1\r\ndEwntI1uP87etB6E7RGYxVMHtMpQMFDkBdGq07O8VexxzsFR/Eia4vlvKxMM\r\nbnraW9k/JhGEov912RYnh+1KqzkNawOoeF4+5463yGupGqAWXdQx5Yq7ptBS\r\nzn7wsCMJpGTj3y4AYfYpUyO6NLdbccRjAQo=\r\n=oev3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"cc5a09ef7146928e9de53508e43a390411d40b19","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.7.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.14.0_1650690556743_0.8593224956668257","host":"s3://npm-registry-packages"}},"1.15.0":{"name":"@markroland/path-helper","version":"1.15.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.15.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"c6f358eb328d5c7224804a20f7a0c9243be2457e","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.15.0.tgz","fileCount":32,"integrity":"sha512-wgchELPXiHH5j2C9YDWQH7N9TYG/nqEPe9tFNedCxb5fM/LU9sd8v8vh1nLVxcKBVMkNl8kitQmYGoVMGNCHzA==","signatures":[{"sig":"MEUCIHiP+kLCsq9oWMd+yq4A6sB/hLXjBuag2cGzLGixjvjnAiEAuZFbvCiT+hjd7J4fiD4gkaUTtzfsvXHo1bbHxmby098=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1508673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiY41GACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBdQ//dosseKnpr599cZ450By5BGWP3p/DCgWyVkeL1JKNN/SPa89D\r\ngNstO4YfVbujKVrA4wZRM3NqxHdZVXsKkRM5/j3l8xjmCgD6cTY4eGk2lHr9\r\nYiDv/+sbGEWLXHekJ9AK+X+orTVbwbjJyxHeItIQ0g8T1doY02Qy78VTFrR9\r\n1RMatHMT+5P5orZ4JmyGwxevXcpll0oJN7aLv9y+QATgSGErSmgPxhl5it9B\r\n53/eS9cwvUi0kQhSn8jFIkXkltXcN8kvCc4VoILUkIkTF9blPhwLc1aw+uuL\r\nWVUw9Z8a2pEePy2pAs5hPTjWEQ9o57PNCC49n1jnNlGQzgPBZaDazKzmgCRw\r\n29CX/rTqQrqITNtSepUr1CX5Rdl9Xnlhz1Nq2lzInXqDKKUVNKdhkHg9CFNV\r\nNm4IVo8/+p9aupgKLxhP64lX5g9KvncUB4WblDPwJMcHMm6jYrzQHRPJmZUt\r\nvh6RQ7pYcIYG22DNIY6oKDG5oRs4b/LoQDv3UWIfDNFBflIHAg9iXuu/b25d\r\nccQy7eG3QqamTrLHJFmxldsoiXKpBuGwBT81LJhFUQ94kgvTA97R1Gbqroi4\r\nzXqA1ovpsr9EB/wBjpVAHgvRzce1dIpOOw27dGbgHYJPHNas2VO45RAbhcH7\r\nNWEMZvRTFzPMlMLjV9huIAOHP1CnSQ5WerY=\r\n=vE+/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"cb70f08e7a0877f6bb27155149ace67f799d9ca3","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.7.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.15.0_1650691398693_0.49844734320603235","host":"s3://npm-registry-packages"}},"1.15.1":{"name":"@markroland/path-helper","version":"1.15.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.15.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"5ff551131db69a958129ffd55c02f90844e78111","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.15.1.tgz","fileCount":32,"integrity":"sha512-tYMwVAcae8jm27sR+vHD657Bm0tcGfj+XSK20oy1l4jPrWtC3t7zFyONL+Gmq9JgYv8ihZVno++3HhxZ3r7zXA==","signatures":[{"sig":"MEQCIAQNVoqRURUXQkpCBqqn/6JgUxOaOT7nnwXfoQQ8QnlcAiA7kmEAiP9NdoksQmRl0V50wH2tg5IgaOGKm5NiN5V+ig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1514986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZNvVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjwhAApK5h3ny2soD+pgd51zutWU0ghsC8KGTcN6XEdkjaj5/2+RJG\r\nb7teapCFoPgbzJKrx0wfQkkf1qnJ6jeBxUSfTu3gBV5dyy8ksCX1/VJWp9Z+\r\nTLmi6TH+jx2cIYkkz4W4OHEOM4SArqTmNbWZA5xlHxCRlGPtnmESEtWuNU8A\r\ntZ1Vi4y1NoIAslu7CHT5PZ8fYzDyaXPgA9z2t6hDXPSnAqGUPYWFgUr2tbn7\r\n1iUaIaElmBqaFOLFZg37+vnFZR32GNQeYTMYfrc1zKKaujkpGyUUifa9FRBy\r\nOOXTCvBdDJYSTMdIDW+9FX6NA3a2Y/pluI2XM4oc0WV+VXjtD0af1moHy0su\r\n3pmK3OuXXDvXTC8KwSUicQrSuzOXTEH4HWWQwVRPKip35ZPeTwWqXvaXGSiX\r\nBL0oJkaNTdlJaS3+tbYXb4x+98yLHsQydEPpbYyUs8XU/SxzzNcCMrMLkKa1\r\nICu3Bm6//i324QlB0lP7H68uBbFHSLPb34bxeRpykXKMpT3RniSzi5i2Xqch\r\nM++KyW85owK9jFp4GRJCGzs9JZafXVU8wX6EeC0i2VDqJ8QR7J7LL6eidooW\r\nq8x4BpG8sODJGmVemQvdCUKZ9VmR7wuMaD4qgVZctYIfQlixugI9BRM957ua\r\n8q40+kiUdK/heTL07qIOCxnJPKf9fAngeB8=\r\n=dYy6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"0399a64c2af2aaded445eb09841bf52690931b41","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.7.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.15.1_1650777045546_0.09331640580081024","host":"s3://npm-registry-packages"}},"1.16.0":{"name":"@markroland/path-helper","version":"1.16.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.16.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"043afeb3529f1289141d43a2a7ad73a3d8bd9443","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.16.0.tgz","fileCount":32,"integrity":"sha512-ZyAi7PpdhPko6lXnGCqWu8fHrrldZYDrQXf0MyI34fF7J0WAST4Vibec97XGh0Dra5rL9IW8sBdCvk4lv5Bkmw==","signatures":[{"sig":"MEUCIQDdwWhv2OPf5KHsDZeGIV/bmjTfouF/cuThqZVQbykRFAIgI6TZXdRw7SbUGCNP85kQonZ6qaO7OMwVgA5xksC/9n4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1527386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiax/KACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo+iA//SVdxbRX1+W0xRmZhlcGkRZUWBfZSeb+CzyP8TlHFNrOfkGJE\r\nxvDGLpAoOjpvCdK7dna5SZnV2SsX5Cvs//anyDio6z+MTTGT7q+n+0LIepVW\r\nKoGLYFemz8luXdHISZybAu+k4FUkImzHU4yIX6GWfIvGwtPeK2YuR+ZLGJ7d\r\n4ypfhAOZnHLf4Ca41IvHgZ6wqN6nYAkqhYhOhNtTtvxFoboIrwUrZpXb67S5\r\nEFFVkCx8joPKONtlXHmRNuTdJMqK6/2W8KNViCTyUQ2KF2dI0EfFJlteEMqD\r\nR9EpMuG85vbhHhp1o0iIm2WAEYHGRs0DIQqFLaHknp62mRSmFIJo6zr7HiCa\r\nahph6KByQDlRGXF9qmaR15QryX9O4xEKEBo5wB4wLTkbpmInuFNXIjGzB09k\r\nPovArFER286PEdn6OVnS5+54+3Qocnzi0f7lW+w3bc46wyEEvWSysxtCneRL\r\n190fvv/ZDOken6IC8k8KMcWiyk7/lVbYWEQtoSL6V6JdX2OieDGg/hHl8VV1\r\ndH5EgJxyEEu456VY8A8fLR0ov8FCZ79w+Gvkf1nP3tPhnFutbBhJjLlw4xS9\r\nqLI+V7N0FwZhhaG/MFFAUH/E1dhxFtMuWdXuwGO9m5C3przStI2c4/Qc+D4v\r\ntliGwlbfk3krVdksDGJO9j4dvggx//ZRNlo=\r\n=oUqf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"916bbfef66eae7c61a568b98f14ad3e7c1887276","scripts":{"test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.5.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.14.2","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.16.0_1651187658028_0.2306311573122919","host":"s3://npm-registry-packages"}},"1.17.0":{"name":"@markroland/path-helper","version":"1.17.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.17.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"281ffdd99b4ac82871784a69bfd8f4247b3cda19","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.17.0.tgz","fileCount":34,"integrity":"sha512-KXvCEEtDRt5fbHBZ9RJAnVOT0YIkurJT88AtXI/r+BOF/muEYvHfheuG64p7gtAnS0cabU0giEYKZzet2M9AHw==","signatures":[{"sig":"MEUCIQDB3DBw1kbHKjp9h+ovyZa/UItUSmfykE/UfEchSsBDoQIgT+w7Z/yJvO4ODK7ps6TMBdGtVi81+2w9NPgL3cpCHQQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1532077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihcbIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4jhAApG5a/UBH4q+Q++GougDsuEjeD2dma23SZ9f0Va/DQdbpRcn8\r\nvDwueEWf968Pt3ZNUdCZJVdxJrjqyjcln5ogTBDhcMRGbjzrKI2tpE3wVBHx\r\n8oG3Zuo2MkEnm1DDbF6BM7GkGlJKOtejGyu+Um9t3XYxWLpUMP/LWz0Zmwse\r\naMVpu0TgKS5H8TqFiSwwk/n43L49+nLJovf7sS5bZvHxC9yTKArw56Z/AtTb\r\nKubgUJxIDySUZAgvFBXF0nt3Icme5/FQBec19WLQsWLyQik0sdWzT8Vx0QsO\r\nrFItJ6AActs+4LkZLL39Pw5mHjZudG7cTd8mwNhqwj55DrV7VzkAiCHKY6B2\r\nX8rjZtHR0PpDvRBdOTLsI7g21DX2gBerwTMLEKkYcjE5oy/NmzYABPjBTkiF\r\nseNwLEmqoS34gLWqvE6jt6e6hKY0KX7J6u6Y+RV4D52gUCpmKiTQWZ6RF10U\r\nG9McCy0ojOboegN19Ar++92z6DMeb63ukI5tjRwLdEeEnFKAye0EyNWDxxzw\r\nRFewnsHoxMdO4Oyeal840kSOQo/4yMwQClkLXKbUb4XR5y+KU55Dproju5Cd\r\napNsARHDLNyLxhswn+GNM4HNVSKcBM4Y4Ntd0FYYii8bUFpfABDH5IqPFdMp\r\n3duAByTAeddzER0hA09NSWcbC2JoXLy7V0Y=\r\n=SQaI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"33a72e0d3d9fac3253b545a72110b330be49afc5","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.5.5","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.17.0_1652934343910_0.3242134079660963","host":"s3://npm-registry-packages"}},"1.18.0":{"name":"@markroland/path-helper","version":"1.18.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.18.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"0b08ed4348fad5149645acf96e88bffed2e7fd51","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.18.0.tgz","fileCount":34,"integrity":"sha512-ljq5VZkbcec7NP6s4KCnNN7Pr96KaRemRq9GvNB2JV8nda80F9kzUU+dGQjlm1Bh0H3u8XNflvPV/u2YxBOT2w==","signatures":[{"sig":"MEUCIHHjC3/c47u7p63Tq7uIlHfGxCSVIHe2ZseBM+rJQugkAiEA3M1RX0UR4aIPbjSPJWzGidZ0cTzsYGuNMPXhXrBV1uk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1536096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihcg1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpgug/9ENXvZx0Zlzg0G+ACJzUn4FWjjKbxuGbsUvQDjXv0B/a8jKR4\r\nCu2KHXdB54Dx+bnbp+rZaGckPWwhGXXdbae3UxH1c9SXI3TZhJzXCFzOmVSp\r\nMVAeKQDWOABXhdUdkteAf/ZvD4EyGYzQy/S5rGiG9cmMi1sEdu/DtWjhowzf\r\nlBzpZa2VxEOrevX8J78E3M4xswUqM7ef3cx4RDyCLUufWrmMnz+jO8cIdRC0\r\niv5mH5egU5v1fQ6PvcqX2nC1SLmKcDCRfUhcDc/jLRIk/eCxQA5wcgUJ1eME\r\nZ1vnx1sEs/DIM3NIZTZYYNHD82qWfVW+uHh6rHCRS3SQwt1fE7rH3z74N/JW\r\nOXBG74NtEWr6/4tBZxX+Y1C8CWyOadxviTD4PupTcqBywr9z1lkg8jeqMwUZ\r\nxgQo6Zk57u9nSD9rQyjSOCTyF/UDCT4We/gZ+6zZbOVVdXVWmm2Bysjkz1Zi\r\n+062rqiIxhyEvjF3WlrqQGVz4fPw1ps4enmiXPNSMLQTcZYZHC3j04tQ/8vA\r\n+scBCuOPGP5OX+j49EwjpeBuSLhmnUDwmscWTQEAqbguvx+LMqFhXjas+y/s\r\njfWqVfUsWJbGhLYCvbc4P+wLMhPyATCM/RJtMZtfs+UBq+kjnkkSFd0hoe2J\r\nG4ZhuBeORt84Qt9te1YeHEJ36XkOW0MQFYc=\r\n=O4W7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"8fe39d5b8098913a6a8f7a1465f9a27979f304c0","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.5.5","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.18.0_1652934708820_0.026002961249064427","host":"s3://npm-registry-packages"}},"1.18.1":{"name":"@markroland/path-helper","version":"1.18.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.18.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"55f917c163b85111f6f72fe33220d74a2d75a601","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.18.1.tgz","fileCount":34,"integrity":"sha512-Ehx93+vYj/2NBoSWMS4Hp3s4RvWDyV93GrHchYu5+pzL2AfujQjBOQIMl/yXY10/UQriIuhstTu8J2X14Jj7ug==","signatures":[{"sig":"MEQCHwO0/NTbPNh5JTQJRJOgKjg72Gwzxgc+GrCug3x6iUUCIQDdXxnTyo2zV9LH3/3NaPfHGmtnIqI2NUf6cFKD+zEzNw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1536116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJim9hDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2SQ//YVlUPrSmVqGQEQRo0tmgO94y+JDSEITE8iiLu+4zv5R5n7GQ\r\n17irkX49eHLO4aZbBY2LTPx5KZjwaXdDlERT8dtgdDx9pQtYVyBxog0REJVt\r\n8Kvb3skA4rFm/5CnAS8lLbhK9Q7dBcOTEK1tQ5ztYFvvskn5yWEJxAQ05OKd\r\nOmbRHh+6o6WrutoL1eCCNi+MPVBHaJOBSRz5Ot0I7Vf4ZKhXMt7V6XSUFJSv\r\nA6HffdMMFbqHfNw7m+Jq3WFIwi1uaBiUuguPgRmR50kI5pH6V3B7UACHqm4L\r\nhfrnb1BuvAk3jL6X12SK5jliTG2Cbg9nKMEkZDYO7ls0lX9SNgX1g7U7ZPIc\r\neVTw4ZY00cKMfHuzhxkLWIzGx+mDg2hd1JdHdTCtUMoDI8AFGj6UMMMInhmX\r\nE6+4ueSw/BekqkPtlTuHrmA1NR8qR1TJKFTGgjQkMUN+dJ3ePTQm5esnda1/\r\nFO4l2/H8OlHWr4m/E+JOCFWO36klL96tyj9jncmSxOcWb2lJSqQpa9CsYsNo\r\n7c3CbtQU4XTDpqG6kD+DmCGcHVbtCqMWB15CqFHCDgFu0beUKEWXSU8zOMpW\r\n2LgEEdfvWBsIFQzFx6Jta5Wpm6UQHypHaR9DldhLFuMOUGYpCnkm3JiGjhHJ\r\nBR0pkqyLb765rC0sxlER8kFSpLgiprWAwmI=\r\n=6pW2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"2f54cdf8f333112989317bf47f8f72ca3e451fe9","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.11.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.15.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.18.1_1654380611525_0.7874910421658055","host":"s3://npm-registry-packages"}},"1.18.2":{"name":"@markroland/path-helper","version":"1.18.2","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.18.2","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"45329f86e3a98b8a49fd01708b078231c749679c","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.18.2.tgz","fileCount":34,"integrity":"sha512-ZIWyup4Ub1HZVoTFxfBkkJ+IVRqffAnETrgDf2j/e1r7CV2J+0KjwyY22mgWF2wvc7dxakRh/tVo68QltKcj9g==","signatures":[{"sig":"MEUCIBn1Qz9pe4oYRqKe24pM691s8nSrUcD/hLz8IlDcqESJAiEAump1kpCzhQThpvgdcMPk5OroPq+aNLEVAujsHqD7/gM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1537251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1jsKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjFxAAjcSHmCAonoZ9UTeJ5Rs+cWW1DStjxarJjUeKFT/kDOfSk4yY\r\nOdV5HX8U6gdAh+wBo/+Sz/9SMarTY01kQ4yB+vVdN0evRz/Pt28Ig8TuJ97w\r\nXhtTX2l6Sp3sROfB9nDT7LsQ1NfPx03L9GgXUlYrSCHIQ097IPvuG+qifnrf\r\nDMLaUZDyN7OHt8OaTXJwDhvUaJUuS7wInAFHnw0ITV1HYCGEhpoQAYMAkYV7\r\ndlTDmtqXgNiKZCmTf/sFCZ+5KtIiOASfeJZTlqAgKjoZlc1Me3I3DsgB4op4\r\nP2XoEqEP1QZxwLi3KlSaD8l3xUxsHzwHmpwHALmg1f8k+cDtHD24ecvt1eH9\r\nTPeeFaNpSRvK0mYQEzeznuIml45Emk+v5KAHNOM1R89Y6e72mr8xPfWgIijj\r\nWkcafB9ky7DthDMaj3qj0LbUF7sfRnQN9+KHc2bpQf5uumjIKymHfcQH6wab\r\nieUptfY0OWecbMOVdT/dmwtFaziVi9QQZh0wkMC9vWiRprv5sBiDuVQkycXJ\r\nBX6azQpapelPiv4zrfVR6BkWQ8z1jVoN/3UVMV27KA4rXETES3aM0Ofgw4Zu\r\nHHLBJbjufLwm8YYCbPRyMrltbfFQWM1vIGexFEVGzibzV24y3iDp9LVMnGuB\r\n9v574BdTWg8KgY2q/DR5c1cwD7x0Ztnf0H4=\r\n=jKXf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"f5024595ea72071ba006fd284ae4d437122fba45","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.11.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.15.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.18.2_1658206986565_0.6817394714602685","host":"s3://npm-registry-packages"}},"1.19.0":{"name":"@markroland/path-helper","version":"1.19.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.19.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"e1349bba3f0ccb18bde4e9837f529d36c3f5be51","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.19.0.tgz","fileCount":34,"integrity":"sha512-Sdimq7WmaP+0HJhfEwZS8GU/bGAF/oL1O/+b6SkG0QG9DTup+fcVoTz0TiT8u+/2Ej8yHy60tBK0kb5XALszbA==","signatures":[{"sig":"MEUCIQDn/1MZhxqXODccXeMkwERdKAdZ7TLcA9P468pHbsTwVQIgb5EMuShWC9zrSo2xlDUX5q+9gtT3oTQZNCWzjjJOq5c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1545237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8z5zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLrg//XDuEJ4h03FolFSSJsQdEU3SJQub9mn6p8FH8Oxm/1Fr3ZKge\r\nVG1DjqKYxzrA5lmgkAxN44HGQQYzySPfaNDahH1+DC+DuzanJ1TYPG6VJG5J\r\n4gPEtPLGmc4A7kfSLxyHEk508X5F6+Z4Mfp7KQZs2bduhbsIkF2e6ttQ8nXu\r\nl2d0jBr+A+h/1eVDlCsonUuyDtBYGl7XLy/+dsvMIrGB05x00mmp7YDB4lG8\r\nrxbw8BIbmjEjBr5+KsJwrlVrodzNlkX68eVn7/9gIjrMKsGJHxoaKWVdfr/C\r\npN6EGR4RWYpy052nfTIkcQd7j/NRVgGZ0B4mXW1eFJ/muKKLZTKl3MCVXoRD\r\ndCrMo7hMWByCIylNNoEh4b5L4/O2yhBXkZg/j2A3JO9HF/mJY7YiBVEG+AdI\r\nw7c1kQwKIo/O+o8TeRKgFeiO3X8VQHBHF59DEGwzxVUMm1yKDcj3XQNYGuVz\r\nKWnpt5tbJ2P59ess/woh4cVDFWNwHDjRWr+G6nDo90C4/PONuZILSyphMmmy\r\nlGVGp1bF+0K5nPUCirlXUb5Nyrgd2cz7hmyX5Cj5ZCv0P472Gotl1I5cWE2Q\r\nQ1IKv3kjC3cSOSBmtLWXbR2gsuwdtxdl6T9RoaRTpgbYteXunQEMFt+vRXlh\r\n2QXXWAcHBH1ckI3zQ0cCbmzmcI8AjKUKEyc=\r\n=Q8BR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"19a5a269288fab8cdbfd9db4925326f065b222d3","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.11.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.19.0_1660108403251_0.3999911933425504","host":"s3://npm-registry-packages"}},"1.20.0":{"name":"@markroland/path-helper","version":"1.20.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.20.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"f5a88b78bffd146b2d1b4ae84a608e5717a2f6d7","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.20.0.tgz","fileCount":34,"integrity":"sha512-zOnVD4y41mHh5sFMDdM2REvHFIHr/sIVq0ObX3HPz5QbyQTPfJxSS0yxS8xwXzvSb9sDFIZcvMK36fzE4HCDDA==","signatures":[{"sig":"MEYCIQCmca3gxtMmMqDv4echUoXktcyAvsB/uAv03olo51i/MAIhAOyWLIx9z+NsS2QcVx3L8suVzX7fw1loUdlxsD8EYxh1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1548733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjpkVGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqOyxAAlX2GOI9FxbJVg56+7JCWm3iRhfl2VHaXulaJTpQqTOulrVs1\r\n+NDqGTIDemOPH6mzhOmzLYHig1mM+D8JPGfl96Gu09Q4jMgEFhRxO12/thRq\r\nAXvXxH2lmvgxVDZ8zxExgTeseGY6xkapjY5/rFiJs3YOZONH0fKZff93C4hq\r\nwzUHdupWPcXmVLejI3e1UqSca/8rFyAixyN0aabFyy5tfreOKmVabhznifoU\r\nYR2QMPy4vfOUvkCosTDdfRio2spcMpCXAFKMt1zO7J7YfzFKZBSuInGIRV3y\r\nRVODYzmldCvjCEacd1iMRJ6OuhfCqC1RCruBjS+TYc+ulqh/pTz8QlN1/XeS\r\nozVBqtddmJjBwrX657MFrrjTnYtzzphelLjsiv6ol7tWWOamTIZtB3H9f1YY\r\nsMz0yWtzLpZGns/nz5nsvGpqu5Vtu8mE1vbALL6i/aLScwlbti+mSesK2uee\r\nrFtspti8H/VW4c0s/m+8q7MOLiV3erJxeaBN2ocgtfm5LvXTuwQwhZvpnpE4\r\nlnTl7dtN1tsMRWvUsRe1RaHwMjV9GUl5V+2H0rz0j4DNUdw+Wiu5WSxLMo/h\r\nJUNHNimPtjoJVP3RwJuQF89x+iYgHpDt0FH6mXDnhyNm5Z0ciOHzN6rKbvJv\r\nKDN2xi556ICUULVu7M/1KSygVBYlI57eUcI=\r\n=2Ia3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"1475c3714e4a3a19741540d045018a24e01203b8","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"8.15.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"16.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.20.0_1671841093762_0.6459150778845222","host":"s3://npm-registry-packages"}},"1.21.0":{"name":"@markroland/path-helper","version":"1.21.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.21.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"527495ac8334a41fc7cada5ec6d5dbc70bfc3a32","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.21.0.tgz","fileCount":35,"integrity":"sha512-Ge7M4TcPRFbV8r7CPhfKY0inPlZW3X6U8OsCzsqfQmEq8SjNOndxfAYWBQMUZoQc8Ydy2wLX2SjATInTkHHgEw==","signatures":[{"sig":"MEYCIQDfqe+rue5Vvpt3iJgAAKRBtYOwnwORKWsFZsd2JFuJ6gIhAMOl1T45MwilTYhV8IQgL0EegWRbeZk98b3QQMD3FHtz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1562799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/jujACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpxXw//QqueMBU8XWxNxGxxzbp1apOloM0lQLpUYdHVxrS+Bguvj6Hg\r\n4R64erLUzop70huXBsOJmaP57dm9vS8IH4Pj5L+7vtQT0H2UZau2Zex+sPkC\r\n8syEfa515FR7HuDvW4e8cQQjSRAC6pt1sVWwSg0ni1tAhW8ZWmyA2cD9HmuE\r\nitfCSVanPn/k2dd0TgQYb1M+IjXieJVXyG9hgw08CE/KpWevuvIbptfXGow6\r\nHML+b1/Xn1PAb64XVO65cl2RvwO491OqVQVhCa7euB9a9BBS8Q8AQ+8Kcmsz\r\n44pM9MNdbQ0P5sNm2G6JQ6bq2WYo1Gtl4kxMvnZAHYhcx+dqiAD1YaqUqAjW\r\nC3N9PPPavtBH1nGvlXwV96Be8Zlk1zKWfzPubV0kD1kPshLhkJreRw8k593O\r\nQ8Zwd/1Gcdy2XUDYUiO+Lv/d6s/Y5zw385qozNskKfYP2/VksglDwGX0F1m3\r\nkv28Y+44mUHnCi3mxQa2cf9t0v1O1e5IDRwBag6jIXPd7Wy6vgwpwVNMgqLh\r\nzzujHM2jgRQ5T1SsYvNmoBMffit9X7ccSJNlveyISeJEXOUldWQsBEk3bgK6\r\ny0KciYgp8t5XHc7zK4uWCub0WfYMJ1A/a+RgYSrRaDrMZwHSpPyOttDdshXk\r\noic0+uaRzMeS9RCme5edOX3Lb7o1a+FSHuE=\r\n=DF1m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"f4a78957f8552d8eae43239374d6d111dab37020","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.3.1","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"18.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.21.0_1677605794819_0.6094022183606169","host":"s3://npm-registry-packages"}},"1.22.0":{"name":"@markroland/path-helper","version":"1.22.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.22.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"a343206e6c49f743b878af11cff0f66b0ed50dd0","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.22.0.tgz","fileCount":35,"integrity":"sha512-nmWQoQSNDPJwUDouq50r4AD+imQT4/Q12Xh19ClBN3wGNNCkPxGelFaRLGrIAYogOQ9cGhk2aAxKbIQvExXVww==","signatures":[{"sig":"MEYCIQDUi09oM72sc0gGsw310GcvfiflQgSFY9hUNvv5PFY6hAIhAM7BKH02yMxYb2RNmgw42ZOdwrKBKn9BNy/idFKwt6KD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1565730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkFOgLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqkrw//XM3kyEuAqVh5FgVa2TMWfkw5y+P7Yc6brXCKQDnJ8EdH8v+E\r\nlaCbS2VwjmGD0qMAILOlnKmi6HDfHrSeQDCBTUUsBaOaYZ1Fvh6WwgcZ0jAT\r\n7RcBJcmDQ4uzG+xoHMxeDFUpQ3Jb0HKxUTExyN44EOe9jb+qP31I7JvOMq+3\r\nq8kywMTytBrXRBYBA4AhQBQ0TTjOcBFsQJljLYOJFk6nq9vD3F6ZIu8txK+5\r\nd2AyLyFDCmpSPGSZR3XbD1ADrzcCHcAoipLRW6vjK89QIImurVpoa1whtbNb\r\nZg4FZXFvHcF+5Z3ZkLna/cXDN4Plpa6mHszH8ph/tsM98rf0E9HTRpgvJrV9\r\nbDwH4jww0ybiFh1JH3yKkDNDcg+RGFBZftbm3TADkwPGZafzHvqDaUrZptLW\r\nD0dt1EAXtf1/LIiIaee32Zbdy80FkvRiXeTI/u8/0SbQi8TsKCI5xNIzPAUz\r\n3fJhxuihLloKGkHt7FuQrKW2yagT5ueWH3Wv7lhOL2XTCbVojTM6KAtRU+cw\r\nXIkJvmuq2BjY5vrXDnNxGavPuvdueSjPQKIYJ3GsYmer/w7NJ0WlxWr9qiDo\r\nZNw3cXwqnsqR410dfjNKaYunx43QYvWQQ4HCJ6wYAjeMG7XJK2prXJCqU35U\r\nPaqECSCDn+wOc283SZK/Pfkyg8Sab/zgis4=\r\n=K4v/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"31a1c059ff01903d66501758741140261db11c1b","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.5.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"18.14.2","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.22.0_1679091723039_0.13532655887173162","host":"s3://npm-registry-packages"}},"1.23.0":{"name":"@markroland/path-helper","version":"1.23.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.23.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"07de70409bdd29c435000cb0b1b16136eb37ab92","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.23.0.tgz","fileCount":37,"integrity":"sha512-rkcVhB4hjwa4jn1nIHNmiLF9aTC2HWpT6x0o9VLC1HkBOz00I0A+CoJZuhFhFCoQvN9K5gWeOjHKvfEckYgv8Q==","signatures":[{"sig":"MEQCIGW6lrAU4gYaCzuuOdA49hWTO8OSkhtjVBY31ynOzCNGAiBMtZVqpoEVwueJppiIbH/8uCCPTb2XdPwN2Gd71IunIg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1589464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkG9O9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpsyQ/9HyY+s7a3fup3i1pkT7Jzph7r7OZCUPMDO9NY5GQ+iQr/FOk/\r\nGFbsHKMpdjDCtWZIn38grxYICnphmuYXgaBi6n7DDnYBUlm/Y0MeOaVZVb7o\r\noOyVeom6irjZceovo7gV4KAMAggq+9lrZe4hFSm06QGAMTj0pqi+fkWHtiqi\r\n64PeI0ZNDDw32lXv3RfV17gjDlf8rXmG6wfV6UihIAmLzjEQc65KeKwxON7q\r\nuMtkJdzui6NE6B33g5THnSY9dUx3cYHMTIFHd36maxJg5mt6yVyJTlHrOu5r\r\n2HclNMs/bslqqUIwaLkgqzE3Gl7XxTY0qMAlbGLXjIfj+3upiQmpnjdq5chq\r\nbyCZ1ck+pqN8pkC2/hJrGxTCJVoT0ASppgh8JK/cjnI3pUQzjL++4Ulk/mzV\r\nTuNBopGhZ5AkX9VUQ1EkZccY6wB77W06EMip3XsZu07CS8ndHdImLFhse3Hh\r\nDRq9b2qsqIewg0sgg8FWq9G7AsR/5ZPDjL8/65dHa44RmSjtEmeOg2J9mXO4\r\nIOzDFWjHvHlo7acc+YHZIrHb1HG8ZwtqbgE6P7Joech2D5tbcxmVRM0p1t1s\r\n0aAxFuZJNpdbabz1V+IFhRKMbmvYA0uQo7r0aljzAcZJxJoRKG32bdT+8KdV\r\nQCJ/UpAiYMwC5rdBV5D5DokYeYMsf59xYGA=\r\n=z65O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"5ca170301436ec129203fdae527f9509d1a5a955","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.5.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"18.14.2","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.23.0_1679545277659_0.74810559857223","host":"s3://npm-registry-packages"}},"1.23.1":{"name":"@markroland/path-helper","version":"1.23.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.23.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"5b64beae3b836d5ef9e24d92f4dbb7c1de3235b5","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.23.1.tgz","fileCount":37,"integrity":"sha512-XsdKfvSWk+3tIhP2hc/Apx0QoOSHlVr15Jr10wjMfP96fD6Kn6Rg7qEonug+2XYsgu+4pO94DeRJWbJVZvppHQ==","signatures":[{"sig":"MEQCIE6jqySjLN299/MeDZQu4AaqSsNbtp3qjjfon/9c77zQAiAjeFocNmArxOwg5/22+F6i//u6gSr1dSWuIe0blrELeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1592563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJgYQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrONg//dpqDte0+raauldSfVyS37X4WxySqLFHiYUtW8XWpqNgogMJb\r\nAiyabBj3eGcH1I73vhCSijkbexdVrA+/+SmNtI5wvFhlhK3gvDPyQW+qGX5e\r\nYs4ZN9NBW9tZuIkutfFeqfQFIlgOlArTiDtUhAOBkW7GfkwmB8Wlf/9+E2hf\r\nVqxTUPMoCPix/02XpV2l2oQTxAUg5ukMpzHzoorQ/hOQFdS9DjWqdv/6vgBy\r\nJ6ETa7117ry+jYDi4VWQBtcet0xm5AZz1pwwby3X5b6sTdGuXOYya+YfBeIF\r\nlTGdvnWAdNm0I/f+HJOhSCbYWT4yfCogE78B477hdQJIVBy4USw/kx+lJMf6\r\nhUcuaMzjuk35j9RSp179mrKWoePsM1AdLZmevOMOKHsimL9q/OORS6v/MIoa\r\nLVlis7YP09SpkkljscFD7p/RsJcdA5DUK45kvSvAvvcMHJwB+tSHFnSPaXi+\r\nAzDx8Qu1YorjTDzEtcIDm8IyC98lVov2swwP0itNwC6Mc1DdYnnDvcnrv44D\r\nloOYtUTAePfv7MHKElwI2eM+0piMLJfNSW5KwvmfCgANkDd1nnQCy7SLmGx8\r\nYcRC7t+MEsU5e0Sw9Tct+cEoB4LeH+uxK1gfGGu06vq6lS0h8ufZDK1xDaX8\r\nO0XC5ul5BF1xwpRChxBc14fbOFBaftk8/XY=\r\n=RvvZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/PathHelper.js","gitHead":"393e91c4bda2215ca82433fcac19a99663749543","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.5.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"18.14.2","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.23.1_1680213519955_0.801979628860944","host":"s3://npm-registry-packages"}},"1.23.2":{"name":"@markroland/path-helper","version":"1.23.2","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.23.2","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"a832b4a87f051c6750698817f2f139d2cf8a7a7a","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.23.2.tgz","fileCount":37,"integrity":"sha512-FhJtc+mpAv2TaQtRL3NGZmLIz9UN4ti3AqsQkeHFQBx55xbMYMIykjlhlUpUI0w9fWuoWV9ParLfUup6wZJPPQ==","signatures":[{"sig":"MEQCIBn84YYtGzGkIPEBXqamz6zZJ4NRMH2w1RTue3chjxJPAiA9kV8BysnuPsM5suEfy23tfX6iqdpRaKlNoZwRXi92Tw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1594342},"main":"src/PathHelper.js","gitHead":"86ca66bca75f1f18f3a1e58a8c3f607db86e8ff7","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.6.7","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^3.6.10","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.23.2_1691003696528_0.4224879495115559","host":"s3://npm-registry-packages"}},"1.23.3":{"name":"@markroland/path-helper","version":"1.23.3","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.23.3","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"a1780cab7c6de9e3552ca46df001e0635b6cbb25","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.23.3.tgz","fileCount":38,"integrity":"sha512-Raxm7sUMdhsErSUbBkYRfsxaB2UkkjLYf0j9EvAm7Rev04mRzIcli1oP+8HWDJQXs0J387ilObMjSyCfT2mwSg==","signatures":[{"sig":"MEYCIQDxUGmLzs6rY1gG4r6yg67OjRvGJnCX1kTu28GpzcrDKAIhAIFNAPLWBElU2JnEZ6XRKKpurA5mYymdyHuzZNbaVPd5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1599817},"main":"src/PathHelper.js","gitHead":"6642b44d3fac1863fff1228657c0c97c653b7b78","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.6.7","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.23.3_1691706312824_0.15243020098601323","host":"s3://npm-registry-packages"}},"1.23.4":{"name":"@markroland/path-helper","version":"1.23.4","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.23.4","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"7c4729c29849ea13e8a05b4d0aee2cee485e7981","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.23.4.tgz","fileCount":39,"integrity":"sha512-CYlo3b+98HzhcM4deIg5lnnPeGQmB+H5/HgsTHG7Z5KCUl6//SM02Kn4CLKP8sEIRKFcPb2xbHqZPtdet6rxGg==","signatures":[{"sig":"MEYCIQCAWLIIiBdmcD7sr4BK3gOhobSgN0LW975qRC9ofNcE4QIhAL3r0cITn3YTzLUPjcJ7hrHtPFK4MMb97Cay1DuJ0wpH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1602819},"main":"src/PathHelper.js","gitHead":"8b6534f9932051826aee91f9f003b6aa7297935c","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.6.7","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.23.4_1695142595782_0.3439771147376547","host":"s3://npm-registry-packages"}},"1.24.0":{"name":"@markroland/path-helper","version":"1.24.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.24.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"53e5b1be646b8b5935a49f65260d986afafe76d2","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.24.0.tgz","fileCount":39,"integrity":"sha512-44W30MTro8PpuzoPhcCEWUs14xdcubymCA8elebWHmljOysIsJ7fEqG73VGjVY8GVTsMukdqLsAnyPJCj5nKMw==","signatures":[{"sig":"MEUCIQDJWQpJ35+38eVknW0u10y/OWYjW51h8HUsPA/pIDdFBwIgVXf2xwuywXuV/Ed3+HTJSoPauF26Imtm34NqW1+PvSo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1610147},"main":"src/PathHelper.js","gitHead":"a0d51830b54521c615f45217e39923c24267b843","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.6.7","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.24.0_1695165518475_0.05972706171377351","host":"s3://npm-registry-packages"}},"1.24.1":{"name":"@markroland/path-helper","version":"1.24.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.24.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"3698bb539fe403fee09142424993a03c43488b0a","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.24.1.tgz","fileCount":40,"integrity":"sha512-iYs64cTDc7QeSPX4pz6LS9/2WYY2GbhHlmB3xncoxdodkSiJGM8wkN94ihXFBOrP4BT0WpdZo1yyooPNqVILwA==","signatures":[{"sig":"MEUCIGKTvrlghBqM4DyrfDeHY11bfzkx4RUetIXWiu7vOO2QAiEAz8FQZb8PsOxcNVkEaKHS1DxKENWYJq4rz71c2g2xcNY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1621580},"main":"src/PathHelper.js","gitHead":"e846ca9c849c57384614566b54cb9fa10f50a264","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.6.7","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.24.1_1695344559350_0.5503212535220021","host":"s3://npm-registry-packages"}},"1.24.2":{"name":"@markroland/path-helper","version":"1.24.2","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.24.2","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"eb9ca60cc33447379e70160e72d7446bb8ceafd6","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.24.2.tgz","fileCount":40,"integrity":"sha512-y5flsfMmFFMqIMxNMad8X+IhALpcvh8XY4kHPkbFCwAduKpLinWqm9ac3QK2TCZFlXYuya+civFUhVQqY6KgNA==","signatures":[{"sig":"MEYCIQDbjoI0HQ7Run9941kK81Bt9S1zsuxty/JQEGd41TZYdQIhAOXBGmN/vmCgIDQ7mSZpv0vUeOlcLlU/YqQMpKVB6shI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1621878},"main":"src/PathHelper.js","gitHead":"9c4616d3c4158ef7a7aef48624a02d95a93a8c43","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"9.6.7","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.3.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.24.2_1695965538282_0.6646552393703324","host":"s3://npm-registry-packages"}},"1.28.1":{"name":"@markroland/path-helper","version":"1.28.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.28.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"dfb990c67e7551a1af5f2e3a088641f03b7b6479","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.28.1.tgz","fileCount":40,"integrity":"sha512-g04DGl1NMtIiolJWyNK5yT+zaZDDFF7sXPnEXSSS7okbzEXmzcXdYDisoTIjg8yn7jOPlo9/ZE6/M2baBeep+g==","signatures":[{"sig":"MEYCIQDihLP9Ho4/+U9e7EHMITaZSrXJ6Tw4hf/kGQ6LsPi8fAIhAImipp7a5KYWXBmVEI4mUlvmply0C79aIBIGxJsmweUG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1641339},"main":"src/PathHelper.js","gitHead":"2462043b16967ab74e3889bd8e86ee7931dde513","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.1.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.28.1_1699995924575_0.02216800521811302","host":"s3://npm-registry-packages"}},"1.30.0":{"name":"@markroland/path-helper","version":"1.30.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.30.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"ecc266e29766ef7dee389fb280d66ac2e566370f","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.30.0.tgz","fileCount":41,"integrity":"sha512-ekVry8yV7Ts4msdlyWHZ5w7WgmM19ALdTeM+KQDZjh45tlitOQZ8DzjWVRjIrbspBKUnLxJ3+cvJgC3YSa0Wpw==","signatures":[{"sig":"MEQCIBcb8P7uYAxh18qucDarg9LQOI7N3ysDJOLRhMKh8KnZAiA7E7bSeNWbtp4CkScHggD5uTLbhafZ2QHvHYXFogqElQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1654434},"main":"src/PathHelper.js","gitHead":"d5748fc3e032d1f51f8795d331d19b8caf548fcb","scripts":{"demo":"node ./demo/index.js","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.2.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.10.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.30.0_1706320187823_0.33920049540907926","host":"s3://npm-registry-packages"}},"1.30.1":{"name":"@markroland/path-helper","version":"1.30.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.30.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"483ca6efea8235c6e9961dde8ab3039a1009911b","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.30.1.tgz","fileCount":42,"integrity":"sha512-laG8n4aEOSyDrZxe5b41Pd7x3tyFZoz9YlXmew98JTZVz5HhsxurBoRycps0ua+innqvmwI77hfnkg/vJXcRXQ==","signatures":[{"sig":"MEUCID0kjMG2N7BzCB4PkVurC3FimU3DwqHQXEbBSxhicKo7AiEAzSkaNearjkJhbhIEorUSoBmMr5L/d7LXN1jJeBahUro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1656051},"main":"src/PathHelper.js","gitHead":"c8a5cd01e9ccf05d422f646a825ac64485ff46a5","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"jshint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.2.4","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","jshint":"^2.13.6","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.30.1_1711346200273_0.8104003389962318","host":"s3://npm-registry-packages"}},"1.31.0":{"name":"@markroland/path-helper","version":"1.31.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.31.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"fb3740c78a3255f204fc5fbc3812d764d54843e4","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.31.0.tgz","fileCount":42,"integrity":"sha512-AlJFEERrcKJNVRwZLR46Xy/7rlbJFX6CkFYtNGo9C2VZgMLr6pC4S9p0hqHspWzSMsxxo3Bi0YZD4kMGjgxPOg==","signatures":[{"sig":"MEYCIQCcyC09FRVMdzq1ubxyh7HmkwO1kIZLbrWKWr3tTRaZHwIhANEW5yKuUdOPCmyKO9FIPco+CHSMNqglYXQWUcJp2Fb1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1658899},"main":"src/PathHelper.js","gitHead":"8b53ccb4d4953b39097e132980011523545ef5aa","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"jshint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.5.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","jshint":"^2.13.6","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.31.0_1714024701660_0.5553101390691382","host":"s3://npm-registry-packages"}},"1.32.0":{"name":"@markroland/path-helper","version":"1.32.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.32.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"be9f15615a4d7534a51bb8fc860de93d443fcb19","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.32.0.tgz","fileCount":42,"integrity":"sha512-8nXZ2GtdwnUXhcHt+Wa6u0tmoSUbi6CTGMt1jG4R9BuNU38cgIIzSLhzhvIRDcwtnL0wjIfVDh68g78odxr/dA==","signatures":[{"sig":"MEYCIQCk+GO14Mk788dUgxMYWB1TTuR1kvb0qeRVyOwEwmgIsAIhAJw7NigrlndaS72g5Sbe756rnyerC4ozx0PySlyaaENE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1666392},"main":"src/PathHelper.js","gitHead":"ced12f9ba44425d631d8db198c88550140b9af12","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"jshint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.7.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","jshint":"^2.13.6","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.32.0_1717620228234_0.8060827156388333","host":"s3://npm-registry-packages"}},"1.33.0":{"name":"@markroland/path-helper","version":"1.33.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.33.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"5a6528f0dc6b9137c77eec862c074d0fa2e4a21f","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.33.0.tgz","fileCount":42,"integrity":"sha512-MOtp4qzY829E9pdMH1JqTB1jBT2FbDAAWJC1oCl9LvEo+45js+3arwAVKS+nb5x0VgoHNUIL6NUGUta/8bQUtA==","signatures":[{"sig":"MEQCIA4wtNdVmK3HODc3kyrNxjBDxbbRkUpijPiPseMc+yFpAiA5SktHdiuOW5cx+1oLVQZO6cr0H4nG4zLezGJrvqRq0A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1680578},"main":"src/PathHelper.js","gitHead":"cbf6ee5cea03d3acdd3af10f2e97ee0418c88c23","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"jshint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.8.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","jshint":"^2.13.6","express":"^4.18.1"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.33.0_1733348711823_0.06773665967485809","host":"s3://npm-registry-packages"}},"1.34.0":{"name":"@markroland/path-helper","version":"1.34.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.34.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"3978b90a3c96b065635bbba6a11decbb9e974a8d","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.34.0.tgz","fileCount":42,"integrity":"sha512-fKTOPDvGQhnPXZYL3XVpEu69FG4Wsv9I+iDqT20Pk7/OyI+Rnut1o5L21Lf48kdb6JpBaUNJz3RWlCIqUJ/E2Q==","signatures":[{"sig":"MEYCIQCguY90hvo2yG4FCSpuiXKr3vUeLogsCPWnUHRTo/iPEAIhAKqUvWLCZOrMymNWQsDRqW/Y03Ln+mxjYXTTB0k7uyKT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1692285},"main":"src/PathHelper.js","gitHead":"4ad1ee4ba85dcd2434174d0bb2d3a1d17ea4ffda","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.8.3","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.34.0_1733529615980_0.5217359639499659","host":"s3://npm-registry-packages"}},"1.36.0":{"name":"@markroland/path-helper","version":"1.36.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.36.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"bdb253e737da62e3481ca95c3b9605100cdd9614","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.36.0.tgz","fileCount":3,"integrity":"sha512-th8ipP+E+wBft0DKNPRmuhxHm6rzYNzBI5PIvFx5scLx5/ecdDpgq2WJTO/ctAO1oh2/7aOkA1mhvle/flQHiA==","signatures":[{"sig":"MEUCIDBegtegsWO0T0iHZ52fyBrfGcLKg6fD3xFhJtsB7l5IAiEA+4zydlruuR66g4Yc/Rk9DOHjTSoteCUIggUfGgzuNRw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206445},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"5e27ad6efbf5c04b50d215e1ead855eb87624715","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.36.0_1744765011250_0.7200224267120137","host":"s3://npm-registry-packages-npm-production"}},"1.37.0":{"name":"@markroland/path-helper","version":"1.37.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.37.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"33d6ca9e644ad09c88c309bbf9623d48e3ba995f","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.37.0.tgz","fileCount":3,"integrity":"sha512-WFgZO3uZgIQKbxpIodrp7bQtNtxjwUwO4zlhURLLGDFY47OT/Xibaj9Vc55DXc0aid6qPoBgwuPL90qUliQhsg==","signatures":[{"sig":"MEUCIQC/ejY2wn4yiDHt6WQm+I+E1Ig0NA1jhqQjbNbai7hA3QIgMv2pJLrfVq9uNjXSn6vGO06XuNHPmoEUB0SPwei9LHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203814},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"1c3aaa80c15a7030a248685cc53184d6fc45e9b0","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.37.0_1745295902931_0.14566604119419946","host":"s3://npm-registry-packages-npm-production"}},"1.39.0":{"name":"@markroland/path-helper","version":"1.39.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.39.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"99d2522633509f1873226cd2457e7002e18b9d61","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.39.0.tgz","fileCount":3,"integrity":"sha512-IZ3FS64qU6FAHZtZ4FMgStBjEHnY4AfSl9KLSiEVboT0qNM5ko2gYsifYHfwW2yRDqrvaTNmEkoYzJ6dEjCSyw==","signatures":[{"sig":"MEUCIBR8OnstGtpWYxmxK0T5r+mua2H1Z8NTY2suUCydwrubAiEA5qE9mlJhOhg8CdJrurC+DRjX2cVORdBRwfDwdv4Qao4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209595},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"193d143e13cc4ecf993746b61cfa304d0f124aca","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.39.0_1746230273092_0.06914187731080013","host":"s3://npm-registry-packages-npm-production"}},"1.39.1":{"name":"@markroland/path-helper","version":"1.39.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.39.1","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"50b23c7ef97e2634e2980e404b9128964e23b4e1","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.39.1.tgz","fileCount":3,"integrity":"sha512-0cZ+GVlWbDAiap2HCNntQE6f/LgXgQ9Wb3yQ8ke1HItX1LlMxxs2T+22YbEUhPC5UpABgAVvKNz8AtGGNA+XFQ==","signatures":[{"sig":"MEYCIQDqjQko4HkLhnrZxMxgz/2g4yv1JEmcCy/BSCdMx/A7TgIhAIsu77eBJoBxCWZuhL3Ls0v99mcU8Mn2jkAfLjBir2Dh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210329},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"67494f9370699c153a8ab363013f09c207c54f1d","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.39.1_1746760605648_0.869243964569604","host":"s3://npm-registry-packages-npm-production"}},"1.40.0":{"name":"@markroland/path-helper","version":"1.40.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.40.0","maintainers":[{"name":"markroland","email":"radiowhir@gmail.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"fbc472499a5b492d2d74a8fd644bd5be7cf73127","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.40.0.tgz","fileCount":3,"integrity":"sha512-vyQEUyzG0iaoTU172eE4qAiv9cGOlU2KWv+PFlRX42d84qGm++YpjkkA2dw76aDEAPR75Y5lrdb7NQKMvG9PhQ==","signatures":[{"sig":"MEQCIHVKo06LSEXupWcw7d7B8G1RrQjRy0w5Szyr/b1E4vLAAiA27ijEyI3kjCOfNr8c2Ziqp0D62F832XAdhNZwQsqmtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212773},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"c397778f790cbe3b4ed14dfd3f5b8947f1cbc166","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","actor":{"name":"markroland","type":"user","email":"radiowhir@gmail.com"},"email":"radiowhir@gmail.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"10.9.2","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.40.0_1752001135439_0.12313716556389842","host":"s3://npm-registry-packages-npm-production"}},"1.41.0":{"name":"@markroland/path-helper","version":"1.41.0","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.41.0","maintainers":[{"name":"markroland","email":"support@markroland.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"b30f6ba11181dc4625d654954bc70fc61fbe9d49","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.41.0.tgz","fileCount":3,"integrity":"sha512-AxrRoZSmmf1hXZW/VgUeEKzY+KiYgmrV77F+adhuIsuM1Y6RBajD7nUmaAR98nqLU/1wkLODDMW1DZgw2v5wMw==","signatures":[{"sig":"MEYCIQDJiUaT73JZ6cFuHdoiiWxUDk5wPuUXOkP9cbYQMjfQNwIhANwjChFNKArv2oUlmoEICkh5vx2xQxwjKGc+x421Rl7N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213433},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"9d11dc6abba1ac2a3be3a9f5a2cf1951a41c2cc5","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"support@markroland.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"11.16.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.41.0_1786061826575_0.842057917523747","host":"s3://npm-registry-packages-npm-production"}},"1.41.1":{"name":"@markroland/path-helper","version":"1.41.1","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.41.1","maintainers":[{"name":"markroland","email":"support@markroland.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"2d1c0b862d287739d4dc6b1ba0f64b9e882809ba","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.41.1.tgz","fileCount":3,"integrity":"sha512-xxUsIvExUp75bcJZLM6ZCpsGZ0+XspGYtQwvJKN9ROZVMIsKE/9A9rLVc103acM5iV0u+KpaEfqma6jNKukbWg==","signatures":[{"sig":"MEYCIQCxVk4Rzdw6kbPrDT8AkBzgnhGmHI5t8fCGwsZ0fC8AqgIhAPeg2oU/sKSAHXMfl+Gy5RwLxu7ObI/NaBOctf3Q7KQG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213463},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"86d2ca9e37bac7bb9a67f1b7624d2c8c8c981446","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"support@markroland.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"11.16.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.41.1_1787803940572_0.775376640334742","host":"s3://npm-registry-packages-npm-production"}},"1.41.2":{"name":"@markroland/path-helper","version":"1.41.2","keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","_id":"@markroland/path-helper@1.41.2","maintainers":[{"name":"markroland","email":"support@markroland.com"}],"homepage":"https://github.com/markroland/path-helper#readme","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"dist":{"shasum":"e500309510ab70a84fabbf80e01798e3f27fbebd","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.41.2.tgz","fileCount":3,"integrity":"sha512-qvHL7BVlU7RUU5j1jPFxzdc/DG8Z0nyDWHsVzfcgRzbdNviBrUTjSMQ6/hUkmV0a06ZVG8tzMxfjR9Mhu4JnXg==","signatures":[{"sig":"MEYCIQDRQUjOMOr/2Jjx7sR/atVv5tcgxNCMzx8fC5m8ofuR2wIhAId4CJ2Dn2cul7kN3xSY2n8ihWlPXY7sVzmKRs0o9Pmo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213466},"main":"src/PathHelper.js","engines":{"npm":">=10.x","node":">=22.x"},"gitHead":"3fde1d1e9ae06ff961817298b878c9f718d09dd6","scripts":{"demo":"node ./demo/index.js","docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest"},"_npmUser":{"name":"markroland","email":"support@markroland.com"},"repository":{"url":"git+https://github.com/markroland/path-helper.git","type":"git"},"_npmVersion":"11.16.0","description":"Utility functions for working with points, paths and geometry.","directories":{},"_nodeVersion":"24.18.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","jsdoc":"^4.0.2","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","@eslint/js":"^9.16.0"},"_npmOperationalInternal":{"tmp":"tmp/path-helper_1.41.2_1788059146523_0.37778972273136846","host":"s3://npm-registry-packages-npm-production"}},"1.42.0":{"name":"@markroland/path-helper","version":"1.42.0","description":"Utility functions for working with points, paths and geometry.","main":"src/PathHelper.js","scripts":{"docs":"jsdoc ./src -d docs","lint":"eslint ./src","test":"jest","demo":"node ./demo/index.js"},"repository":{"type":"git","url":"git+https://github.com/markroland/path-helper.git"},"keywords":["points","paths","geometry","polyline"],"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","bugs":{"url":"https://github.com/markroland/path-helper/issues"},"homepage":"https://github.com/markroland/path-helper#readme","devDependencies":{"@eslint/js":"^9.16.0","eslint":"^9.16.0","express":"^4.18.1","globals":"^15.13.0","jest":"^27.5.1","jsdoc":"^4.0.2"},"engines":{"node":">=22.x","npm":">=10.x"},"gitHead":"a3ab8de63e6f9e71ec8f51669cbfe62a3e0dc3ce","_id":"@markroland/path-helper@1.42.0","_nodeVersion":"24.18.1","_npmVersion":"11.16.0","dist":{"integrity":"sha512-KNBSyq/2SXH5ZvJayAqL4Qh9Lb7s0aHOskJn97dlai6jcmAy8cAKkkxRoeLDTm54Ur1eQbsxf/j/U2xR4MPUaw==","shasum":"d7ac1067816e2b54db133c25b86d389c3b7010f6","tarball":"https://registry.npmjs.org/@markroland/path-helper/-/path-helper-1.42.0.tgz","fileCount":3,"unpackedSize":215927,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGPum8+hURcmHVKxj1bvRimLucHzrjYDB7eOTh60U+fDAiEAz/a43S373tk5HXQDsxEEE3Wc6ebjlJQL/3TbCyKdVvc="}]},"_npmUser":{"name":"markroland","email":"support@markroland.com"},"directories":{},"maintainers":[{"name":"markroland","email":"support@markroland.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/path-helper_1.42.0_1788797485049_0.3194299284601194"},"_hasShrinkwrap":false}},"time":{"created":"2021-10-14T05:50:45.227Z","modified":"2026-09-07T16:11:25.381Z","1.0.0":"2021-10-14T05:50:45.454Z","1.0.1":"2021-10-14T06:11:25.299Z","1.1.0":"2021-10-18T05:35:57.078Z","1.2.0":"2021-11-09T19:21:28.844Z","1.3.0":"2021-11-27T04:57:00.182Z","1.4.0":"2021-12-31T22:01:00.896Z","1.5.0":"2022-01-08T01:46:47.715Z","1.5.1":"2022-01-08T01:48:33.709Z","1.9.0":"2022-01-26T00:07:49.358Z","1.9.1":"2022-01-26T00:26:34.386Z","1.11.0":"2022-02-11T17:42:17.969Z","1.11.1":"2022-02-14T06:33:29.612Z","1.11.2":"2022-02-15T07:09:02.766Z","1.11.3":"2022-02-15T07:22:24.727Z","1.11.4":"2022-03-18T04:16:03.908Z","1.11.5":"2022-03-27T05:29:02.632Z","1.11.6":"2022-03-27T22:10:31.638Z","1.12.0":"2022-04-02T22:03:48.861Z","1.13.0":"2022-04-19T23:42:37.744Z","1.13.1":"2022-04-20T00:17:21.524Z","1.14.0":"2022-04-23T05:09:17.295Z","1.15.0":"2022-04-23T05:23:18.884Z","1.15.1":"2022-04-24T05:10:45.718Z","1.16.0":"2022-04-28T23:14:18.210Z","1.17.0":"2022-05-19T04:25:44.132Z","1.18.0":"2022-05-19T04:31:49.072Z","1.18.1":"2022-06-04T22:10:11.700Z","1.18.2":"2022-07-19T05:03:06.844Z","1.19.0":"2022-08-10T05:13:23.510Z","1.20.0":"2022-12-24T00:18:14.024Z","1.21.0":"2023-02-28T17:36:35.078Z","1.22.0":"2023-03-17T22:22:03.283Z","1.23.0":"2023-03-23T04:21:17.853Z","1.23.1":"2023-03-30T21:58:40.156Z","1.23.2":"2023-08-02T19:14:56.773Z","1.23.3":"2023-08-10T22:25:13.150Z","1.23.4":"2023-09-19T16:56:36.085Z","1.24.0":"2023-09-19T23:18:38.802Z","1.24.1":"2023-09-22T01:02:39.614Z","1.24.2":"2023-09-29T05:32:18.586Z","1.28.1":"2023-11-14T21:05:24.912Z","1.30.0":"2024-01-27T01:49:48.061Z","1.30.1":"2024-03-25T05:56:40.489Z","1.31.0":"2024-04-25T05:58:21.911Z","1.32.0":"2024-06-05T20:43:48.507Z","1.33.0":"2024-12-04T21:45:12.095Z","1.34.0":"2024-12-07T00:00:16.291Z","1.36.0":"2025-04-16T00:56:51.425Z","1.37.0":"2025-04-22T04:25:03.115Z","1.39.0":"2025-05-02T23:57:53.273Z","1.39.1":"2025-05-09T03:16:45.877Z","1.40.0":"2025-07-08T18:58:55.644Z","1.41.0":"2026-08-07T00:17:06.727Z","1.41.1":"2026-08-27T04:12:20.714Z","1.41.2":"2026-08-30T03:05:46.705Z","1.42.0":"2026-09-07T16:11:25.189Z"},"bugs":{"url":"https://github.com/markroland/path-helper/issues"},"author":{"name":"Mark Roland"},"license":"SEE LICENSE IN README.md","homepage":"https://github.com/markroland/path-helper#readme","keywords":["points","paths","geometry","polyline"],"repository":{"type":"git","url":"git+https://github.com/markroland/path-helper.git"},"description":"Utility functions for working with points, paths and geometry.","maintainers":[{"name":"markroland","email":"support@markroland.com"}],"readme":"Path Helper\n===========\n\nThe PathHelper class contains a variety of methods to assist with performing operations\non multi-point paths (polylines).\n\nUsage\n-----\n\nInstall using Node Package Manager:\n\n```\nnpm install @markroland/path-helper\n```\n\nInclude in your project using Common JS or ES Modules:\n\n```\nconst PathHelper = require('@markroland/path-helper');\n```\n\n```\nimport PathHelper from '@markroland/path-helper';\n```\n\n\nDocumentation\n-------------\n\nCode is documented using [JSDoc](https://jsdoc.app/) syntax and is compiled using the [NPM jsdoc](https://www.npmjs.com/package/jsdoc) package.\n\nGenerate documentation:\n```sh\nnpm run docs\n```\n\nDemo (BETA)\n-----------\n\nThis is a new experimental feature. This will start a local web server where class methods can be demonstrated.\n\n```sh\nnpm run demo\n```\n\nOpen http://localhost:8000 in your browser.\n\nFormatting\n----------\n\nUse [ESLint](https://eslint.org) to check code formatting. Run with:\n\n```sh\nnpm run lint\n```\n\nTesting\n-------\n\nUnit Testing is being developed with [Jest](https://jestjs.io). Run with:\n\n```sh\nnpm run test\n```\n\nCommon Data Types\n-----------------\n\n### Point\n\nA point is an array of 2 or 3 elements representing either the point's X,Y or X,Y,Z position.\n\n```js\nlet point = [0.0, 0.0];\n```\n\n### Path\n\nA path is an array of one or more points.\n\n```js\nlet path = [\n    [-1, 0],\n    [ 1, 0]\n];\n```\n\n### Paths\n\nPaths represent one or more path.\n\n```js\nlet paths = [\n    [\n        [-1, 0],\n        [ 1, 0]\n    ],\n    [\n        [0, -1],\n        [0,  1]\n    ]\n];\n```\n\nMethods\n-------\n\nThe following methods are grouped and ordered loosely by their purpose and use.\n\nNote: Some examples show rounded results in floating point numbers in order\nto keep the examples concise.\n\n**Types of Operations:**\n - [General Operations](#general-operations)\n - [Mathematical Formulas](#mathematical-formulas)\n - [Shapes](#shapes)\n - [Linear Transformations](#linear-transformations)\n - [Boolean Shape Operations](#boolean-shape-operations)\n - [Path Operations](#path-operations)\n\n```js\nlet PH = new PathHelper();\n```\n\nNote: A custom Psuedo-Random Number Generator (PRNG) can be set as a class parameter.\nThis is useful for creating consistent, deterministic results as required by most NFTs art.\n\n---------------------------------------------------------------------------------------\n### General Operations\n*The following methods provide general help with interacting with Path data in JavaScript*\n\n---------------------------------------------------------------------------------------\n\n### info\n\nGet information about a 2D path\n\n```js\nlet path = [\n    [-1,  1],\n    [ 1,  1],\n    [ 1, -1],\n    [-1, -1]\n];\nlet i = PH.info(path);\n```\n\n**Expected Output:**\n```js\n{\n    \"min\": [-1, -1],\n    \"max\": [1, 1],\n    \"points\": 4,\n    \"range\": [2, 2],\n    \"center\": [0, 0]\n}\n```\n\n### deepCopy\n\nCreate a deep copy of a JavaScript array/object.\n\nThis is useful so that paths can be duplicated and then manipulated\nindependently without any references.\n\n### pathsToFixed\n\nSimplify the precision of floating point numbers in a Paths array.\n\n```js\nlet path = [\n    [\n        [0.0001, 0.1501],\n        [1.1645, 1.5762]\n    ]\n];\nlet new_path = PH.pathsToFixed(path, 2);\n```\n\n**Expected Output:**\n```js\n[\n    [\n        [0, 0.15],\n        [1.16, 1.58]\n    ]\n]\n```\n\n### pathPointsArrayToObject\n\nConvert the points in a path from an array to an object\n\n```js\nPH.pathPointsArrayToObject([\n    [0.0001, 0.1501],\n    [1.1645, 1.5762]\n]);\n```\n\n**Expected Output:**\n```js\n[\n    {x: 0.0001, y: 0.1501},\n    {x: 1.1645, y: 1.5762}\n]\n```\n\n### pathPointsObjectToArray\n\nConvert the points in a path from an object to an array\n\n```js\nPH.pathPointsObjectToArray([\n    {x: 0.0001, y: 0.1501},\n    {x: 1.1645, y: 1.5762}\n]);\n```\n\n**Expected Output:**\n```js\n[\n    [0.0001, 0.1501],\n    [1.1645, 1.5762]\n]\n```\n### arrayColumn\n\nGet the values from a single column in the input array\n\n```js\nPH.arrayColumn(\n    [\n        [1, 2, 3],\n        [4, 5, 6],\n        [7, 8, 9]\n    ],\n    2\n);\n// Output is [3, 6, 9]\n```\n\n### getMin\n\nGet the minimum value from each coordinate compononent of a 2D or 3D path\n\n```js\nlet path = [\n    [-2,  1],\n    [ 4,  1],\n    [ 4, -3],\n    [-2, -3]\n];\nPH.getMin(path);\n// Output is [-2, -3]\n```\n\n### getMax\n\nGet the minimum value from each coordinate compononent of a 2D or 3D path\n\n```js\nlet path = [\n    [-2,  1],\n    [ 4,  1],\n    [ 4, -3],\n    [-2, -3]\n];\nPH.getMax(path);\n// Output is [4, 1]\n```\n\n### boundingBox\n\nGet the Bounding Box coordinates for a 2D or 3D path\n\nThis returns a multidimensional array with the minimum and maximum values for each dimension\n\n```js\nlet path = [\n    [-1,  0],\n    [ 0, -1],\n    [ 1,  0],\n    [ 0,  1]\n];\nPH.boundingBox(path);\n```\n\n**Expected Output:**\n```js\n[\n    [-1, 1],\n    [-1, 1],\n]\n```\n\n### arrayMin\n\nGet the smallest number from an array\n\n```js\nPH.arrayMin([10, 2, 4.5, 7, 2.3, -1.2, -2.7]);\n// Output is -2.7\n```\n\n### arrayMax\n\nGet the largest number from an array\n\n```js\nPH.arrayMax([10, 2, 4.5, 7, 2.3, -1.2, -2.7]);\n// Output is 10\n```\n\n### getRndInteger\n\nGet a random Integer (whole number) between two values (inclusive).\nThis can take an optional Psudeo-Random Number Generator (PRNG) function as a final parameter,\nwhich can help with the creation of deterministic results.\n\n```js\nPH.getRndInteger(1, 10);\n// Output is 5\n```\n\n### getRandom\n\nGet a random Number between two values (inclusive).\nThis can take an optional Psudeo-Random Number Generator (PRNG) function as a final parameter,\nwhich can help with the creation of deterministic results. This has a default range of 0 to 1\nto match Math.random().\n\n```js\nPH.getRandom(1, 3);\n// Output is 1.3623930350489668\n```\n\n### getGaussianRandom\n\nGet a random number between 0 and 1 within a Gaussian Distribution probability.\nThis can take an optional Psudeo-Random Number Generator (PRNG) function as a final parameter,\nwhich can help with the creation of deterministic results.\n\n```js\nPH.getGaussianRandom();\n// Output is 0.5166768388415707\n```\n\n### map\n\nMap a value from one scale to another scale. This accepts an optional fifth boolean parameter\nto clamp the result to the output scale.\n\n```js\nPH.map(2, 0, 10, -5, 5);\n// Output is -3\n```\n\n### Clamp\n\nConstrain a value within a range of numbers. If the input\nvalue is below the acceptable minimum, then the\nminimum value will be returned. If the input value is\nover the acceptable maximum, then the maximum value\nwill be returned.\n\n```js\nPH.clamp(10, 0, 100);\n// Output is 10\n\nPH.clamp(-10, 0, 100);\n// Output is 0\n\nPH.clamp(110, 0, 100);\n// Output is 100\n```\n### lerp\n\nPerform a linear interpolation between two values\n\n```js\nPH.lerp(0, 20, 0.3);\n// Output is 6\n```\n\n### degreesToRadians\n\nConvert Degrees to Radians\n\n```js\nPH.degreesToRadians(135.0);\n// Output is 2.356194490192345\n```\n\n### radiansToDegrees\n\nConvert Radians to Degrees\n\n```js\nPH.radiansToDegrees(0.5 * Math.PI);\n// Output is 90\n```\n\n### polarToRect\n\nConvert Polar coordinates to Rectangular (Cartesian) coordinates\n\n```js\nPH.polarToRect(1, 0.25 * Math.PI);\n// Output is [0.7071067811865476, 0.7071067811865475]\n```\n\n### rectToPolar\n\nConvert Rectangular (Cartesian) coordinates to Polar coordinates\n\n```js\nPH.rectToPolar(0.7071, 0.7071);\n// Output is {radius: 0.99999, theta: 0.7854}\n```\n\n### greatestCommonDivisor\n\nGet the [Greatest Common Divisor](https://en.wikipedia.org/wiki/Greatest_common_divisor) of two numbers\n\n```js\nPH.greatestCommonDivisor(50, 30);\n// Output is 10\n```\n\n### sign\n\nGet the sign of the number: +1 for positive, -1 for negative and 0 for zero.\n\n```js\nPH.sign(23)\n// Output is 1\nPH.sign(-12)\n// Output is -1\nPH.sign(0)\n// Output is 0\n```\n\n---------------------------------------------------------------------------------------\n### Mathematical Formulas\n*The following methods perform general mathematical operations*\n\n---------------------------------------------------------------------------------------\n\n### crossProduct\n\nCalculate the cross product of two 3D vectors\n\n```js\nlet a = [-2, 1, 1];\nlet b = [ 3, 2, 1];\nPH.crossProduct(a, b);\n// Output is [-1, 5, -7]\n```\n\n### dotProduct\n\nCalculate the dot product of two matrices\n\n```js\nlet a = [-2, 1, 1];\nlet b = [ 3, 2, 1];\nPH.dotProduct(a, b);\n// Output is -3\n```\n\n### matrixMultiply\n\nMultiply two matrices\n\n```js\nlet a = [[1, 2, 3]];\nlet b = [\n    [2, 0, 0],\n    [0, 2, 0],\n    [0, 0, 2]\n];\nPH.matrixMultiply(a, b);\n// Output is [ [ 2, 4, 6 ] ]\n```\n\n### lineSlopeIntercept\n\nCalculate the slope and y-intercept of the line passing between two points.\nIn the return object, `m` represents slope and `b` represents the y-intercept.\n\n```js\nPH.lineSlopeIntercept([1, 2], [2, 3]);\n// Output is {m: 1, b: 1}\n```\n\n### solveQuadratic\n\nSolve the Quadratic Equation. For real values only.\nStandard Quadratic Equation: ax^2 + bx + c = 0\n\n```js\nPH.solveQuadratic(2, 4, -4);\n// Output is [0.7321, -2.7321]\n```\n\n### distance\n\nCalculate the distance between two points in 2D or 3D space\n\n```js\nPH.distance([0, 0], [1, 1]);\n// Output is 1.4142135623730951\n\nPH.distance([0, 0, 0], [1, 1, 1]);\n// Output is 1.7320508075688772\n```\n\n### midpoint\n\nCalculate the point equidistance from two points\n\n```js\nPH.midpoint([0, 0], [1, 1]);\n// Output is [0.5, 0.5]\n```\n\n### angle\n\nCalculate the angle between 3 points\n\n```js\nPH.angle([1, 0], [0, 0], [1, 1]);\n// Output is 0.7853981633974483\n```\n\n### curvature\n\nCalculate the curvature of 3 points\n\n```js\nPH.curvature([1, 0], [0, 0], [1, 1]);\n// Output is 0.7071067811865476\n```\n\n---------------------------------------------------------------------------------------\n### Shapes\n*The following methods help create basic shapes, curves, etc.*\n\n---------------------------------------------------------------------------------------\n\n### polygon\n\nCreate a [regular polygon](https://en.wikipedia.org/wiki/Regular_polygon) centered at the origin\n\n```js\nPH.polygon(4, 1.0, Math.PI/4);\n```\n\n**Expected Output:**\n```js\n[\n    [\n        0.7071067811865476,\n        0.7071067811865475\n    ],\n    [\n        -0.7071067811865475,\n        0.7071067811865476\n    ],\n    [\n        -0.7071067811865477,\n        -0.7071067811865475\n    ],\n    [\n        0.7071067811865474,\n        -0.7071067811865477\n    ],\n    [\n        0.7071067811865477,\n        0.7071067811865474\n    ]\n]\n```\n\n### rectangle\n\nCreate a rectangle centered at the origin. Specify the width and height.\n\n```js\nPH.rectangle(1, 0.5);\n```\n\n### ellipse\n\nCreate an ellipse (oval) centered at the origin. Specify the width, height, and number of segments.\n\n```js\nPH.ellipse(4, 2, 60);\n```\n\n### superellipse\n\nCreate a superellipse, also known as a Lamé curve, centered at the origin. Specify the width, height, and number of segments.\nA squircle is a special case when the width and height are the same.\n\n```js\nPH.superellipse(4, 2, 60);\n```\n\n### star\n\nCreate a [regular star polygon](https://en.wikipedia.org/wiki/Star_polygon) centered at the origin\n\n```js\nPH.star(4, 1.0, Math.PI/4);\n```\n\n**Expected Output:**\n```js\n[\n    [\n        1,\n        0\n    ],\n    [\n        0.4045084971874737,\n        0.29389262614623657\n    ],\n    [\n        0.30901699437494745,\n        0.9510565162951535\n    ],\n    [\n        -0.15450849718747367,\n        0.4755282581475768\n    ],\n    [\n        -0.8090169943749473,\n        0.5877852522924732\n    ],\n    [\n        -0.5,\n        6.123233995736766e-17\n    ],\n    [\n        -0.8090169943749475,\n        -0.587785252292473\n    ],\n    [\n        -0.15450849718747378,\n        -0.47552825814757677\n    ],\n    [\n        0.30901699437494723,\n        -0.9510565162951536\n    ],\n    [\n        0.40450849718747367,\n        -0.2938926261462367\n    ],\n    [\n        1,\n        0\n    ]\n]\n```\n\n### parabola\n\nCreate a [parabolic path](https://en.wikipedia.org/wiki/Parabola) centered at the origin\n\n```js\nPH.parabola(2.0, 1.0, 6);\n```\n\n**Expected Output:**\n```js\n[\n    [\n        -0.5,\n        0.5\n    ],\n    [\n        -0.33333333333333337,\n        0.22222222222222227\n    ],\n    [\n        -0.16666666666666669,\n        0.055555555555555566\n    ],\n    [\n        0,\n        0\n    ],\n    [\n        0.16666666666666663,\n        0.05555555555555553\n    ],\n    [\n        0.33333333333333337,\n        0.22222222222222227\n    ],\n    [\n        0.5,\n        0.5\n    ]\n]\n```\n\n### arcPointToPoint\n\nCompose a circular arc between two points. The center of the circle on\nwhich the arc lies is the midpoint between (x1, y1) and (x2, y2). The\narc starts at (x1, y1) and proceeds clockwise for `theta` radians.\nThis method is most useful when you have two known points and wish to\nconnect them using a circular arc.\n\n### arc\n\nCompose a circular arc centered around a known point with a known radius\n\n### quadraticBezierPath\n\nCreate a [Quadratic Bézier curve](https://en.wikipedia.org/wiki/Bézier_curve#Quadratic_Bézier_curves) path.\n\n```js\nPH.quadraticBezierPath(\n    [0, 0],\n    [1, 1],\n    [0, 2],\n    5\n);\n```\n\n**Expected Output:**\n```js\n[\n    [0, 0],\n    [0.32, 0.4],\n    [0.48, 0.8],\n    [0.48, 1.2],\n    [0.32, 1.6],\n    [0, 2],\n]\n```\n\n### cubicBezierPath\n\nCreate a [Cubic Bézier curve](https://en.wikipedia.org/wiki/Bézier_curve#Cubic_Bézier_curves) path.\n\n```js\nPH.cubicBezierPath(\n    [0, 0],\n    [1, 0.5],\n    [1, 1.5],\n    [0, 2],\n    5\n);\n```\n\n**Expected Output:**\n```js\n[\n    [0, 0],\n    [0.48, 0.35],\n    [0.72, 0.78],\n    [0.72, 1.2],\n    [0.48, 1.65],\n    [0, 2]\n]\n```\n\n### chaikinCurve\n\nCreate an open or closed smooth curve using Chaikin's corner cutting algorithm.\nThis method preserves endpoints.\n\n\n### chaikin\n\nThe [Chaikin Algorithm](https://observablehq.com/@pamacha/chaikins-algorithm) as implemented\nby Paul Chaikin. This can be used directly, but the [chaikinCurve](#chaikinCurve) method\ncan be used instead to preserve endpoints.\n\n---------------------------------------------------------------------------------------\n### Linear Transformations\n*The following methods perform standard linear transformations*\n\n---------------------------------------------------------------------------------------\n\n### centerPaths\n\nTranslate a group of paths to be centered around the origin\n\n### scalePath\n\nScale a Path with respect to the origin. To scale \"in place\", translate\nthe path to be centered at the origin, apply `scalePath`, and then re-translate\nthe path in the opposite direction.\n\n```js\nlet path = [\n    [-1,  0],\n    [ 0, -1],\n    [ 1,  0],\n    [ 0,  1]\n];\nPH.scalePath(path, 0.5);\n```\n\n**Expected Output:**\n```js\n[\n    [-0.5, 0],\n    [0, -0.5],\n    [0.5, 0],\n    [0, 0.5]\n]\n```\n\n### translatePath\n\nTranslate a Path in 2D Cartesian coordinates\n\n```js\nlet path = [\n    [-1,  0],\n    [ 0, -1],\n    [ 1,  0],\n    [ 0,  1]\n];\nPH.translatePath(path, [0.5, 0.5]);\n```\n\n**Expected Output:**\n```js\n[\n    [-0.5, 0.5],\n    [0.5, -0.5],\n    [1.5, 0.5],\n    [0.5, 1.5]\n]\n```\n\n### rotatePath\n\nRotate a path around a point using the [Rotation Matrix](https://en.wikipedia.org/wiki/Rotation_matrix).\n\n```js\nlet path = [\n    [-1,  0],\n    [ 0, -1],\n    [ 1,  0],\n    [ 0,  1]\n];\nPH.rotatePath(path, 0.5 * Math.PI);\n```\n\n**Expected Output:**\n```js\n[\n    [ 0, -1],\n    [ 1,  0],\n    [ 0,  1],\n    [-1,  0]\n]\n```\n\n### rotatePoint\n\nRotate a point around another point using the [Rotation Matrix](https://en.wikipedia.org/wiki/Rotation_matrix).\n\n```js\nlet a = [1, 0];\nlet b = [0.5, 0];\nconsole.log(PH.rotatePoint(a, 0.5 * Math.PI, b));\n```\n\n**Expected Output:**\n```js\n[0.5, 0.5]\n```\n\n### reflectPath\n\nReflect a Path vertically or horizontally about an axis (X or Y)\n\n```js\nPH.reflectPath([[1, 1], [2, 2]], \"x\", 0.0);\n// Expected output is [[-1, 1], [-2, 2]]\n```\n\n### shearPath\n\nShear (or skew) a Path in a direction, \"horizontal\" or \"vertical\", by a slope value.\n\n```js\nlet path = [\n    [0, 0],\n    [0, 1],\n    [1, 1],\n    [1, 0]\n];\nPH.shearPath(path, \"horizontal\", 1);\n```\n\n**Expected Output:**\n```js\n[\n    [0, 0],\n    [1, 1],\n    [2, 1],\n    [1, 0]\n]\n```\n\n### distortPath\n\nDistort a path by mapping the corners of a rectangular bounding box\nto the respective corners of a manipulated quadrilateral.\nThe path will be distorted using a linear interpolation of the\ntransformation.\n\n```\nBouding Box:\n\n A -- B\n |    |\n D -- C\n\nDistortion:\n\n A ------- B\n  \\       /\n   \\     /\n    D - C\n```\n\n---------------------------------------------------------------------------------------\n### Boolean Shape Operations\n*The following methods perform standard [Boolean operations on polygons](https://en.wikipedia.org/wiki/Boolean_operations_on_polygons)*\n\n---------------------------------------------------------------------------------------\n\n### booleanAdd\n\nPerform a Boolean addition (union) of two closed paths\n\n### booleanAddComparison (PRIVATE)\n\nRemove segments of Shape A that are inside of Shape B.\nThis is a helper method for `booleanAdd`.\n\n### booleanSubtract\n\nPerform a Boolean subtraction (difference) of two closed paths\n\n### booleanSubtractComparison (PRIVATE)\n\nRemove segments of Shape B that are outside of Shape A.\nThis is a helper method for `booleanSubtract`.\n\n### booleanIntersection\n\nPerform a Boolean intersection of two closed paths\n\n### booleanIntersectionComparison (PRIVATE)\n\nRemove segments of Shape B that are outside of Shape A.\nThis is a helper method for `booleanIntersection`.\n\n### shapeIntersections\n\nCalculate the intersection points of Shape A with Shape B,\nand insert these intersection points in Shape A (in order).\n\nThis is a helper method for the Boolean shape operations.\n\n---------------------------------------------------------------------------------------\n### Path Operations\n*The following methods perform a wide variety of operations for manipulating paths*\n\n---------------------------------------------------------------------------------------\n\n### pathLength\n\nCalculate the total distance of a path of two or more points in 2D or 3D\n\n```js\nPH.pathLength([\n    [0, 0],\n    [0, 1],\n    [1, 1],\n    [1, 0],\n    [0, 0]\n]);\n// Output is 4\n```\n\n### lineEquals\n\nDetermine if two lines are equivalent by comparing their start and end points.\nThis supports an optional `threshold` parameter that can be set to specify a\nmaximum distance that two points can be apart and still considered coincident.\nThis is very useful when dealing with floating point numbers.\n\n```js\nlet AB = [\n    [0, 0],\n    [0, 1]\n];\nlet CD = [\n    [0.005, 0],\n    [0, 1.005]\n];\nPH.lineEquals(AB, CD);\n// Output is False\n\nPH.lineEquals(AB, CD, 0.01);\n// Output is True\n```\n\n### pointEquals\n\nDetermine if two points are coincident.\nThis supports an optional `threshold` parameter that can be set to specify a\nmaximum distance that the points can be apart and still considered coincident.\nThis is very useful when dealing with floating point numbers.\n\n```js\nlet A = [0.0, 0.0];\nlet B = [0.005, 0];\nPH.pointEquals(A, B);\n// Output is False\n\nPH.pointEquals(A, B, 0.01);\n// Output is True\n```\n\n### closedPath\n\nDetermine if a Path is closed, meaning that the ending point coincides with\nthe starting point. This supports an optional `threshold` parameter that\ncan be set to specify a maximum distance that the points can be apart and\nstill considered coincident.\n\n```js\nlet path = [\n    [0, 0],\n    [1, 0]\n];\nPH.closedPath(path);\n// Output is False\n\nlet path = [\n    [0, 0],\n    [1, 0],\n    [1, 1],\n    [0, 1],\n    [0, 0]\n];\nPH.closedPath(path);\n// Output is True\n```\n\n### selfIntersectingPath\n\nDetermine if a path intersects, or overlaps, with itself.\n\n### simplePolygon\n\nDetermine if a path represents a shape that is a simple polygon, meaning that the path\nis a closed shape that does not intersect itself.\n\n### complexPolygon\n\nDetermine if a path represents a shape that is a complex polygon, meaning that the path\nis a closed shape that intersects itself.\n\n### convexPolygon\n\nDetermine if a path represents a shape that is a convex polygon.\n\n### concavePolygon\n\nDetermine if a path represents a shape that is a concave polygon.\n\n### intersect_point\n\nCalculate the location where two lines intersect.\n\nNote: Consider using getLineLineCollision instead\n\n```js\nPH.intersect_point(\n    [ 0, 0],\n    [ 0, 3],\n    [-1, 1],\n    [ 1, 1]\n);\n```\n\n**Expected Output:**\n```js\n[0, 1]\n```\n\n### getLineLineCollision\n\nCalculate if and where two finite line segments intersect\n\nNote: This method and intersect_point are very similar. This method\nis more robust because it detects non-intersection. Both methods\nwere copied from other sources.\n\n```js\nPH.getLineLineCollision(\n    {x:  0, y: 0},\n    {x:  0, y: 3},\n    {x: -1, y: 1},\n    {x:  1, y: 1}\n);\n```\n\n**Expected Output:**\n```js\n{x:  0, y: 1}\n```\n\n### lineCircleIntersect\n\nCalculate the intersection points between a line and a circle. The\nresponse is an array with 0, 1 or 2 Point array elements representing the\nlocations of intersections.\n\n```js\nPH.lineCircleIntersect([-1, -1], [1, 1], [[0,0], 1]);\n```\n\n**Expected Output:**\n```js\n[\n    [0.7071, 0.7071],\n    [-0.7071, -0.7071]\n]\n```\n\n### circleInterceptPoints\n\nCalculate the intersection point between two circles. This requires both\ncircles to be centered at the origin. A `sign` parameter solves for one of\ntwo possible solutions. This assumes the input circles do intersect and\ndoes not solve for non-intersection.\n\n### pointOnLineSegment\n\nCheck if a Point is on a Line Segment (or within a threshold/buffer)\n\n```js\nPH.pointOnLineSegment(\n    [0.5, 0.01],\n    [[0, 0], [1, 0]],\n    0\n);\n// Output is false\n\nPH.pointOnLineSegment(\n    [0.5, 0.01],\n    [[0, 0], [1, 0]],\n    0.001\n);\n// Output is true\n```\n\n### pointInPolygon\n\nDetermine if a point is inside of a polygon. This is taken from\nJeffrey Thompson's excellent eBook on\n[Collission Detection](http://www.jeffreythompson.org/collision-detection/line-circle.php).\n\n### parallelPath\n\nCreate a line that runs parallel to the input points.\n\nThe side that the path runs parallel is determined by the\ncross product of BA and AC (BA X AC), where A = p1, B = p2\nand C = the first point of the returned line. This follows\nthe convention of the [right hand rule](https://en.wikipedia.org/wiki/Right-hand_rule).\n\n```\n   (C) -------- (D) (Positive Offset)\np1 (A) -------- (B) p2\n   (C) -------- (D) (Negative Offset)\n```\n\n```js\nPH.parallelPath([0, 0], [0, 1], 0.2);\n```\n\n**Expected Output:**\n```js\n[\n    [-0.2, 0],\n    [-0.2, 1]\n]\n```\n\n### expandPath\n\nCreate two paths that run alongside the input path, either in\nparallel or in a taper. Optionally close the path with an end cap.\n\n```js\nPH.expandPath([[0, 0], [0, 1]], 0.2, 0.2, \"open\");\n```\n\n### varyPath\n\nVary the width (stroke) of a path. A 2D or 3D input Path can be provided. If\na Path of 2D Points is provided, then the width \"envelope\" will be created at\nrandom using a smoothed noise function. If 3D Points are provided the 3rd Point\narray value will be used as the envelope distance at that point. The output path\nis created by increasing the path offset incrementally to fill in the envelope.\nIf a 3D Path is provided, then max_offset, period and smoothing_window are not\nrequired.\n\n```js\nPathHelp.varyPath([[0, 0], [1, 0]], 0.003, 0.050, 0.010)\n```\n\n### offsetPath\n\nCreate a path that runs parallel to the input path. This handles\nclosed paths (end point coincident with start point) as well as\nopen paths. The path must contain 3 or more points. An optional third parameter\ncan be set to \"true\" in order to eliminate knots/kinks when the offset\nline overlaps with itself.\n\n```js\nPH.offsetPath([[0, 0], [0, 0.5], [0, 1]], 0.2);\n```\n\n**Expected Output:**\n```js\n[\n    [-0.2, 0.0],\n    [-0.2, 0.5]\n]\n```\n\nA function can also be used as the second parameter. The functions's input value is a\nnumber betweeen 0 and 1 representing the current point's array index as a percentage.\nThe output of the function is a numerical offset value. For example an offset function could\nbe:\n\n```js\n/**\n * Function returns an offset value describing a parabola\n **/\nfunction(val) {\n    const max_offset = 0.01;\n    return max_offset * (-Math.pow(2 * val - 1, 2) + 1);\n}\n````\n\n### removeKnots\n\nRemove parts of a path where it intersects with itself creating a loop/knot.\nThis serves as a help function in offsetPath to support wide offset values.\n\n### offsetAngle (PRIVATE)\n\nCreate a path offset from 3 points: A, B, C. A negative offset\nrepresents an \"interior\" offset for the acute angle ACB.\n\n```\n  (A: p1)\n   /  /\n  /  /____ Negative Offset\n /________\n(C: p2)   (B: p3)\n```\n\nThis is used by the `offsetPath` method and is currently intended\nto be a private method of the class.\n\n### extendLine\n\nExtend the line segment between points A and B by an amount in either direction.\nThis works for 2D and 3D points.\n\n```\n          A          B\n  In:     ------------\n  Out:  ----------------\n```\n\n```js\nPH.extendLine([0, 0], [1, 1], 0.2, 0.2);\n```\n\n### extendPath\n\nExtend a multi-point path by one point in the same direction and with\nthe same distance as the previous two points. A second optional \"factor\" parameter\ncan be set to either decrease or increase the curvature of the path.\n\n### limitPathDistance\n\nLimit a path's length to a maximum distance\n\n### superimposeFunction\n\nSuperimpose a function onto a path. For example, add a Sine Wave function onto any\ninput path.\n\n### noisify\n\nAdd random noise to a path. This can make lines appear more organic or hand-drawn.\nThis accepts a number of parameters that impact the quality of the line:\n - `max_segment_length`: Use a lower value to increase the resolution\n - `max_noise`: Set a maximum magnitude of the noise displacement\n - `gaussian`: Use a Gaussian distribution for the noise values instead of using\n   the native `random` function. This should reduce the noise effect\n - `force_close`: This is useful for closed paths. Since the first and last point\n   of a closed paths may receive different random noise they may or may not close\n   after the noise has been added. Depending on the desired effect this may or\n   may not be desirable, so this may be set to `true` or `false` to achieve either effect\n - `smooth_window`: Set a smoothing window size to reduce the jaggedness of the\n   path after receiving noise. This creates smoother, wavier lines\n - `smooth_repeat`: Use this in conjunction with `smooth_window` in order to repeat\n   the `smooth_window` multiple times, making the line even smoother.\n - `anchor_start`: Set to true if you want the path's first point to keep its position.\n   Defaults to false to maintain legacy behavior.\n - `anchor_end`: Set to true if you want the path's last point to keep its position.\n   Defaults to true to maintain legacy behavior.\n\n### smoothPath\n\nSmooth a path by performing a one dimensional convolution on the X\nand Y components of each point in the path. The `size` parameter defines\nthe window size. A larger window size will produce a smoother, less\ndefined path. There are different boundary treatments supported:\n\n- preserve: This is like \"trim\", except the input path's end points are appended.\n  This was the function's original behavior. This method can create relatively long\n  segments toward the end of the line that can look out of place.\n\n- trim: This drops the points that are near the ends and don't have a full smoothing\n  window. This method does not create or add additional path data. It will shorten the path.\n\n- weight: This duplicates the endpoints to accomodate the window size. It will shorten\n  the path, but not as much as the trim method. It can result in some curling toward\n  the endpoints since they are repeated.\n\n- extrapolate: This adds additional points that attempt to be at the same interval/distance\n  as segments at the end of the path and point in the same direction as the opposite side\n  of the window. This maintains the original length and solves the flat ending segemnts\n  of the \"preserve\" method.\n\n### smoothCorners\n\nSmooth the corners on a Path in relation to other points on the path.\nA `sharpness` parameter controls the curvature on a scale from 0 to 1,\nwhere 0 represents the maximum amount of curvature\nbetween points and a value of 1 represents no curvature.\n\n### radiusCorners\n\nSmooth the corners on a Path by a set value. The curvature begins at the\n`radius` distance from the each point. This is useful for creating\nuniform curvatures, like to round corners on polygon.\n\n\n### shiftPath\n\nShift and wrap the elements in the array. This is useful for changing the\nstart/end point of a closed shape. Specifically, when using a pen plotter\nthis can be used to break up undesired patterns created by a pen depositing\nextra ink when it starts/stops a path.\n\n```js\nlet path = [\n    [1, 1],\n    [2, 2],\n    [3, 3],\n    [4, 4]\n];\nPH.shiftPath(path, 2);\n```\n\n**Expected Output:**\n```js\n[\n    [3, 3],\n    [4, 4],\n    [1, 1],\n    [2, 2]\n]\n```\n\n### splitPath\n\nSplit a multi-point path array into an array of path segments.\n\n```js\nlet path = [\n    [0, 0],\n    [1, 0],\n    [2, 0],\n    [3, 0]\n];\nPH.splitPath(path);\n```\n\n**Expected Output:**\n```js\n[\n    [\n        [0, 0],\n        [1, 0]\n    ],\n    [\n        [1, 0],\n        [2, 0]\n    ],\n    [\n        [2, 0],\n        [3, 0]\n    ]\n]\n```\n\n### subdividePath\n\nDivide each segment of a multi-point Path array into\ntwo segments.\n\n```js\nlet path = [\n    [0, 0],\n    [0, 1],\n    [1, 1]\n];\nPH.subdividePath(path);\n```\n\n**Expected Output:**\n```js\n[\n    [0, 0],\n    [0, 0.5],\n    [0, 1],\n    [0.5, 1],\n    [1, 1]\n]\n```\n\n### dividePath\n\nDivide a two-point Path array (line) into 2 or more segments\n\n```js\nlet path = [\n    [0, 0],\n    [0, 1]\n];\nPH.dividePath(path, 5);\n```\n\n**Expected Output:**\n```js\n[\n    [0, 0],\n    [0, 0.2],\n    [0, 0.4],\n    [0, 0.6],\n    [0, 0.8],\n    [0, 1]\n]\n```\n\n### dividePathComplete\n\nRefactor a Path array so that no segments of the path exceed\na maximum distance. This can be used to \"upsample\" a path so that\nsmoothing, adding noise, or other follow-up transformations may\nbe applied in a more uniform manner.\n\n### splitPathByDistance\n\nThis method maintains the original footprint of the path, however the path\nis split at regular distance intervals. If the distance is reached in the\nmiddle of a path segment, then the exact distance is calculated and the segment\nis split at that point. This is a recursive method\n\n### explodePath\n\nBreak apart a Path into an array of Paths composed of each segment\nof the path. For example, if a Path has points A,B,C,D, then explodePath\nreturns a series of Paths with points: AB, BC, CD.\n\n### resamplePath\n\nResample a path to contain a certain number of points. The new path\nwill have points that are equidistant along the original path. This will\nresult in a slightly different path than the origanl path - i.e.\nsharp corners will not be preserved unless the sampling value is\nsufficiently high.\n\n### filterPath\n\nApply a filter function to the points in a path to remove points that fail\nthe function parameters. For example, a filter function could remove\nevery-other point, or points outside of a certain coordinate range or\ndistance from another point. An optional parameter allows the result to be\nsplit into multiple paths or to retain the original path with the points removed.\n\n### filterPaths\n\nThis is a helper function that puts multiple paths through the filterPath\nmethod.\n\n### dashPath\n\nTurn a solid line/path into a dashed line. A distance can be specified\nfor the length of the dash and the length of the gap. An optional\nparameter can be set to return the gaps instead of the dashes.\n\n### decimatePath\n\nRandomly remove portions of a path. This is controlled by an `odds`\nparameter where a value of zero means that there is no chance any point\nwill be removed from the path and a value of one means that there is\na 100% chance that the point will be removed from the path.\n\nTo achieve this each point in the path is evaluated against a random\nnumber between 0 and 1 and if the number is less than the odds, then\nthe point is removed from the path.\n\n** Example of odds at 0.1 **\n\nHere 2 out of the 20 segments have been removed as an example of what\ncould happen if the odds of removal are 10%.\n\n```\nInput:  --------------------\nOutput: -------- -------- --\n```\n\n### decimatePaths\n\nThis applies the same logic as `decimatePath` to multiple Path arrays.\n\n### morph\n\nCreate a new path that is a morphology of Paths A and B. Paths A and B\nare upsampled so that they are composed of an equal number of points and\ncan interpolated.\n\n### joinPaths\n\nJoin Paths together when their endpoints are within a minimum distance of each other.\nThis is a recursive algorithm that will keep consolidating paths until no paths\nare left within the threshold distance of each other.\n\n```\n        A          B C           D\nInput:  ------------ -------------\nOutput: --------------------------\n        A                        B\n```\n\n### cleanPath\n\nRemove consecutive points if they are less than or equal to a threshold distance of the previous point.\n\nThis is useful to \"downsample\" a path if its spatial resolution is higher than required\nby the output device, such as a screen or pen plotter. This can help reduce file size or\nreduce plotting time without sacrificing image quality.\n\n```js\nlet path = [\n    [0, 0],\n    [0.1, 0],\n    [0.2, 0],\n    [0.21, 0],\n    [0.22, 0],\n    [0.25, 0],\n    [0.3, 0]\n];\nPH.cleanPath(path, 0.05);\n```\n\n**Expected Output:**\n```js\n[\n    [0, 0],\n    [0.1, 0],\n    [0.2, 0],\n    [0.3, 0]\n]\n```\n\n### sortPaths\n\nSort Path arrays by start point from left to right, top to bottom.\nThis is primarily useful for plotting optimization in order to reduce the\ndistance traveled for non-drawing movements.\n\n### sortPathsByProximity\n\nSort Path arrays so that the distance between the end of one path and\nthe start of the next paths is minimized. The left-most starting point\nis taken as the first path. Paths may optionally be reversed if the\nendpoint of a path is the closest next point.\n\n### shufflePaths\n\nRandomly re-sort Path arrays. This is useful for plotting if the design has\na repetitive pattern and it is undesirable for pen up/down artifacts to appear\nin a pattern that could negatively impact the desired image. This uses the\n[Fisher-Yates algorithm](https://dev.to/codebubb/how-to-shuffle-an-array-in-javascript-2ikj)\nfor shuffling.\n\n### removeShortPaths\n\nRemove any path from a Paths array if the distance (total length) of the path\nis below a certain distance. This can be useful if an algorithm produces many\nshort segments that may not be necessary. It can be used to increase plotter\nefficiency and reduce stress on the servo motor.\n\n### simplify\n\nSimplify a path by removing points that do not significantly alter\nthe path's shape. Like `cleanPath` this is useful to reduce the complexity of\na path without sacrificing image quality.\n\n### pointsToPaths2\n\nThis method takes a flat array of Points, and calculates the distance between\neach point. If the distance is below a threshold these points are considered to\nbe part of a connected Path. Each Path will continue to grow until there are no\npoints within the threshold distance. Once a Path terminates a new Point is selected\nfor Path evaluation. This continues until no points remain to be evaluated.\n\nThis method was developed in order to convert raster/bitmap images into vector images.\nThis works by performing edge detection on the image and then using this method to\n\"connect the dots\" of pixels determined to be edges.\n\n### pointsToPaths\n\nThis is the original recursive version of pointsToPaths2 and is known to cause a stack overflow.\nConsider using pointsToPaths2 instead.\n\n### cropToShape\n\nCrop paths to a bounding shape. This supports a threshold value that can\nbe used to handle points that are near the boundary of the crop shape. This should be\nable to handle concave and convex polygons.\n\n### cropToCircle\n\nCrop paths to a circle.\n\n**DEPRECATED**: This has been replaced by the more generalized `cropToShape` method\nand will be removed in the future.\n\n### cropToRectangle\n\nCrop paths to a rectangle.\n\n**DEPRECATED**: This has been replaced by the more generalized `cropToShape` method\nand will be removed in the future.\n\n### knockout\n\nRemove portions of paths that are inside of another shape.\nThis may also be considered a Boolean Exclusive Or (XOR)\n\n### fill\n\nFill a convex shape (polygon) with straight lines\n\n### layeredPaths\n\nLayer paths according to their stacking order\nThe lowest index (0) of \"paths\" will be on the bottom\nof the stack. Subsequent paths (1, 2, 3...) will\nknock out (subtract) any portions of previous paths\nthat they cover.\n\n**Important:** *Shapes that are knocked-out do not include\nthe portion of the other shape that covers them. In\nother words, the cover section is removed from the original\npath and leaves a blank space, rather than incorporating\nthe portion of the other shape*\n\n### subtractPaths\n\nSubtract paths from one another. The lowest index\nThe lowest index (0) of \"paths\" will be on the bottom\nof the stack. Subsequent paths (1, 2, 3...) will\nknock out (subtract) any portions of previous paths\nthat they cover.\n\n**Important:** *This is very similar to layeredPaths, except\nthat this method incorporates the path of the shape that\nis being subtracted from the original path (as opposed to\nremoving it as in layeredPaths).*\n\n### linePathSplit (PRIVATE)\n\nTake a line segment and a path of a closed shape and return\nthe portion of that line that is not intersected by the shape\n\n### linePathsSplit (PRIVATE)\n\nTake a line segment and multiple paths representing a closed\nconvex polygon and return the portion of that line that is\nnot intersected by any of the shapes (paths)\n\n### projectShapeShadow\n\nDetermine the \"shadow\" of an input shape at a certain translation\nvector. This has been proven for closed-path convex regular polygons.\nThis has not been tested for other shapes.\n\n### jot\n\nAdd a \"jot\" or small mark near the end of the path. The offset\ndistance from the end of the path, the length of the mark,\nand a rotation range can be set.\n\nLicense\n-------\n\n<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /></a><br />This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.\n","readmeFilename":"README.md"}