diff --git a/files.html b/files.html index 4de0649c23e3398d94690ae94a4d7e4a3e7419e3..ebe12b148b7240325a26f2d62b9362674c0a6c43 100644 --- a/files.html +++ b/files.html @@ -16,6 +16,7 @@ <a href='./js/deviceserver.js'>deviceserver.js</a><br> <a href='./js/echoserver.js'>echoserver.js</a><br> <a href='./js/files.js'>files.js</a><br> + <a href='./js/mkserialserver.js'>mkserialserver.js</a><br> <a href='./js/mods.js'>mods.js</a><br> <a href='./js/modules.js'>modules.js</a><br> <a href='./js/printserver.js'>printserver.js</a><br> @@ -105,1622 +106,6 @@ <a href='./modules/hardware/motors/stepper'>stepper</a><br> <i> network</i><br> <a href='./modules/hardware/network/mkserial'>mkserial</a><br> - <a href='./modules/hardware/network/mkserialserver.js'>mkserialserver.js</a><br> -<i> node_modules</i><br> -<i> .bin</i><br> - <a href='./modules/hardware/network/node_modules/.bin/prebuild-install'>prebuild-install</a><br> - <a href='./modules/hardware/network/node_modules/.bin/prebuild-install.cmd'>prebuild-install.cmd</a><br> - <a href='./modules/hardware/network/node_modules/.bin/prominode'>prominode</a><br> - <a href='./modules/hardware/network/node_modules/.bin/prominode.cmd'>prominode.cmd</a><br> - <a href='./modules/hardware/network/node_modules/.bin/rc'>rc</a><br> - <a href='./modules/hardware/network/node_modules/.bin/rc.cmd'>rc.cmd</a><br> - <a href='./modules/hardware/network/node_modules/.bin/serialport-list'>serialport-list</a><br> - <a href='./modules/hardware/network/node_modules/.bin/serialport-list.cmd'>serialport-list.cmd</a><br> - <a href='./modules/hardware/network/node_modules/.bin/serialport-repl'>serialport-repl</a><br> - <a href='./modules/hardware/network/node_modules/.bin/serialport-repl.cmd'>serialport-repl.cmd</a><br> - <a href='./modules/hardware/network/node_modules/.bin/serialport-term'>serialport-term</a><br> - <a href='./modules/hardware/network/node_modules/.bin/serialport-term.cmd'>serialport-term.cmd</a><br> - <a href='./modules/hardware/network/node_modules/.bin/window-size'>window-size</a><br> - <a href='./modules/hardware/network/node_modules/.bin/window-size.cmd'>window-size.cmd</a><br> -<i> ansi-bgblack</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblack/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblack/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblack/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblack/README.md'>README.md</a><br> -<i> ansi-bgblue</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblue/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblue/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblue/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgblue/readme.md'>readme.md</a><br> -<i> ansi-bgcyan</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bgcyan/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgcyan/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgcyan/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgcyan/readme.md'>readme.md</a><br> -<i> ansi-bggreen</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bggreen/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bggreen/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bggreen/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bggreen/readme.md'>readme.md</a><br> -<i> ansi-bgmagenta</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bgmagenta/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgmagenta/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgmagenta/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgmagenta/readme.md'>readme.md</a><br> -<i> ansi-bgred</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bgred/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgred/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgred/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgred/readme.md'>readme.md</a><br> -<i> ansi-bgwhite</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bgwhite/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgwhite/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgwhite/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgwhite/readme.md'>readme.md</a><br> -<i> ansi-bgyellow</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bgyellow/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgyellow/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgyellow/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bgyellow/readme.md'>readme.md</a><br> -<i> ansi-black</i><br> - <a href='./modules/hardware/network/node_modules/ansi-black/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-black/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-black/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-black/readme.md'>readme.md</a><br> -<i> ansi-blue</i><br> - <a href='./modules/hardware/network/node_modules/ansi-blue/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-blue/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-blue/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-blue/readme.md'>readme.md</a><br> -<i> ansi-bold</i><br> - <a href='./modules/hardware/network/node_modules/ansi-bold/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bold/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bold/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-bold/readme.md'>readme.md</a><br> -<i> ansi-colors</i><br> - <a href='./modules/hardware/network/node_modules/ansi-colors/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-colors/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-colors/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-colors/README.md'>README.md</a><br> -<i> ansi-cyan</i><br> - <a href='./modules/hardware/network/node_modules/ansi-cyan/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-cyan/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-cyan/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-cyan/readme.md'>readme.md</a><br> -<i> ansi-dim</i><br> - <a href='./modules/hardware/network/node_modules/ansi-dim/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-dim/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-dim/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-dim/readme.md'>readme.md</a><br> -<i> ansi-gray</i><br> - <a href='./modules/hardware/network/node_modules/ansi-gray/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-gray/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-gray/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-gray/readme.md'>readme.md</a><br> -<i> ansi-green</i><br> - <a href='./modules/hardware/network/node_modules/ansi-green/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-green/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-green/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-green/readme.md'>readme.md</a><br> -<i> ansi-grey</i><br> - <a href='./modules/hardware/network/node_modules/ansi-grey/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-grey/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-grey/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-grey/readme.md'>readme.md</a><br> -<i> ansi-hidden</i><br> - <a href='./modules/hardware/network/node_modules/ansi-hidden/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-hidden/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-hidden/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-hidden/readme.md'>readme.md</a><br> -<i> ansi-inverse</i><br> - <a href='./modules/hardware/network/node_modules/ansi-inverse/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-inverse/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-inverse/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-inverse/readme.md'>readme.md</a><br> -<i> ansi-italic</i><br> - <a href='./modules/hardware/network/node_modules/ansi-italic/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-italic/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-italic/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-italic/readme.md'>readme.md</a><br> -<i> ansi-magenta</i><br> - <a href='./modules/hardware/network/node_modules/ansi-magenta/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-magenta/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-magenta/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-magenta/readme.md'>readme.md</a><br> -<i> ansi-red</i><br> - <a href='./modules/hardware/network/node_modules/ansi-red/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-red/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-red/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-red/readme.md'>readme.md</a><br> -<i> ansi-regex</i><br> - <a href='./modules/hardware/network/node_modules/ansi-regex/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-regex/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/ansi-regex/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-regex/readme.md'>readme.md</a><br> -<i> ansi-reset</i><br> - <a href='./modules/hardware/network/node_modules/ansi-reset/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-reset/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-reset/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-reset/readme.md'>readme.md</a><br> -<i> ansi-strikethrough</i><br> - <a href='./modules/hardware/network/node_modules/ansi-strikethrough/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-strikethrough/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-strikethrough/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-strikethrough/readme.md'>readme.md</a><br> -<i> ansi-underline</i><br> - <a href='./modules/hardware/network/node_modules/ansi-underline/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-underline/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-underline/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-underline/readme.md'>readme.md</a><br> -<i> ansi-white</i><br> - <a href='./modules/hardware/network/node_modules/ansi-white/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-white/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-white/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-white/readme.md'>readme.md</a><br> -<i> ansi-wrap</i><br> - <a href='./modules/hardware/network/node_modules/ansi-wrap/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-wrap/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-wrap/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-wrap/README.md'>README.md</a><br> -<i> ansi-yellow</i><br> - <a href='./modules/hardware/network/node_modules/ansi-yellow/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ansi-yellow/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ansi-yellow/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ansi-yellow/readme.md'>readme.md</a><br> -<i> aproba</i><br> - <a href='./modules/hardware/network/node_modules/aproba/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/aproba/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/aproba/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/aproba/README.md'>README.md</a><br> -<i> are-we-there-yet</i><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/CHANGES.md'>CHANGES.md</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/tracker-base.js'>tracker-base.js</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/tracker-group.js'>tracker-group.js</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/tracker-stream.js'>tracker-stream.js</a><br> - <a href='./modules/hardware/network/node_modules/are-we-there-yet/tracker.js'>tracker.js</a><br> -<i> arr-flatten</i><br> - <a href='./modules/hardware/network/node_modules/arr-flatten/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/arr-flatten/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/arr-flatten/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/arr-flatten/README.md'>README.md</a><br> -<i> arr-swap</i><br> - <a href='./modules/hardware/network/node_modules/arr-swap/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/arr-swap/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> is-number</i><br> - <a href='./modules/hardware/network/node_modules/arr-swap/node_modules/is-number/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/arr-swap/node_modules/is-number/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/arr-swap/node_modules/is-number/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/arr-swap/node_modules/is-number/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/arr-swap/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/arr-swap/README.md'>README.md</a><br> -<i> async-limiter</i><br> - <a href='./modules/hardware/network/node_modules/async-limiter/.travis.yml'>.travis.yml</a><br> -<i> coverage</i><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/coverage.json'>coverage.json</a><br> -<i> lcov-report</i><br> -<i> async-throttle</i><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html'>index.html</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html'>index.js.html</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/base.css'>base.css</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/index.html'>index.html</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/prettify.css'>prettify.css</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/prettify.js'>prettify.js</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png'>sort-arrow-sprite.png</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/sorter.js'>sorter.js</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/coverage/lcov.info'>lcov.info</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/async-limiter/readme.md'>readme.md</a><br> -<i> bindings</i><br> - <a href='./modules/hardware/network/node_modules/bindings/bindings.js'>bindings.js</a><br> - <a href='./modules/hardware/network/node_modules/bindings/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/bindings/README.md'>README.md</a><br> -<i> bl</i><br> - <a href='./modules/hardware/network/node_modules/bl/.jshintrc'>.jshintrc</a><br> - <a href='./modules/hardware/network/node_modules/bl/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/bl/bl.js'>bl.js</a><br> - <a href='./modules/hardware/network/node_modules/bl/LICENSE.md'>LICENSE.md</a><br> - <a href='./modules/hardware/network/node_modules/bl/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/bl/README.md'>README.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/bl/test/test.js'>test.js</a><br> -<i> buffer-alloc</i><br> - <a href='./modules/hardware/network/node_modules/buffer-alloc/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/buffer-alloc/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/buffer-alloc/readme.md'>readme.md</a><br> -<i> buffer-alloc-unsafe</i><br> - <a href='./modules/hardware/network/node_modules/buffer-alloc-unsafe/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/buffer-alloc-unsafe/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/buffer-alloc-unsafe/readme.md'>readme.md</a><br> -<i> buffer-fill</i><br> - <a href='./modules/hardware/network/node_modules/buffer-fill/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/buffer-fill/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/buffer-fill/readme.md'>readme.md</a><br> -<i> choices-separator</i><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/node.js'>node.js</a><br> -<i> chownr</i><br> - <a href='./modules/hardware/network/node_modules/chownr/chownr.js'>chownr.js</a><br> - <a href='./modules/hardware/network/node_modules/chownr/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/chownr/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/chownr/README.md'>README.md</a><br> -<i> clone-deep</i><br> - <a href='./modules/hardware/network/node_modules/clone-deep/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/clone-deep/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/clone-deep/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/clone-deep/README.md'>README.md</a><br> -<i> code-point-at</i><br> - <a href='./modules/hardware/network/node_modules/code-point-at/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/code-point-at/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/code-point-at/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/code-point-at/readme.md'>readme.md</a><br> -<i> collection-visit</i><br> - <a href='./modules/hardware/network/node_modules/collection-visit/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/collection-visit/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/collection-visit/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/collection-visit/README.md'>README.md</a><br> -<i> commander</i><br> - <a href='./modules/hardware/network/node_modules/commander/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/commander/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/commander/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/commander/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/commander/Readme.md'>Readme.md</a><br> -<i> typings</i><br> - <a href='./modules/hardware/network/node_modules/commander/typings/index.d.ts'>index.d.ts</a><br> -<i> component-emitter</i><br> - <a href='./modules/hardware/network/node_modules/component-emitter/History.md'>History.md</a><br> - <a href='./modules/hardware/network/node_modules/component-emitter/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/component-emitter/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/component-emitter/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/component-emitter/Readme.md'>Readme.md</a><br> -<i> console-control-strings</i><br> - <a href='./modules/hardware/network/node_modules/console-control-strings/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/console-control-strings/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/console-control-strings/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/console-control-strings/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/console-control-strings/README.md~'>README.md~</a><br> -<i> copy-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/copy-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/copy-descriptor/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/copy-descriptor/package.json'>package.json</a><br> -<i> core-util-is</i><br> - <a href='./modules/hardware/network/node_modules/core-util-is/float.patch'>float.patch</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/core-util-is/lib/util.js'>util.js</a><br> - <a href='./modules/hardware/network/node_modules/core-util-is/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/core-util-is/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/core-util-is/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/core-util-is/test.js'>test.js</a><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/debug/src/node.js'>node.js</a><br> -<i> decompress-response</i><br> - <a href='./modules/hardware/network/node_modules/decompress-response/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/decompress-response/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/decompress-response/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/decompress-response/readme.md'>readme.md</a><br> -<i> deep-extend</i><br> - <a href='./modules/hardware/network/node_modules/deep-extend/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/deep-extend/index.js'>index.js</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/deep-extend/lib/deep-extend.js'>deep-extend.js</a><br> - <a href='./modules/hardware/network/node_modules/deep-extend/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/deep-extend/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/deep-extend/README.md'>README.md</a><br> -<i> define-property</i><br> - <a href='./modules/hardware/network/node_modules/define-property/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/define-property/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/define-property/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/define-property/README.md'>README.md</a><br> -<i> delegates</i><br> - <a href='./modules/hardware/network/node_modules/delegates/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/delegates/History.md'>History.md</a><br> - <a href='./modules/hardware/network/node_modules/delegates/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/delegates/License'>License</a><br> - <a href='./modules/hardware/network/node_modules/delegates/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/delegates/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/delegates/Readme.md'>Readme.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/delegates/test/index.js'>index.js</a><br> -<i> detect-libc</i><br> - <a href='./modules/hardware/network/node_modules/detect-libc/.npmignore'>.npmignore</a><br> -<i> bin</i><br> - <a href='./modules/hardware/network/node_modules/detect-libc/bin/detect-libc.js'>detect-libc.js</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/detect-libc/lib/detect-libc.js'>detect-libc.js</a><br> - <a href='./modules/hardware/network/node_modules/detect-libc/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/detect-libc/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/detect-libc/README.md'>README.md</a><br> -<i> end-of-stream</i><br> - <a href='./modules/hardware/network/node_modules/end-of-stream/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/end-of-stream/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/end-of-stream/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/end-of-stream/README.md'>README.md</a><br> -<i> error-symbol</i><br> - <a href='./modules/hardware/network/node_modules/error-symbol/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/error-symbol/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/error-symbol/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/error-symbol/README.md'>README.md</a><br> -<i> expand-template</i><br> - <a href='./modules/hardware/network/node_modules/expand-template/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/expand-template/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/expand-template/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/expand-template/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/expand-template/test.js'>test.js</a><br> -<i> extend-shallow</i><br> - <a href='./modules/hardware/network/node_modules/extend-shallow/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/extend-shallow/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/extend-shallow/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/extend-shallow/README.md'>README.md</a><br> -<i> for-in</i><br> - <a href='./modules/hardware/network/node_modules/for-in/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/for-in/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/for-in/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/for-in/README.md'>README.md</a><br> -<i> for-own</i><br> - <a href='./modules/hardware/network/node_modules/for-own/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/for-own/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/for-own/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/for-own/README.md'>README.md</a><br> -<i> fs-constants</i><br> - <a href='./modules/hardware/network/node_modules/fs-constants/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/fs-constants/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/fs-constants/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/fs-constants/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/fs-constants/README.md'>README.md</a><br> -<i> gauge</i><br> - <a href='./modules/hardware/network/node_modules/gauge/base-theme.js'>base-theme.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/gauge/error.js'>error.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/has-color.js'>has-color.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/gauge/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/gauge/plumbing.js'>plumbing.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/process.js'>process.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/progress-bar.js'>progress-bar.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/gauge/render-template.js'>render-template.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/set-immediate.js'>set-immediate.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/set-interval.js'>set-interval.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/spin.js'>spin.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/template-item.js'>template-item.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/theme-set.js'>theme-set.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/themes.js'>themes.js</a><br> - <a href='./modules/hardware/network/node_modules/gauge/wide-truncate.js'>wide-truncate.js</a><br> -<i> github-from-package</i><br> - <a href='./modules/hardware/network/node_modules/github-from-package/.travis.yml'>.travis.yml</a><br> -<i> example</i><br> - <a href='./modules/hardware/network/node_modules/github-from-package/example/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/example/url.js'>url.js</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/readme.markdown'>readme.markdown</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/github-from-package/test/a.json'>a.json</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/test/b.json'>b.json</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/test/c.json'>c.json</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/test/d.json'>d.json</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/test/e.json'>e.json</a><br> - <a href='./modules/hardware/network/node_modules/github-from-package/test/url.js'>url.js</a><br> -<i> has-unicode</i><br> - <a href='./modules/hardware/network/node_modules/has-unicode/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/has-unicode/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/has-unicode/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/has-unicode/README.md'>README.md</a><br> -<i> info-symbol</i><br> - <a href='./modules/hardware/network/node_modules/info-symbol/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/info-symbol/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/info-symbol/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/info-symbol/README.md'>README.md</a><br> -<i> inherits</i><br> - <a href='./modules/hardware/network/node_modules/inherits/inherits.js'>inherits.js</a><br> - <a href='./modules/hardware/network/node_modules/inherits/inherits_browser.js'>inherits_browser.js</a><br> - <a href='./modules/hardware/network/node_modules/inherits/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/inherits/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/inherits/README.md'>README.md</a><br> -<i> ini</i><br> - <a href='./modules/hardware/network/node_modules/ini/ini.js'>ini.js</a><br> - <a href='./modules/hardware/network/node_modules/ini/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ini/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ini/README.md'>README.md</a><br> -<i> is-accessor-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-accessor-descriptor/README.md'>README.md</a><br> -<i> is-buffer</i><br> - <a href='./modules/hardware/network/node_modules/is-buffer/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-buffer/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-buffer/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-buffer/README.md'>README.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/is-buffer/test/basic.js'>basic.js</a><br> -<i> is-data-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-data-descriptor/README.md'>README.md</a><br> -<i> is-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-descriptor/README.md'>README.md</a><br> -<i> is-extendable</i><br> - <a href='./modules/hardware/network/node_modules/is-extendable/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-extendable/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-extendable/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-extendable/README.md'>README.md</a><br> -<i> is-fullwidth-code-point</i><br> - <a href='./modules/hardware/network/node_modules/is-fullwidth-code-point/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-fullwidth-code-point/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/is-fullwidth-code-point/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-fullwidth-code-point/readme.md'>readme.md</a><br> -<i> is-number</i><br> - <a href='./modules/hardware/network/node_modules/is-number/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-number/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-number/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-number/README.md'>README.md</a><br> -<i> is-plain-object</i><br> - <a href='./modules/hardware/network/node_modules/is-plain-object/index.d.ts'>index.d.ts</a><br> - <a href='./modules/hardware/network/node_modules/is-plain-object/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-plain-object/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-plain-object/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-plain-object/README.md'>README.md</a><br> -<i> is-windows</i><br> - <a href='./modules/hardware/network/node_modules/is-windows/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/is-windows/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/is-windows/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/is-windows/README.md'>README.md</a><br> -<i> isarray</i><br> - <a href='./modules/hardware/network/node_modules/isarray/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/isarray/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/isarray/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/isarray/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/isarray/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/isarray/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/isarray/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/isarray/test.js'>test.js</a><br> -<i> isobject</i><br> - <a href='./modules/hardware/network/node_modules/isobject/index.d.ts'>index.d.ts</a><br> - <a href='./modules/hardware/network/node_modules/isobject/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/isobject/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/isobject/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/isobject/README.md'>README.md</a><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/kind-of/README.md'>README.md</a><br> -<i> koalas</i><br> - <a href='./modules/hardware/network/node_modules/koalas/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/koalas/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/koalas/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/koalas/README.md'>README.md</a><br> -<i> lazy-cache</i><br> - <a href='./modules/hardware/network/node_modules/lazy-cache/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/lazy-cache/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/lazy-cache/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/lazy-cache/README.md'>README.md</a><br> -<i> log-ok</i><br> - <a href='./modules/hardware/network/node_modules/log-ok/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/log-ok/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/log-ok/package.json'>package.json</a><br> -<i> log-utils</i><br> - <a href='./modules/hardware/network/node_modules/log-utils/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/log-utils/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/log-utils/package.json'>package.json</a><br> -<i> map-visit</i><br> - <a href='./modules/hardware/network/node_modules/map-visit/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/map-visit/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/map-visit/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/map-visit/README.md'>README.md</a><br> -<i> mimic-response</i><br> - <a href='./modules/hardware/network/node_modules/mimic-response/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/mimic-response/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/mimic-response/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/mimic-response/readme.md'>readme.md</a><br> -<i> minimist</i><br> - <a href='./modules/hardware/network/node_modules/minimist/.travis.yml'>.travis.yml</a><br> -<i> example</i><br> - <a href='./modules/hardware/network/node_modules/minimist/example/parse.js'>parse.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/minimist/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/minimist/readme.markdown'>readme.markdown</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/minimist/test/all_bool.js'>all_bool.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/bool.js'>bool.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/dash.js'>dash.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/default_bool.js'>default_bool.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/dotted.js'>dotted.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/kv_short.js'>kv_short.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/long.js'>long.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/num.js'>num.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/parse.js'>parse.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/parse_modified.js'>parse_modified.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/short.js'>short.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/stop_early.js'>stop_early.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/unknown.js'>unknown.js</a><br> - <a href='./modules/hardware/network/node_modules/minimist/test/whitespace.js'>whitespace.js</a><br> -<i> mixin-object</i><br> - <a href='./modules/hardware/network/node_modules/mixin-object/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/mixin-object/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> for-in</i><br> - <a href='./modules/hardware/network/node_modules/mixin-object/node_modules/for-in/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/mixin-object/node_modules/for-in/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/mixin-object/node_modules/for-in/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/mixin-object/node_modules/for-in/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/mixin-object/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/mixin-object/README.md'>README.md</a><br> -<i> mkdirp</i><br> - <a href='./modules/hardware/network/node_modules/mkdirp/.travis.yml'>.travis.yml</a><br> -<i> bin</i><br> - <a href='./modules/hardware/network/node_modules/mkdirp/bin/cmd.js'>cmd.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/bin/usage.txt'>usage.txt</a><br> -<i> examples</i><br> - <a href='./modules/hardware/network/node_modules/mkdirp/examples/pow.js'>pow.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> minimist</i><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/.travis.yml'>.travis.yml</a><br> -<i> example</i><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/example/parse.js'>parse.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/readme.markdown'>readme.markdown</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/dash.js'>dash.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/default_bool.js'>default_bool.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/dotted.js'>dotted.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/long.js'>long.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/parse.js'>parse.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js'>parse_modified.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/short.js'>short.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/whitespace.js'>whitespace.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/readme.markdown'>readme.markdown</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/chmod.js'>chmod.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/clobber.js'>clobber.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/mkdirp.js'>mkdirp.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/opts_fs.js'>opts_fs.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/opts_fs_sync.js'>opts_fs_sync.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/perm.js'>perm.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/perm_sync.js'>perm_sync.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/race.js'>race.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/rel.js'>rel.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/return.js'>return.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/return_sync.js'>return_sync.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/root.js'>root.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/sync.js'>sync.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/umask.js'>umask.js</a><br> - <a href='./modules/hardware/network/node_modules/mkdirp/test/umask_sync.js'>umask_sync.js</a><br> -<i> ms</i><br> - <a href='./modules/hardware/network/node_modules/ms/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/ms/license.md'>license.md</a><br> - <a href='./modules/hardware/network/node_modules/ms/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ms/readme.md'>readme.md</a><br> -<i> mute-stream</i><br> -<i> .nyc_output</i><br> - <a href='./modules/hardware/network/node_modules/mute-stream/.nyc_output/33508.json'>33508.json</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/.nyc_output/33510.json'>33510.json</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/.travis.yml'>.travis.yml</a><br> -<i> coverage</i><br> -<i> lcov-report</i><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/base.css'>base.css</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/index.html'>index.html</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/prettify.css'>prettify.css</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/prettify.js'>prettify.js</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/sort-arrow-sprite.png'>sort-arrow-sprite.png</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/sorter.js'>sorter.js</a><br> -<i> __root__</i><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/__root__/index.html'>index.html</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/__root__/mute.js.html'>mute.js.html</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/coverage/lcov.info'>lcov.info</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/mute.js'>mute.js</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/mute-stream/README.md'>README.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/mute-stream/test/basic.js'>basic.js</a><br> -<i> nan</i><br> - <a href='./modules/hardware/network/node_modules/nan/CHANGELOG.md'>CHANGELOG.md</a><br> -<i> doc</i><br> - <a href='./modules/hardware/network/node_modules/nan/doc/asyncworker.md'>asyncworker.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/buffers.md'>buffers.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/callback.md'>callback.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/converters.md'>converters.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/errors.md'>errors.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/json.md'>json.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/maybe_types.md'>maybe_types.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/methods.md'>methods.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/new.md'>new.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/node_misc.md'>node_misc.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/object_wrappers.md'>object_wrappers.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/persistent.md'>persistent.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/scopes.md'>scopes.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/script.md'>script.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/string_bytes.md'>string_bytes.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/v8_internals.md'>v8_internals.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/doc/v8_misc.md'>v8_misc.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/include_dirs.js'>include_dirs.js</a><br> - <a href='./modules/hardware/network/node_modules/nan/LICENSE.md'>LICENSE.md</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan.h'>nan.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_callbacks.h'>nan_callbacks.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_callbacks_12_inl.h'>nan_callbacks_12_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_callbacks_pre_12_inl.h'>nan_callbacks_pre_12_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_converters.h'>nan_converters.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_converters_43_inl.h'>nan_converters_43_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_converters_pre_43_inl.h'>nan_converters_pre_43_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_define_own_property_helper.h'>nan_define_own_property_helper.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_implementation_12_inl.h'>nan_implementation_12_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_implementation_pre_12_inl.h'>nan_implementation_pre_12_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_json.h'>nan_json.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_maybe_43_inl.h'>nan_maybe_43_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_maybe_pre_43_inl.h'>nan_maybe_pre_43_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_new.h'>nan_new.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_object_wrap.h'>nan_object_wrap.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_persistent_12_inl.h'>nan_persistent_12_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_persistent_pre_12_inl.h'>nan_persistent_pre_12_inl.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_private.h'>nan_private.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_string_bytes.h'>nan_string_bytes.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_typedarray_contents.h'>nan_typedarray_contents.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/nan_weak.h'>nan_weak.h</a><br> - <a href='./modules/hardware/network/node_modules/nan/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/nan/README.md'>README.md</a><br> -<i> tools</i><br> - <a href='./modules/hardware/network/node_modules/nan/tools/1to2.js'>1to2.js</a><br> - <a href='./modules/hardware/network/node_modules/nan/tools/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/nan/tools/README.md'>README.md</a><br> -<i> node-abi</i><br> - <a href='./modules/hardware/network/node_modules/node-abi/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/node-abi/CODE_OF_CONDUCT.md'>CODE_OF_CONDUCT.md</a><br> - <a href='./modules/hardware/network/node_modules/node-abi/CONTRIBUTING.md'>CONTRIBUTING.md</a><br> - <a href='./modules/hardware/network/node_modules/node-abi/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/node-abi/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/node-abi/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/node-abi/README.md'>README.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/node-abi/test/index.js'>index.js</a><br> -<i> noop-logger</i><br> - <a href='./modules/hardware/network/node_modules/noop-logger/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/noop-logger/circle.yml'>circle.yml</a><br> - <a href='./modules/hardware/network/node_modules/noop-logger/History.md'>History.md</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/noop-logger/lib/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/noop-logger/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/noop-logger/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/noop-logger/Readme.md'>Readme.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/noop-logger/test/index.js'>index.js</a><br> -<i> npmlog</i><br> - <a href='./modules/hardware/network/node_modules/npmlog/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/npmlog/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/npmlog/log.js'>log.js</a><br> - <a href='./modules/hardware/network/node_modules/npmlog/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/npmlog/README.md'>README.md</a><br> -<i> number-is-nan</i><br> - <a href='./modules/hardware/network/node_modules/number-is-nan/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/number-is-nan/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/number-is-nan/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/number-is-nan/readme.md'>readme.md</a><br> -<i> object-assign</i><br> - <a href='./modules/hardware/network/node_modules/object-assign/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-assign/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/object-assign/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/object-assign/readme.md'>readme.md</a><br> -<i> object-copy</i><br> - <a href='./modules/hardware/network/node_modules/object-copy/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> define-property</i><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/define-property/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/define-property/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/define-property/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/define-property/README.md'>README.md</a><br> -<i> is-accessor-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/README.md'>README.md</a><br> -<i> is-data-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/README.md'>README.md</a><br> -<i> is-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/object-copy/package.json'>package.json</a><br> -<i> object-visit</i><br> - <a href='./modules/hardware/network/node_modules/object-visit/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/object-visit/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/object-visit/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/object-visit/README.md'>README.md</a><br> -<i> once</i><br> - <a href='./modules/hardware/network/node_modules/once/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/once/once.js'>once.js</a><br> - <a href='./modules/hardware/network/node_modules/once/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/once/README.md'>README.md</a><br> -<i> os-homedir</i><br> - <a href='./modules/hardware/network/node_modules/os-homedir/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/os-homedir/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/os-homedir/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/os-homedir/readme.md'>readme.md</a><br> -<i> parser-byte-length</i><br> - <a href='./modules/hardware/network/node_modules/parser-byte-length/byte-length.js'>byte-length.js</a><br> - <a href='./modules/hardware/network/node_modules/parser-byte-length/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/parser-byte-length/README.md'>README.md</a><br> -<i> parser-cctalk</i><br> - <a href='./modules/hardware/network/node_modules/parser-cctalk/cctalk.js'>cctalk.js</a><br> - <a href='./modules/hardware/network/node_modules/parser-cctalk/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/parser-cctalk/README.md'>README.md</a><br> -<i> parser-delimiter</i><br> - <a href='./modules/hardware/network/node_modules/parser-delimiter/delimiter.js'>delimiter.js</a><br> - <a href='./modules/hardware/network/node_modules/parser-delimiter/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/parser-delimiter/README.md'>README.md</a><br> -<i> parser-readline</i><br> - <a href='./modules/hardware/network/node_modules/parser-readline/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/parser-readline/readline.js'>readline.js</a><br> - <a href='./modules/hardware/network/node_modules/parser-readline/README.md'>README.md</a><br> -<i> parser-ready</i><br> - <a href='./modules/hardware/network/node_modules/parser-ready/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/parser-ready/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/parser-ready/ready.js'>ready.js</a><br> -<i> parser-regex</i><br> - <a href='./modules/hardware/network/node_modules/parser-regex/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/parser-regex/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/parser-regex/regex.js'>regex.js</a><br> -<i> pointer-symbol</i><br> - <a href='./modules/hardware/network/node_modules/pointer-symbol/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/pointer-symbol/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/pointer-symbol/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/pointer-symbol/README.md'>README.md</a><br> -<i> prebuild-install</i><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/appveyor.yml'>appveyor.yml</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/bin.js'>bin.js</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/CONTRIBUTING.md'>CONTRIBUTING.md</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/download.js'>download.js</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/error.js'>error.js</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/help.txt'>help.txt</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/log.js'>log.js</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/rc.js'>rc.js</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prebuild-install/util.js'>util.js</a><br> -<i> process-nextick-args</i><br> - <a href='./modules/hardware/network/node_modules/process-nextick-args/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/process-nextick-args/license.md'>license.md</a><br> - <a href='./modules/hardware/network/node_modules/process-nextick-args/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/process-nextick-args/readme.md'>readme.md</a><br> -<i> promirepl</i><br> - <a href='./modules/hardware/network/node_modules/promirepl/.npmignore'>.npmignore</a><br> -<i> bin</i><br> - <a href='./modules/hardware/network/node_modules/promirepl/bin/prominode.js'>prominode.js</a><br> - <a href='./modules/hardware/network/node_modules/promirepl/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/promirepl/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/promirepl/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/promirepl/README.md'>README.md</a><br> -<i> prompt-actions</i><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-actions/README.md'>README.md</a><br> -<i> prompt-base</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/changelog.md'>changelog.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> ansi-regex</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/readme.md'>readme.md</a><br> -<i> choices-separator</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/README.md'>README.md</a><br> -<i> is-accessor-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/README.md'>README.md</a><br> -<i> is-data-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/README.md'>README.md</a><br> -<i> is-fullwidth-code-point</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/readme.md'>readme.md</a><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/README.md'>README.md</a><br> -<i> prompt-choices</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/index.js'>index.js</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/lib/choice.js'>choice.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/lib/utils.js'>utils.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> clone-deep</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/README.md'>README.md</a><br> -<i> define-property</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/README.md'>README.md</a><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/README.md'>README.md</a><br> -<i> prompt-question</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/index.js'>index.js</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/lib/utils.js'>utils.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/README.md'>README.md</a><br> -<i> readline-ui</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/README.md'>README.md</a><br> -<i> readline-utils</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> is-number</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/README.md'>README.md</a><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/README.md'>README.md</a><br> -<i> shallow-clone</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/README.md'>README.md</a><br> -<i> static-extend</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> define-property</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/README.md'>README.md</a><br> -<i> is-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/package.json'>package.json</a><br> -<i> string-width</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/string-width/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/string-width/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/string-width/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/string-width/readme.md'>readme.md</a><br> -<i> strip-ansi</i><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/readme.md'>readme.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-base/README.md'>README.md</a><br> -<i> prompt-checkbox</i><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/node.js'>node.js</a><br> -<i> prompt-choices</i><br> -<i> node_modules</i><br> -<i> clone-deep</i><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/README.md'>README.md</a><br> -<i> define-property</i><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/README.md'>README.md</a><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/README.md'>README.md</a><br> -<i> shallow-clone</i><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/README.md'>README.md</a><br> -<i> prompt-list</i><br> - <a href='./modules/hardware/network/node_modules/prompt-list/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/node.js'>node.js</a><br> -<i> prompt-checkbox</i><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/README.md'>README.md</a><br> -<i> prompt-radio</i><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-list/README.md'>README.md</a><br> -<i> prompt-question</i><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/README.md'>README.md</a><br> -<i> prompt-radio</i><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/node.js'>node.js</a><br> -<i> pump</i><br> - <a href='./modules/hardware/network/node_modules/pump/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/pump/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/pump/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/pump/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/pump/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/pump/test-browser.js'>test-browser.js</a><br> - <a href='./modules/hardware/network/node_modules/pump/test-node.js'>test-node.js</a><br> -<i> radio-symbol</i><br> - <a href='./modules/hardware/network/node_modules/radio-symbol/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/radio-symbol/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/radio-symbol/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/radio-symbol/README.md'>README.md</a><br> -<i> rc</i><br> - <a href='./modules/hardware/network/node_modules/rc/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/rc/cli.js'>cli.js</a><br> - <a href='./modules/hardware/network/node_modules/rc/index.js'>index.js</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/rc/lib/utils.js'>utils.js</a><br> - <a href='./modules/hardware/network/node_modules/rc/LICENSE.APACHE2'>LICENSE.APACHE2</a><br> - <a href='./modules/hardware/network/node_modules/rc/LICENSE.BSD'>LICENSE.BSD</a><br> - <a href='./modules/hardware/network/node_modules/rc/LICENSE.MIT'>LICENSE.MIT</a><br> - <a href='./modules/hardware/network/node_modules/rc/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/rc/README.md'>README.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/rc/test/ini.js'>ini.js</a><br> - <a href='./modules/hardware/network/node_modules/rc/test/nested-env-vars.js'>nested-env-vars.js</a><br> - <a href='./modules/hardware/network/node_modules/rc/test/test.js'>test.js</a><br> -<i> readable-stream</i><br> - <a href='./modules/hardware/network/node_modules/readable-stream/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/CONTRIBUTING.md'>CONTRIBUTING.md</a><br> -<i> doc</i><br> -<i> wg-meetings</i><br> - <a href='./modules/hardware/network/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md'>2015-01-30.md</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/duplex-browser.js'>duplex-browser.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/duplex.js'>duplex.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/GOVERNANCE.md'>GOVERNANCE.md</a><br> -<i> lib</i><br> -<i> internal</i><br> -<i> streams</i><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/internal/streams/BufferList.js'>BufferList.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/internal/streams/destroy.js'>destroy.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/internal/streams/stream-browser.js'>stream-browser.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/internal/streams/stream.js'>stream.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/_stream_duplex.js'>_stream_duplex.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/_stream_passthrough.js'>_stream_passthrough.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/_stream_readable.js'>_stream_readable.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/_stream_transform.js'>_stream_transform.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/lib/_stream_writable.js'>_stream_writable.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/passthrough.js'>passthrough.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/readable-browser.js'>readable-browser.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/readable.js'>readable.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/transform.js'>transform.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/writable-browser.js'>writable-browser.js</a><br> - <a href='./modules/hardware/network/node_modules/readable-stream/writable.js'>writable.js</a><br> -<i> readline-ui</i><br> -<i> node_modules</i><br> -<i> ansi-regex</i><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/readme.md'>readme.md</a><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/node.js'>node.js</a><br> -<i> is-fullwidth-code-point</i><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/readme.md'>readme.md</a><br> -<i> string-width</i><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/string-width/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/string-width/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/string-width/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/string-width/readme.md'>readme.md</a><br> -<i> strip-ansi</i><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/readme.md'>readme.md</a><br> -<i> readline-utils</i><br> -<i> node_modules</i><br> -<i> is-number</i><br> - <a href='./modules/hardware/network/node_modules/readline-utils/node_modules/is-number/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/readline-utils/node_modules/is-number/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/readline-utils/node_modules/is-number/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/readline-utils/node_modules/is-number/README.md'>README.md</a><br> -<i> safe-buffer</i><br> - <a href='./modules/hardware/network/node_modules/safe-buffer/index.d.ts'>index.d.ts</a><br> - <a href='./modules/hardware/network/node_modules/safe-buffer/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/safe-buffer/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/safe-buffer/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/safe-buffer/README.md'>README.md</a><br> -<i> semver</i><br> -<i> bin</i><br> - <a href='./modules/hardware/network/node_modules/semver/bin/semver'>semver</a><br> - <a href='./modules/hardware/network/node_modules/semver/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/semver/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/semver/range.bnf'>range.bnf</a><br> - <a href='./modules/hardware/network/node_modules/semver/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/semver/semver.js'>semver.js</a><br> -<i> serialport</i><br> - <a href='./modules/hardware/network/node_modules/serialport/.jsdoc.json'>.jsdoc.json</a><br> -<i> bin</i><br> - <a href='./modules/hardware/network/node_modules/serialport/bin/echo.js'>echo.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/bin/find-arduino.js'>find-arduino.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/bin/list.js'>list.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/bin/repl.js'>repl.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/bin/terminal.js'>terminal.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/bin/write-a-lot.js'>write-a-lot.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/binding.gyp'>binding.gyp</a><br> -<i> build</i><br> -<i> Release</i><br> - <a href='./modules/hardware/network/node_modules/serialport/build/Release/serialport.node'>serialport.node</a><br> - <a href='./modules/hardware/network/node_modules/serialport/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/serialport/codecov.yml'>codecov.yml</a><br> -<i> lib</i><br> -<i> bindings</i><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/auto-detect.js'>auto-detect.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/base.js'>base.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/darwin.js'>darwin.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/linux-list.js'>linux-list.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/linux.js'>linux.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/mock.js'>mock.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/poller.js'>poller.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/unix-read.js'>unix-read.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/unix-write.js'>unix-write.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/win32-sn-parser.js'>win32-sn-parser.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/bindings/win32.js'>win32.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/parsers.js'>parsers.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/serialport.js'>serialport.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/lib/util.js'>util.js</a><br> - <a href='./modules/hardware/network/node_modules/serialport/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/serialport/package.json'>package.json</a><br> -<i> prebuilds</i><br> - <a href='./modules/hardware/network/node_modules/serialport/prebuilds/serialport-v6.1.1-node-v48-darwin-x64.tar.gz'>serialport-v6.1.1-node-v48-darwin-x64.tar.gz</a><br> - <a href='./modules/hardware/network/node_modules/serialport/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/serialport/src/darwin_list.cpp'>darwin_list.cpp</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/darwin_list.h'>darwin_list.h</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/poller.cpp'>poller.cpp</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/poller.h'>poller.h</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport.cpp'>serialport.cpp</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport.h'>serialport.h</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport_linux.cpp'>serialport_linux.cpp</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport_linux.h'>serialport_linux.h</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport_unix.cpp'>serialport_unix.cpp</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport_unix.h'>serialport_unix.h</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport_win.cpp'>serialport_win.cpp</a><br> - <a href='./modules/hardware/network/node_modules/serialport/src/serialport_win.h'>serialport_win.h</a><br> - <a href='./modules/hardware/network/node_modules/serialport/test.js'>test.js</a><br> -<i> set-blocking</i><br> - <a href='./modules/hardware/network/node_modules/set-blocking/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/set-blocking/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/set-blocking/LICENSE.txt'>LICENSE.txt</a><br> - <a href='./modules/hardware/network/node_modules/set-blocking/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/set-blocking/README.md'>README.md</a><br> -<i> set-getter</i><br> - <a href='./modules/hardware/network/node_modules/set-getter/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/set-getter/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/set-getter/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/set-getter/README.md'>README.md</a><br> -<i> set-value</i><br> - <a href='./modules/hardware/network/node_modules/set-value/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/set-value/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/set-value/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/set-value/README.md'>README.md</a><br> -<i> shallow-clone</i><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/shallow-clone/README.md'>README.md</a><br> -<i> signal-exit</i><br> - <a href='./modules/hardware/network/node_modules/signal-exit/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/signal-exit/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/signal-exit/LICENSE.txt'>LICENSE.txt</a><br> - <a href='./modules/hardware/network/node_modules/signal-exit/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/signal-exit/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/signal-exit/signals.js'>signals.js</a><br> -<i> simple-concat</i><br> - <a href='./modules/hardware/network/node_modules/simple-concat/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/simple-concat/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/simple-concat/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/simple-concat/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/simple-concat/README.md'>README.md</a><br> -<i> test</i><br> - <a href='./modules/hardware/network/node_modules/simple-concat/test/basic.js'>basic.js</a><br> -<i> simple-get</i><br> - <a href='./modules/hardware/network/node_modules/simple-get/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/simple-get/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/simple-get/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/simple-get/README.md'>README.md</a><br> -<i> static-extend</i><br> -<i> node_modules</i><br> -<i> is-accessor-descriptor</i><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> kind-of</i><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/README.md'>README.md</a><br> -<i> string-width</i><br> - <a href='./modules/hardware/network/node_modules/string-width/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/string-width/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/string-width/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/string-width/readme.md'>readme.md</a><br> -<i> string_decoder</i><br> - <a href='./modules/hardware/network/node_modules/string_decoder/.travis.yml'>.travis.yml</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/string_decoder/lib/string_decoder.js'>string_decoder.js</a><br> - <a href='./modules/hardware/network/node_modules/string_decoder/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/string_decoder/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/string_decoder/README.md'>README.md</a><br> -<i> strip-ansi</i><br> - <a href='./modules/hardware/network/node_modules/strip-ansi/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/strip-ansi/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/strip-ansi/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/strip-ansi/readme.md'>readme.md</a><br> -<i> strip-color</i><br> - <a href='./modules/hardware/network/node_modules/strip-color/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/strip-color/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/strip-color/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/strip-color/README.md'>README.md</a><br> -<i> strip-json-comments</i><br> - <a href='./modules/hardware/network/node_modules/strip-json-comments/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/strip-json-comments/license'>license</a><br> - <a href='./modules/hardware/network/node_modules/strip-json-comments/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/strip-json-comments/readme.md'>readme.md</a><br> -<i> success-symbol</i><br> - <a href='./modules/hardware/network/node_modules/success-symbol/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/success-symbol/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/success-symbol/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/success-symbol/README.md'>README.md</a><br> -<i> tar-fs</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> pump</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/node_modules/pump/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/node_modules/pump/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/node_modules/pump/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/node_modules/pump/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/node_modules/pump/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/node_modules/pump/test-browser.js'>test-browser.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/node_modules/pump/test.js'>test.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/README.md'>README.md</a><br> -<i> test</i><br> -<i> fixtures</i><br> -<i> a</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/a/hello.txt'>hello.txt</a><br> -<i> b</i><br> -<i> a</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/b/a/test.txt'>test.txt</a><br> -<i> d</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/d/file1'>file1</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/d/file2'>file2</a><br> -<i> sub-dir</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/d/sub-dir/file5'>file5</a><br> -<i> sub-files</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/d/sub-files/file3'>file3</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/d/sub-files/file4'>file4</a><br> -<i> e</i><br> -<i> directory</i><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/e/directory/.ignore'>.ignore</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/e/file'>file</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/fixtures/invalid.tar'>invalid.tar</a><br> - <a href='./modules/hardware/network/node_modules/tar-fs/test/index.js'>index.js</a><br> -<i> tar-stream</i><br> - <a href='./modules/hardware/network/node_modules/tar-stream/extract.js'>extract.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-stream/headers.js'>headers.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-stream/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-stream/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/tar-stream/pack.js'>pack.js</a><br> - <a href='./modules/hardware/network/node_modules/tar-stream/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/tar-stream/README.md'>README.md</a><br> -<i> terminal-paginator</i><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> debug</i><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.coveralls.yml'>.coveralls.yml</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.eslintrc'>.eslintrc</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/CHANGELOG.md'>CHANGELOG.md</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/component.json'>component.json</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/karma.conf.js'>karma.conf.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/README.md'>README.md</a><br> -<i> src</i><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/debug.js'>debug.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/inspector-log.js'>inspector-log.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/terminal-paginator/README.md'>README.md</a><br> -<i> time-stamp</i><br> - <a href='./modules/hardware/network/node_modules/time-stamp/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/time-stamp/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/time-stamp/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/time-stamp/README.md'>README.md</a><br> -<i> to-buffer</i><br> - <a href='./modules/hardware/network/node_modules/to-buffer/.travis.yml'>.travis.yml</a><br> - <a href='./modules/hardware/network/node_modules/to-buffer/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/to-buffer/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/to-buffer/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/to-buffer/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/to-buffer/test.js'>test.js</a><br> -<i> to-object-path</i><br> - <a href='./modules/hardware/network/node_modules/to-object-path/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/to-object-path/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/to-object-path/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/to-object-path/README.md'>README.md</a><br> -<i> toggle-array</i><br> - <a href='./modules/hardware/network/node_modules/toggle-array/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/toggle-array/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/toggle-array/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/toggle-array/README.md'>README.md</a><br> -<i> tunnel-agent</i><br> - <a href='./modules/hardware/network/node_modules/tunnel-agent/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/tunnel-agent/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/tunnel-agent/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/tunnel-agent/README.md'>README.md</a><br> -<i> util-deprecate</i><br> - <a href='./modules/hardware/network/node_modules/util-deprecate/browser.js'>browser.js</a><br> - <a href='./modules/hardware/network/node_modules/util-deprecate/History.md'>History.md</a><br> - <a href='./modules/hardware/network/node_modules/util-deprecate/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/util-deprecate/node.js'>node.js</a><br> - <a href='./modules/hardware/network/node_modules/util-deprecate/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/util-deprecate/README.md'>README.md</a><br> -<i> warning-symbol</i><br> - <a href='./modules/hardware/network/node_modules/warning-symbol/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/warning-symbol/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/warning-symbol/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/warning-symbol/README.md'>README.md</a><br> -<i> which-pm-runs</i><br> - <a href='./modules/hardware/network/node_modules/which-pm-runs/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/which-pm-runs/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/which-pm-runs/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/which-pm-runs/README.md'>README.md</a><br> -<i> wide-align</i><br> - <a href='./modules/hardware/network/node_modules/wide-align/align.js'>align.js</a><br> - <a href='./modules/hardware/network/node_modules/wide-align/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/wide-align/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/wide-align/README.md'>README.md</a><br> -<i> window-size</i><br> - <a href='./modules/hardware/network/node_modules/window-size/cli.js'>cli.js</a><br> - <a href='./modules/hardware/network/node_modules/window-size/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/window-size/LICENSE'>LICENSE</a><br> -<i> node_modules</i><br> -<i> is-number</i><br> - <a href='./modules/hardware/network/node_modules/window-size/node_modules/is-number/index.js'>index.js</a><br> - <a href='./modules/hardware/network/node_modules/window-size/node_modules/is-number/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/window-size/node_modules/is-number/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/window-size/node_modules/is-number/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/window-size/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/window-size/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/window-size/utils.js'>utils.js</a><br> -<i> wrappy</i><br> - <a href='./modules/hardware/network/node_modules/wrappy/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/wrappy/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/wrappy/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/wrappy/wrappy.js'>wrappy.js</a><br> -<i> ws</i><br> - <a href='./modules/hardware/network/node_modules/ws/index.js'>index.js</a><br> -<i> lib</i><br> - <a href='./modules/hardware/network/node_modules/ws/lib/.DS_Store'>.DS_Store</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/buffer-util.js'>buffer-util.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/constants.js'>constants.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/event-target.js'>event-target.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/extension.js'>extension.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/permessage-deflate.js'>permessage-deflate.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/receiver.js'>receiver.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/sender.js'>sender.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/validation.js'>validation.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/websocket-server.js'>websocket-server.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/lib/websocket.js'>websocket.js</a><br> - <a href='./modules/hardware/network/node_modules/ws/LICENSE'>LICENSE</a><br> - <a href='./modules/hardware/network/node_modules/ws/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/ws/README.md'>README.md</a><br> -<i> xtend</i><br> - <a href='./modules/hardware/network/node_modules/xtend/.jshintrc'>.jshintrc</a><br> - <a href='./modules/hardware/network/node_modules/xtend/.npmignore'>.npmignore</a><br> - <a href='./modules/hardware/network/node_modules/xtend/immutable.js'>immutable.js</a><br> - <a href='./modules/hardware/network/node_modules/xtend/LICENCE'>LICENCE</a><br> - <a href='./modules/hardware/network/node_modules/xtend/Makefile'>Makefile</a><br> - <a href='./modules/hardware/network/node_modules/xtend/mutable.js'>mutable.js</a><br> - <a href='./modules/hardware/network/node_modules/xtend/package.json'>package.json</a><br> - <a href='./modules/hardware/network/node_modules/xtend/README.md'>README.md</a><br> - <a href='./modules/hardware/network/node_modules/xtend/test.js'>test.js</a><br> <i> image</i><br> <a href='./modules/image/boundingbox'>boundingbox</a><br> <a href='./modules/image/color%20separation'>color separation</a><br> diff --git a/js/mkserialserver.js b/js/mkserialserver.js new file mode 100644 index 0000000000000000000000000000000000000000..17c2eb72f4b166fa88ef7b2bee53c39b1563700d --- /dev/null +++ b/js/mkserialserver.js @@ -0,0 +1,151 @@ +// +// serialserver.js +// WebSocket serial server +// +// Neil Gershenfeld and Jake Read +// (c) Massachusetts Institute of Technology 2016 +// +// This work may be reproduced, modified, distributed, performed, and +// displayed for any purpose, but must acknowledge the mods +// project. Copyright is retained and must be preserved. The work is +// provided as is; no warranty is provided, and users accept all +// liability. +// +// check command line +// +var client_address, server_port, com_port + +if (process.argv.length < 4 && process.argv[2] != 'default') { + console.log("command line: node serialserver.js client_address server_port com_port") + process.exit(-1) +} else if (process.argv[2] === 'default' || process.argv.length < 3) { + client_address = '::ffff:127.0.0.1' + server_port = '6789' + com_port = 'COM9' +} else { + client_address = process.argv[2] + server_port = process.argv[3] + com_port = process.argv[4] +} +// +// startup WebSocketServer +// +var WebSocketServer = require('ws').Server +wss = new WebSocketServer({ + port: server_port +}) +var ws // socket, particular connection +var wsConnected = false +// +// startup SerialPort +// +var SerialPort = require('serialport') +var port = new SerialPort(com_port, { + baudRate: 750000, +/* dataBits: 8, + parity: 'none', + flowControl: false*/ +}) +// +// SerialPort handlers +// +port.on('open', function() { + var wsMessage = { + type: 'message', + message: 'serial port opened' + } + // send hello to ready usb serial + console.log('opened port ' + com_port) + if (wsConnected) { + ws.send(JSON.stringify(wsMessage)) + } +}) + +console.log('waiting for connection from ' + client_address + ' on port ' + server_port) + +port.on('error', function(err) { + var wsMessage = { + type: 'message', + message: err.message + } + if (wsConnected) { + ws.send(JSON.stringify(wsMessage)) + } +}) + +port.on('data', function(data) { + var dataArray = new Array() + for (var i = 0; i < data.length; i++) { + dataArray[i] = data[i] + } + console.log('data in', dataArray) + var wsMessage = { + type: 'array', + array: dataArray + } + if (wsConnected) { + ws.send(JSON.stringify(wsMessage)) + } +}) + +// +// WebSocketServer handlers +// +wss.on('connection', function(socketConnection) { + // + // check address + // + if (socketConnection._socket.remoteAddress != client_address) { + console.log("connection rejected from " + ws._socket.remoteAddress) + var wsMessage = { + type: 'message', + message: 'socket closed' + } + socketConnection.send(JSON.stringify(wsMessage)) + socketConnection.close() + } else { + ws = socketConnection + console.log("connection accepted from " + ws._socket.remoteAddress) + wsConnected = true + } + // + // handle messages + // + var cancel + var packet = new Array() + + ws.on("message", function(message) { + var msg = JSON.parse(message) + + if (msg.type == 'packet') { + console.log('packet out', msg.packet) // packet is an array + port.write(msg.packet) + + /*, function() { + port.drain(function(err) { + if (err) { + var wsMessage = { + type: 'message', + message: err.message + } + ws.send(JSON.stringify(wsMessage)) + } + }) + }) + */ + } else if (msg.type == 'open'){ + console.log('mod requests open') + } else { + console.log('unrecognized socket message') + } + }) + // + // close + // + ws.on("close", function() { + console.log("connection closed") + if (port != null) + port.close() + port = null + }) +}) \ No newline at end of file diff --git a/modules/hardware/motors/stepper b/modules/hardware/motors/stepper index 3a912ce71630a02b464f832b19e700984609f913..6eddc755860b478a2ad5f07ad2e642f7923a192f 100644 --- a/modules/hardware/motors/stepper +++ b/modules/hardware/motors/stepper @@ -206,7 +206,6 @@ var trapezoid = calculateTrapezoid(mod.axis_num) if (trapezoid.length == 0) { - console.log('zero length step block') var ok = 0 var i = 0 var waitTrap @@ -221,7 +220,7 @@ if (ok) { sendWait(waitTrap) } else { - console.log('step zero packets: no axis of nonzero length found', JSON.parse(JSON.stringify(mod.block))) + console.log('step zero packet, but no axis of nonzero length found', JSON.parse(JSON.stringify(mod.block))) } } else { sendTrapezoid(trapezoid) @@ -372,8 +371,6 @@ packet = packet.concat(pack32(stepWait.vAvg)) console.log('wait block', stepWait.steps, stepWait.vAvg) } - // log this if you wish - //console.log('packet from stepper', packet) // send it along! mods.output(mod, 'packet', packet) } diff --git a/modules/index.js b/modules/index.js index a2d0e8205ae06b344917d266a233388ecd03f869..ba625efe5e727e4d5a02d381abf3063cb5904884 100644 --- a/modules/index.js +++ b/modules/index.js @@ -77,1622 +77,6 @@ module_label(' motors') module_menu(' stepper','modules/hardware/motors/stepper') module_label(' network') module_menu(' mkserial','modules/hardware/network/mkserial') -module_menu(' mkserialserver.js','modules/hardware/network/mkserialserver.js') -module_label(' node_modules') -module_label(' .bin') -module_menu(' prebuild-install','modules/hardware/network/node_modules/.bin/prebuild-install') -module_menu(' prebuild-install.cmd','modules/hardware/network/node_modules/.bin/prebuild-install.cmd') -module_menu(' prominode','modules/hardware/network/node_modules/.bin/prominode') -module_menu(' prominode.cmd','modules/hardware/network/node_modules/.bin/prominode.cmd') -module_menu(' rc','modules/hardware/network/node_modules/.bin/rc') -module_menu(' rc.cmd','modules/hardware/network/node_modules/.bin/rc.cmd') -module_menu(' serialport-list','modules/hardware/network/node_modules/.bin/serialport-list') -module_menu(' serialport-list.cmd','modules/hardware/network/node_modules/.bin/serialport-list.cmd') -module_menu(' serialport-repl','modules/hardware/network/node_modules/.bin/serialport-repl') -module_menu(' serialport-repl.cmd','modules/hardware/network/node_modules/.bin/serialport-repl.cmd') -module_menu(' serialport-term','modules/hardware/network/node_modules/.bin/serialport-term') -module_menu(' serialport-term.cmd','modules/hardware/network/node_modules/.bin/serialport-term.cmd') -module_menu(' window-size','modules/hardware/network/node_modules/.bin/window-size') -module_menu(' window-size.cmd','modules/hardware/network/node_modules/.bin/window-size.cmd') -module_label(' ansi-bgblack') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bgblack/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bgblack/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bgblack/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/ansi-bgblack/README.md') -module_label(' ansi-bgblue') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bgblue/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bgblue/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bgblue/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bgblue/readme.md') -module_label(' ansi-bgcyan') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bgcyan/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bgcyan/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bgcyan/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bgcyan/readme.md') -module_label(' ansi-bggreen') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bggreen/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bggreen/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bggreen/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bggreen/readme.md') -module_label(' ansi-bgmagenta') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bgmagenta/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bgmagenta/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bgmagenta/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bgmagenta/readme.md') -module_label(' ansi-bgred') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bgred/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bgred/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bgred/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bgred/readme.md') -module_label(' ansi-bgwhite') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bgwhite/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bgwhite/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bgwhite/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bgwhite/readme.md') -module_label(' ansi-bgyellow') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bgyellow/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bgyellow/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bgyellow/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bgyellow/readme.md') -module_label(' ansi-black') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-black/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-black/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-black/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-black/readme.md') -module_label(' ansi-blue') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-blue/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-blue/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-blue/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-blue/readme.md') -module_label(' ansi-bold') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-bold/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-bold/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-bold/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-bold/readme.md') -module_label(' ansi-colors') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-colors/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-colors/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-colors/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/ansi-colors/README.md') -module_label(' ansi-cyan') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-cyan/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-cyan/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-cyan/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-cyan/readme.md') -module_label(' ansi-dim') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-dim/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-dim/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-dim/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-dim/readme.md') -module_label(' ansi-gray') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-gray/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-gray/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-gray/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-gray/readme.md') -module_label(' ansi-green') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-green/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-green/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-green/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-green/readme.md') -module_label(' ansi-grey') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-grey/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-grey/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-grey/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-grey/readme.md') -module_label(' ansi-hidden') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-hidden/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-hidden/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-hidden/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-hidden/readme.md') -module_label(' ansi-inverse') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-inverse/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-inverse/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-inverse/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-inverse/readme.md') -module_label(' ansi-italic') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-italic/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-italic/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-italic/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-italic/readme.md') -module_label(' ansi-magenta') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-magenta/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-magenta/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-magenta/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-magenta/readme.md') -module_label(' ansi-red') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-red/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-red/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-red/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-red/readme.md') -module_label(' ansi-regex') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-regex/index.js') -module_menu(' license','modules/hardware/network/node_modules/ansi-regex/license') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-regex/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-regex/readme.md') -module_label(' ansi-reset') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-reset/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-reset/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-reset/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-reset/readme.md') -module_label(' ansi-strikethrough') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-strikethrough/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-strikethrough/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-strikethrough/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-strikethrough/readme.md') -module_label(' ansi-underline') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-underline/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-underline/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-underline/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-underline/readme.md') -module_label(' ansi-white') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-white/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-white/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-white/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-white/readme.md') -module_label(' ansi-wrap') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-wrap/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-wrap/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-wrap/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/ansi-wrap/README.md') -module_label(' ansi-yellow') -module_menu(' index.js','modules/hardware/network/node_modules/ansi-yellow/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ansi-yellow/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ansi-yellow/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ansi-yellow/readme.md') -module_label(' aproba') -module_menu(' index.js','modules/hardware/network/node_modules/aproba/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/aproba/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/aproba/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/aproba/README.md') -module_label(' are-we-there-yet') -module_menu(' CHANGES.md','modules/hardware/network/node_modules/are-we-there-yet/CHANGES.md') -module_menu(' index.js','modules/hardware/network/node_modules/are-we-there-yet/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/are-we-there-yet/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/are-we-there-yet/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/are-we-there-yet/README.md') -module_menu(' tracker-base.js','modules/hardware/network/node_modules/are-we-there-yet/tracker-base.js') -module_menu(' tracker-group.js','modules/hardware/network/node_modules/are-we-there-yet/tracker-group.js') -module_menu(' tracker-stream.js','modules/hardware/network/node_modules/are-we-there-yet/tracker-stream.js') -module_menu(' tracker.js','modules/hardware/network/node_modules/are-we-there-yet/tracker.js') -module_label(' arr-flatten') -module_menu(' index.js','modules/hardware/network/node_modules/arr-flatten/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/arr-flatten/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/arr-flatten/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/arr-flatten/README.md') -module_label(' arr-swap') -module_menu(' index.js','modules/hardware/network/node_modules/arr-swap/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/arr-swap/LICENSE') -module_label(' node_modules') -module_label(' is-number') -module_menu(' index.js','modules/hardware/network/node_modules/arr-swap/node_modules/is-number/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/arr-swap/node_modules/is-number/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/arr-swap/node_modules/is-number/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/arr-swap/node_modules/is-number/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/arr-swap/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/arr-swap/README.md') -module_label(' async-limiter') -module_menu(' .travis.yml','modules/hardware/network/node_modules/async-limiter/.travis.yml') -module_label(' coverage') -module_menu(' coverage.json','modules/hardware/network/node_modules/async-limiter/coverage/coverage.json') -module_label(' lcov-report') -module_label(' async-throttle') -module_menu(' index.html','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html') -module_menu(' index.js.html','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html') -module_menu(' base.css','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/base.css') -module_menu(' index.html','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/index.html') -module_menu(' prettify.css','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/prettify.css') -module_menu(' prettify.js','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/prettify.js') -module_menu(' sort-arrow-sprite.png','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png') -module_menu(' sorter.js','modules/hardware/network/node_modules/async-limiter/coverage/lcov-report/sorter.js') -module_menu(' lcov.info','modules/hardware/network/node_modules/async-limiter/coverage/lcov.info') -module_menu(' index.js','modules/hardware/network/node_modules/async-limiter/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/async-limiter/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/async-limiter/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/async-limiter/readme.md') -module_label(' bindings') -module_menu(' bindings.js','modules/hardware/network/node_modules/bindings/bindings.js') -module_menu(' package.json','modules/hardware/network/node_modules/bindings/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/bindings/README.md') -module_label(' bl') -module_menu(' .jshintrc','modules/hardware/network/node_modules/bl/.jshintrc') -module_menu(' .travis.yml','modules/hardware/network/node_modules/bl/.travis.yml') -module_menu(' bl.js','modules/hardware/network/node_modules/bl/bl.js') -module_menu(' LICENSE.md','modules/hardware/network/node_modules/bl/LICENSE.md') -module_menu(' package.json','modules/hardware/network/node_modules/bl/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/bl/README.md') -module_label(' test') -module_menu(' test.js','modules/hardware/network/node_modules/bl/test/test.js') -module_label(' buffer-alloc') -module_menu(' index.js','modules/hardware/network/node_modules/buffer-alloc/index.js') -module_menu(' package.json','modules/hardware/network/node_modules/buffer-alloc/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/buffer-alloc/readme.md') -module_label(' buffer-alloc-unsafe') -module_menu(' index.js','modules/hardware/network/node_modules/buffer-alloc-unsafe/index.js') -module_menu(' package.json','modules/hardware/network/node_modules/buffer-alloc-unsafe/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/buffer-alloc-unsafe/readme.md') -module_label(' buffer-fill') -module_menu(' index.js','modules/hardware/network/node_modules/buffer-fill/index.js') -module_menu(' package.json','modules/hardware/network/node_modules/buffer-fill/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/buffer-fill/readme.md') -module_label(' choices-separator') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/choices-separator/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/choices-separator/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/choices-separator/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/choices-separator/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/choices-separator/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/choices-separator/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/choices-separator/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/choices-separator/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/choices-separator/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/choices-separator/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/choices-separator/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/choices-separator/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/choices-separator/node_modules/debug/src/node.js') -module_label(' chownr') -module_menu(' chownr.js','modules/hardware/network/node_modules/chownr/chownr.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/chownr/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/chownr/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/chownr/README.md') -module_label(' clone-deep') -module_menu(' index.js','modules/hardware/network/node_modules/clone-deep/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/clone-deep/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/clone-deep/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/clone-deep/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/clone-deep/README.md') -module_label(' code-point-at') -module_menu(' index.js','modules/hardware/network/node_modules/code-point-at/index.js') -module_menu(' license','modules/hardware/network/node_modules/code-point-at/license') -module_menu(' package.json','modules/hardware/network/node_modules/code-point-at/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/code-point-at/readme.md') -module_label(' collection-visit') -module_menu(' index.js','modules/hardware/network/node_modules/collection-visit/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/collection-visit/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/collection-visit/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/collection-visit/README.md') -module_label(' commander') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/commander/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/commander/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/commander/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/commander/package.json') -module_menu(' Readme.md','modules/hardware/network/node_modules/commander/Readme.md') -module_label(' typings') -module_menu(' index.d.ts','modules/hardware/network/node_modules/commander/typings/index.d.ts') -module_label(' component-emitter') -module_menu(' History.md','modules/hardware/network/node_modules/component-emitter/History.md') -module_menu(' index.js','modules/hardware/network/node_modules/component-emitter/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/component-emitter/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/component-emitter/package.json') -module_menu(' Readme.md','modules/hardware/network/node_modules/component-emitter/Readme.md') -module_label(' console-control-strings') -module_menu(' index.js','modules/hardware/network/node_modules/console-control-strings/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/console-control-strings/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/console-control-strings/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/console-control-strings/README.md') -module_menu(' README.md~','modules/hardware/network/node_modules/console-control-strings/README.md~') -module_label(' copy-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/copy-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/copy-descriptor/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/copy-descriptor/package.json') -module_label(' core-util-is') -module_menu(' float.patch','modules/hardware/network/node_modules/core-util-is/float.patch') -module_label(' lib') -module_menu(' util.js','modules/hardware/network/node_modules/core-util-is/lib/util.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/core-util-is/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/core-util-is/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/core-util-is/README.md') -module_menu(' test.js','modules/hardware/network/node_modules/core-util-is/test.js') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/debug/CHANGELOG.md') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/debug/src/index.js') -module_menu(' node.js','modules/hardware/network/node_modules/debug/src/node.js') -module_label(' decompress-response') -module_menu(' index.js','modules/hardware/network/node_modules/decompress-response/index.js') -module_menu(' license','modules/hardware/network/node_modules/decompress-response/license') -module_menu(' package.json','modules/hardware/network/node_modules/decompress-response/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/decompress-response/readme.md') -module_label(' deep-extend') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/deep-extend/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/deep-extend/index.js') -module_label(' lib') -module_menu(' deep-extend.js','modules/hardware/network/node_modules/deep-extend/lib/deep-extend.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/deep-extend/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/deep-extend/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/deep-extend/README.md') -module_label(' define-property') -module_menu(' index.js','modules/hardware/network/node_modules/define-property/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/define-property/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/define-property/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/define-property/README.md') -module_label(' delegates') -module_menu(' .npmignore','modules/hardware/network/node_modules/delegates/.npmignore') -module_menu(' History.md','modules/hardware/network/node_modules/delegates/History.md') -module_menu(' index.js','modules/hardware/network/node_modules/delegates/index.js') -module_menu(' License','modules/hardware/network/node_modules/delegates/License') -module_menu(' Makefile','modules/hardware/network/node_modules/delegates/Makefile') -module_menu(' package.json','modules/hardware/network/node_modules/delegates/package.json') -module_menu(' Readme.md','modules/hardware/network/node_modules/delegates/Readme.md') -module_label(' test') -module_menu(' index.js','modules/hardware/network/node_modules/delegates/test/index.js') -module_label(' detect-libc') -module_menu(' .npmignore','modules/hardware/network/node_modules/detect-libc/.npmignore') -module_label(' bin') -module_menu(' detect-libc.js','modules/hardware/network/node_modules/detect-libc/bin/detect-libc.js') -module_label(' lib') -module_menu(' detect-libc.js','modules/hardware/network/node_modules/detect-libc/lib/detect-libc.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/detect-libc/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/detect-libc/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/detect-libc/README.md') -module_label(' end-of-stream') -module_menu(' index.js','modules/hardware/network/node_modules/end-of-stream/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/end-of-stream/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/end-of-stream/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/end-of-stream/README.md') -module_label(' error-symbol') -module_menu(' index.js','modules/hardware/network/node_modules/error-symbol/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/error-symbol/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/error-symbol/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/error-symbol/README.md') -module_label(' expand-template') -module_menu(' .travis.yml','modules/hardware/network/node_modules/expand-template/.travis.yml') -module_menu(' index.js','modules/hardware/network/node_modules/expand-template/index.js') -module_menu(' package.json','modules/hardware/network/node_modules/expand-template/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/expand-template/README.md') -module_menu(' test.js','modules/hardware/network/node_modules/expand-template/test.js') -module_label(' extend-shallow') -module_menu(' index.js','modules/hardware/network/node_modules/extend-shallow/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/extend-shallow/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/extend-shallow/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/extend-shallow/README.md') -module_label(' for-in') -module_menu(' index.js','modules/hardware/network/node_modules/for-in/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/for-in/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/for-in/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/for-in/README.md') -module_label(' for-own') -module_menu(' index.js','modules/hardware/network/node_modules/for-own/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/for-own/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/for-own/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/for-own/README.md') -module_label(' fs-constants') -module_menu(' browser.js','modules/hardware/network/node_modules/fs-constants/browser.js') -module_menu(' index.js','modules/hardware/network/node_modules/fs-constants/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/fs-constants/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/fs-constants/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/fs-constants/README.md') -module_label(' gauge') -module_menu(' base-theme.js','modules/hardware/network/node_modules/gauge/base-theme.js') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/gauge/CHANGELOG.md') -module_menu(' error.js','modules/hardware/network/node_modules/gauge/error.js') -module_menu(' has-color.js','modules/hardware/network/node_modules/gauge/has-color.js') -module_menu(' index.js','modules/hardware/network/node_modules/gauge/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/gauge/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/gauge/package.json') -module_menu(' plumbing.js','modules/hardware/network/node_modules/gauge/plumbing.js') -module_menu(' process.js','modules/hardware/network/node_modules/gauge/process.js') -module_menu(' progress-bar.js','modules/hardware/network/node_modules/gauge/progress-bar.js') -module_menu(' README.md','modules/hardware/network/node_modules/gauge/README.md') -module_menu(' render-template.js','modules/hardware/network/node_modules/gauge/render-template.js') -module_menu(' set-immediate.js','modules/hardware/network/node_modules/gauge/set-immediate.js') -module_menu(' set-interval.js','modules/hardware/network/node_modules/gauge/set-interval.js') -module_menu(' spin.js','modules/hardware/network/node_modules/gauge/spin.js') -module_menu(' template-item.js','modules/hardware/network/node_modules/gauge/template-item.js') -module_menu(' theme-set.js','modules/hardware/network/node_modules/gauge/theme-set.js') -module_menu(' themes.js','modules/hardware/network/node_modules/gauge/themes.js') -module_menu(' wide-truncate.js','modules/hardware/network/node_modules/gauge/wide-truncate.js') -module_label(' github-from-package') -module_menu(' .travis.yml','modules/hardware/network/node_modules/github-from-package/.travis.yml') -module_label(' example') -module_menu(' package.json','modules/hardware/network/node_modules/github-from-package/example/package.json') -module_menu(' url.js','modules/hardware/network/node_modules/github-from-package/example/url.js') -module_menu(' index.js','modules/hardware/network/node_modules/github-from-package/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/github-from-package/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/github-from-package/package.json') -module_menu(' readme.markdown','modules/hardware/network/node_modules/github-from-package/readme.markdown') -module_label(' test') -module_menu(' a.json','modules/hardware/network/node_modules/github-from-package/test/a.json') -module_menu(' b.json','modules/hardware/network/node_modules/github-from-package/test/b.json') -module_menu(' c.json','modules/hardware/network/node_modules/github-from-package/test/c.json') -module_menu(' d.json','modules/hardware/network/node_modules/github-from-package/test/d.json') -module_menu(' e.json','modules/hardware/network/node_modules/github-from-package/test/e.json') -module_menu(' url.js','modules/hardware/network/node_modules/github-from-package/test/url.js') -module_label(' has-unicode') -module_menu(' index.js','modules/hardware/network/node_modules/has-unicode/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/has-unicode/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/has-unicode/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/has-unicode/README.md') -module_label(' info-symbol') -module_menu(' index.js','modules/hardware/network/node_modules/info-symbol/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/info-symbol/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/info-symbol/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/info-symbol/README.md') -module_label(' inherits') -module_menu(' inherits.js','modules/hardware/network/node_modules/inherits/inherits.js') -module_menu(' inherits_browser.js','modules/hardware/network/node_modules/inherits/inherits_browser.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/inherits/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/inherits/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/inherits/README.md') -module_label(' ini') -module_menu(' ini.js','modules/hardware/network/node_modules/ini/ini.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ini/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ini/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/ini/README.md') -module_label(' is-accessor-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/is-accessor-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-accessor-descriptor/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-accessor-descriptor/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/is-accessor-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-accessor-descriptor/README.md') -module_label(' is-buffer') -module_menu(' index.js','modules/hardware/network/node_modules/is-buffer/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-buffer/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-buffer/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-buffer/README.md') -module_label(' test') -module_menu(' basic.js','modules/hardware/network/node_modules/is-buffer/test/basic.js') -module_label(' is-data-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/is-data-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-data-descriptor/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-data-descriptor/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/is-data-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-data-descriptor/README.md') -module_label(' is-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/is-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-descriptor/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-descriptor/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/is-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-descriptor/README.md') -module_label(' is-extendable') -module_menu(' index.js','modules/hardware/network/node_modules/is-extendable/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-extendable/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-extendable/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-extendable/README.md') -module_label(' is-fullwidth-code-point') -module_menu(' index.js','modules/hardware/network/node_modules/is-fullwidth-code-point/index.js') -module_menu(' license','modules/hardware/network/node_modules/is-fullwidth-code-point/license') -module_menu(' package.json','modules/hardware/network/node_modules/is-fullwidth-code-point/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/is-fullwidth-code-point/readme.md') -module_label(' is-number') -module_menu(' index.js','modules/hardware/network/node_modules/is-number/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-number/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-number/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-number/README.md') -module_label(' is-plain-object') -module_menu(' index.d.ts','modules/hardware/network/node_modules/is-plain-object/index.d.ts') -module_menu(' index.js','modules/hardware/network/node_modules/is-plain-object/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-plain-object/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-plain-object/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-plain-object/README.md') -module_label(' is-windows') -module_menu(' index.js','modules/hardware/network/node_modules/is-windows/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/is-windows/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/is-windows/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/is-windows/README.md') -module_label(' isarray') -module_menu(' .npmignore','modules/hardware/network/node_modules/isarray/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/isarray/.travis.yml') -module_menu(' component.json','modules/hardware/network/node_modules/isarray/component.json') -module_menu(' index.js','modules/hardware/network/node_modules/isarray/index.js') -module_menu(' Makefile','modules/hardware/network/node_modules/isarray/Makefile') -module_menu(' package.json','modules/hardware/network/node_modules/isarray/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/isarray/README.md') -module_menu(' test.js','modules/hardware/network/node_modules/isarray/test.js') -module_label(' isobject') -module_menu(' index.d.ts','modules/hardware/network/node_modules/isobject/index.d.ts') -module_menu(' index.js','modules/hardware/network/node_modules/isobject/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/isobject/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/isobject/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/isobject/README.md') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/kind-of/README.md') -module_label(' koalas') -module_menu(' index.js','modules/hardware/network/node_modules/koalas/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/koalas/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/koalas/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/koalas/README.md') -module_label(' lazy-cache') -module_menu(' index.js','modules/hardware/network/node_modules/lazy-cache/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/lazy-cache/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/lazy-cache/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/lazy-cache/README.md') -module_label(' log-ok') -module_menu(' index.js','modules/hardware/network/node_modules/log-ok/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/log-ok/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/log-ok/package.json') -module_label(' log-utils') -module_menu(' index.js','modules/hardware/network/node_modules/log-utils/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/log-utils/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/log-utils/package.json') -module_label(' map-visit') -module_menu(' index.js','modules/hardware/network/node_modules/map-visit/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/map-visit/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/map-visit/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/map-visit/README.md') -module_label(' mimic-response') -module_menu(' index.js','modules/hardware/network/node_modules/mimic-response/index.js') -module_menu(' license','modules/hardware/network/node_modules/mimic-response/license') -module_menu(' package.json','modules/hardware/network/node_modules/mimic-response/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/mimic-response/readme.md') -module_label(' minimist') -module_menu(' .travis.yml','modules/hardware/network/node_modules/minimist/.travis.yml') -module_label(' example') -module_menu(' parse.js','modules/hardware/network/node_modules/minimist/example/parse.js') -module_menu(' index.js','modules/hardware/network/node_modules/minimist/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/minimist/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/minimist/package.json') -module_menu(' readme.markdown','modules/hardware/network/node_modules/minimist/readme.markdown') -module_label(' test') -module_menu(' all_bool.js','modules/hardware/network/node_modules/minimist/test/all_bool.js') -module_menu(' bool.js','modules/hardware/network/node_modules/minimist/test/bool.js') -module_menu(' dash.js','modules/hardware/network/node_modules/minimist/test/dash.js') -module_menu(' default_bool.js','modules/hardware/network/node_modules/minimist/test/default_bool.js') -module_menu(' dotted.js','modules/hardware/network/node_modules/minimist/test/dotted.js') -module_menu(' kv_short.js','modules/hardware/network/node_modules/minimist/test/kv_short.js') -module_menu(' long.js','modules/hardware/network/node_modules/minimist/test/long.js') -module_menu(' num.js','modules/hardware/network/node_modules/minimist/test/num.js') -module_menu(' parse.js','modules/hardware/network/node_modules/minimist/test/parse.js') -module_menu(' parse_modified.js','modules/hardware/network/node_modules/minimist/test/parse_modified.js') -module_menu(' short.js','modules/hardware/network/node_modules/minimist/test/short.js') -module_menu(' stop_early.js','modules/hardware/network/node_modules/minimist/test/stop_early.js') -module_menu(' unknown.js','modules/hardware/network/node_modules/minimist/test/unknown.js') -module_menu(' whitespace.js','modules/hardware/network/node_modules/minimist/test/whitespace.js') -module_label(' mixin-object') -module_menu(' index.js','modules/hardware/network/node_modules/mixin-object/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/mixin-object/LICENSE') -module_label(' node_modules') -module_label(' for-in') -module_menu(' index.js','modules/hardware/network/node_modules/mixin-object/node_modules/for-in/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/mixin-object/node_modules/for-in/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/mixin-object/node_modules/for-in/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/mixin-object/node_modules/for-in/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/mixin-object/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/mixin-object/README.md') -module_label(' mkdirp') -module_menu(' .travis.yml','modules/hardware/network/node_modules/mkdirp/.travis.yml') -module_label(' bin') -module_menu(' cmd.js','modules/hardware/network/node_modules/mkdirp/bin/cmd.js') -module_menu(' usage.txt','modules/hardware/network/node_modules/mkdirp/bin/usage.txt') -module_label(' examples') -module_menu(' pow.js','modules/hardware/network/node_modules/mkdirp/examples/pow.js') -module_menu(' index.js','modules/hardware/network/node_modules/mkdirp/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/mkdirp/LICENSE') -module_label(' node_modules') -module_label(' minimist') -module_menu(' .travis.yml','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/.travis.yml') -module_label(' example') -module_menu(' parse.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/example/parse.js') -module_menu(' index.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/package.json') -module_menu(' readme.markdown','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/readme.markdown') -module_label(' test') -module_menu(' dash.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/dash.js') -module_menu(' default_bool.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/default_bool.js') -module_menu(' dotted.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/dotted.js') -module_menu(' long.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/long.js') -module_menu(' parse.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/parse.js') -module_menu(' parse_modified.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js') -module_menu(' short.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/short.js') -module_menu(' whitespace.js','modules/hardware/network/node_modules/mkdirp/node_modules/minimist/test/whitespace.js') -module_menu(' package.json','modules/hardware/network/node_modules/mkdirp/package.json') -module_menu(' readme.markdown','modules/hardware/network/node_modules/mkdirp/readme.markdown') -module_label(' test') -module_menu(' chmod.js','modules/hardware/network/node_modules/mkdirp/test/chmod.js') -module_menu(' clobber.js','modules/hardware/network/node_modules/mkdirp/test/clobber.js') -module_menu(' mkdirp.js','modules/hardware/network/node_modules/mkdirp/test/mkdirp.js') -module_menu(' opts_fs.js','modules/hardware/network/node_modules/mkdirp/test/opts_fs.js') -module_menu(' opts_fs_sync.js','modules/hardware/network/node_modules/mkdirp/test/opts_fs_sync.js') -module_menu(' perm.js','modules/hardware/network/node_modules/mkdirp/test/perm.js') -module_menu(' perm_sync.js','modules/hardware/network/node_modules/mkdirp/test/perm_sync.js') -module_menu(' race.js','modules/hardware/network/node_modules/mkdirp/test/race.js') -module_menu(' rel.js','modules/hardware/network/node_modules/mkdirp/test/rel.js') -module_menu(' return.js','modules/hardware/network/node_modules/mkdirp/test/return.js') -module_menu(' return_sync.js','modules/hardware/network/node_modules/mkdirp/test/return_sync.js') -module_menu(' root.js','modules/hardware/network/node_modules/mkdirp/test/root.js') -module_menu(' sync.js','modules/hardware/network/node_modules/mkdirp/test/sync.js') -module_menu(' umask.js','modules/hardware/network/node_modules/mkdirp/test/umask.js') -module_menu(' umask_sync.js','modules/hardware/network/node_modules/mkdirp/test/umask_sync.js') -module_label(' ms') -module_menu(' index.js','modules/hardware/network/node_modules/ms/index.js') -module_menu(' license.md','modules/hardware/network/node_modules/ms/license.md') -module_menu(' package.json','modules/hardware/network/node_modules/ms/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/ms/readme.md') -module_label(' mute-stream') -module_label(' .nyc_output') -module_menu(' 33508.json','modules/hardware/network/node_modules/mute-stream/.nyc_output/33508.json') -module_menu(' 33510.json','modules/hardware/network/node_modules/mute-stream/.nyc_output/33510.json') -module_menu(' .travis.yml','modules/hardware/network/node_modules/mute-stream/.travis.yml') -module_label(' coverage') -module_label(' lcov-report') -module_menu(' base.css','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/base.css') -module_menu(' index.html','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/index.html') -module_menu(' prettify.css','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/prettify.css') -module_menu(' prettify.js','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/prettify.js') -module_menu(' sort-arrow-sprite.png','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/sort-arrow-sprite.png') -module_menu(' sorter.js','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/sorter.js') -module_label(' __root__') -module_menu(' index.html','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/__root__/index.html') -module_menu(' mute.js.html','modules/hardware/network/node_modules/mute-stream/coverage/lcov-report/__root__/mute.js.html') -module_menu(' lcov.info','modules/hardware/network/node_modules/mute-stream/coverage/lcov.info') -module_menu(' LICENSE','modules/hardware/network/node_modules/mute-stream/LICENSE') -module_menu(' mute.js','modules/hardware/network/node_modules/mute-stream/mute.js') -module_menu(' package.json','modules/hardware/network/node_modules/mute-stream/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/mute-stream/README.md') -module_label(' test') -module_menu(' basic.js','modules/hardware/network/node_modules/mute-stream/test/basic.js') -module_label(' nan') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/nan/CHANGELOG.md') -module_label(' doc') -module_menu(' asyncworker.md','modules/hardware/network/node_modules/nan/doc/asyncworker.md') -module_menu(' buffers.md','modules/hardware/network/node_modules/nan/doc/buffers.md') -module_menu(' callback.md','modules/hardware/network/node_modules/nan/doc/callback.md') -module_menu(' converters.md','modules/hardware/network/node_modules/nan/doc/converters.md') -module_menu(' errors.md','modules/hardware/network/node_modules/nan/doc/errors.md') -module_menu(' json.md','modules/hardware/network/node_modules/nan/doc/json.md') -module_menu(' maybe_types.md','modules/hardware/network/node_modules/nan/doc/maybe_types.md') -module_menu(' methods.md','modules/hardware/network/node_modules/nan/doc/methods.md') -module_menu(' new.md','modules/hardware/network/node_modules/nan/doc/new.md') -module_menu(' node_misc.md','modules/hardware/network/node_modules/nan/doc/node_misc.md') -module_menu(' object_wrappers.md','modules/hardware/network/node_modules/nan/doc/object_wrappers.md') -module_menu(' persistent.md','modules/hardware/network/node_modules/nan/doc/persistent.md') -module_menu(' scopes.md','modules/hardware/network/node_modules/nan/doc/scopes.md') -module_menu(' script.md','modules/hardware/network/node_modules/nan/doc/script.md') -module_menu(' string_bytes.md','modules/hardware/network/node_modules/nan/doc/string_bytes.md') -module_menu(' v8_internals.md','modules/hardware/network/node_modules/nan/doc/v8_internals.md') -module_menu(' v8_misc.md','modules/hardware/network/node_modules/nan/doc/v8_misc.md') -module_menu(' include_dirs.js','modules/hardware/network/node_modules/nan/include_dirs.js') -module_menu(' LICENSE.md','modules/hardware/network/node_modules/nan/LICENSE.md') -module_menu(' nan.h','modules/hardware/network/node_modules/nan/nan.h') -module_menu(' nan_callbacks.h','modules/hardware/network/node_modules/nan/nan_callbacks.h') -module_menu(' nan_callbacks_12_inl.h','modules/hardware/network/node_modules/nan/nan_callbacks_12_inl.h') -module_menu(' nan_callbacks_pre_12_inl.h','modules/hardware/network/node_modules/nan/nan_callbacks_pre_12_inl.h') -module_menu(' nan_converters.h','modules/hardware/network/node_modules/nan/nan_converters.h') -module_menu(' nan_converters_43_inl.h','modules/hardware/network/node_modules/nan/nan_converters_43_inl.h') -module_menu(' nan_converters_pre_43_inl.h','modules/hardware/network/node_modules/nan/nan_converters_pre_43_inl.h') -module_menu(' nan_define_own_property_helper.h','modules/hardware/network/node_modules/nan/nan_define_own_property_helper.h') -module_menu(' nan_implementation_12_inl.h','modules/hardware/network/node_modules/nan/nan_implementation_12_inl.h') -module_menu(' nan_implementation_pre_12_inl.h','modules/hardware/network/node_modules/nan/nan_implementation_pre_12_inl.h') -module_menu(' nan_json.h','modules/hardware/network/node_modules/nan/nan_json.h') -module_menu(' nan_maybe_43_inl.h','modules/hardware/network/node_modules/nan/nan_maybe_43_inl.h') -module_menu(' nan_maybe_pre_43_inl.h','modules/hardware/network/node_modules/nan/nan_maybe_pre_43_inl.h') -module_menu(' nan_new.h','modules/hardware/network/node_modules/nan/nan_new.h') -module_menu(' nan_object_wrap.h','modules/hardware/network/node_modules/nan/nan_object_wrap.h') -module_menu(' nan_persistent_12_inl.h','modules/hardware/network/node_modules/nan/nan_persistent_12_inl.h') -module_menu(' nan_persistent_pre_12_inl.h','modules/hardware/network/node_modules/nan/nan_persistent_pre_12_inl.h') -module_menu(' nan_private.h','modules/hardware/network/node_modules/nan/nan_private.h') -module_menu(' nan_string_bytes.h','modules/hardware/network/node_modules/nan/nan_string_bytes.h') -module_menu(' nan_typedarray_contents.h','modules/hardware/network/node_modules/nan/nan_typedarray_contents.h') -module_menu(' nan_weak.h','modules/hardware/network/node_modules/nan/nan_weak.h') -module_menu(' package.json','modules/hardware/network/node_modules/nan/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/nan/README.md') -module_label(' tools') -module_menu(' 1to2.js','modules/hardware/network/node_modules/nan/tools/1to2.js') -module_menu(' package.json','modules/hardware/network/node_modules/nan/tools/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/nan/tools/README.md') -module_label(' node-abi') -module_menu(' .travis.yml','modules/hardware/network/node_modules/node-abi/.travis.yml') -module_menu(' CODE_OF_CONDUCT.md','modules/hardware/network/node_modules/node-abi/CODE_OF_CONDUCT.md') -module_menu(' CONTRIBUTING.md','modules/hardware/network/node_modules/node-abi/CONTRIBUTING.md') -module_menu(' index.js','modules/hardware/network/node_modules/node-abi/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/node-abi/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/node-abi/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/node-abi/README.md') -module_label(' test') -module_menu(' index.js','modules/hardware/network/node_modules/node-abi/test/index.js') -module_label(' noop-logger') -module_menu(' .npmignore','modules/hardware/network/node_modules/noop-logger/.npmignore') -module_menu(' circle.yml','modules/hardware/network/node_modules/noop-logger/circle.yml') -module_menu(' History.md','modules/hardware/network/node_modules/noop-logger/History.md') -module_label(' lib') -module_menu(' index.js','modules/hardware/network/node_modules/noop-logger/lib/index.js') -module_menu(' Makefile','modules/hardware/network/node_modules/noop-logger/Makefile') -module_menu(' package.json','modules/hardware/network/node_modules/noop-logger/package.json') -module_menu(' Readme.md','modules/hardware/network/node_modules/noop-logger/Readme.md') -module_label(' test') -module_menu(' index.js','modules/hardware/network/node_modules/noop-logger/test/index.js') -module_label(' npmlog') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/npmlog/CHANGELOG.md') -module_menu(' LICENSE','modules/hardware/network/node_modules/npmlog/LICENSE') -module_menu(' log.js','modules/hardware/network/node_modules/npmlog/log.js') -module_menu(' package.json','modules/hardware/network/node_modules/npmlog/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/npmlog/README.md') -module_label(' number-is-nan') -module_menu(' index.js','modules/hardware/network/node_modules/number-is-nan/index.js') -module_menu(' license','modules/hardware/network/node_modules/number-is-nan/license') -module_menu(' package.json','modules/hardware/network/node_modules/number-is-nan/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/number-is-nan/readme.md') -module_label(' object-assign') -module_menu(' index.js','modules/hardware/network/node_modules/object-assign/index.js') -module_menu(' license','modules/hardware/network/node_modules/object-assign/license') -module_menu(' package.json','modules/hardware/network/node_modules/object-assign/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/object-assign/readme.md') -module_label(' object-copy') -module_menu(' index.js','modules/hardware/network/node_modules/object-copy/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/object-copy/LICENSE') -module_label(' node_modules') -module_label(' define-property') -module_menu(' index.js','modules/hardware/network/node_modules/object-copy/node_modules/define-property/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/object-copy/node_modules/define-property/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/object-copy/node_modules/define-property/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/object-copy/node_modules/define-property/README.md') -module_label(' is-accessor-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/object-copy/node_modules/is-accessor-descriptor/README.md') -module_label(' is-data-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/object-copy/node_modules/is-data-descriptor/README.md') -module_label(' is-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/object-copy/node_modules/is-descriptor/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/object-copy/package.json') -module_label(' object-visit') -module_menu(' index.js','modules/hardware/network/node_modules/object-visit/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/object-visit/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/object-visit/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/object-visit/README.md') -module_label(' once') -module_menu(' LICENSE','modules/hardware/network/node_modules/once/LICENSE') -module_menu(' once.js','modules/hardware/network/node_modules/once/once.js') -module_menu(' package.json','modules/hardware/network/node_modules/once/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/once/README.md') -module_label(' os-homedir') -module_menu(' index.js','modules/hardware/network/node_modules/os-homedir/index.js') -module_menu(' license','modules/hardware/network/node_modules/os-homedir/license') -module_menu(' package.json','modules/hardware/network/node_modules/os-homedir/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/os-homedir/readme.md') -module_label(' parser-byte-length') -module_menu(' byte-length.js','modules/hardware/network/node_modules/parser-byte-length/byte-length.js') -module_menu(' package.json','modules/hardware/network/node_modules/parser-byte-length/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/parser-byte-length/README.md') -module_label(' parser-cctalk') -module_menu(' cctalk.js','modules/hardware/network/node_modules/parser-cctalk/cctalk.js') -module_menu(' package.json','modules/hardware/network/node_modules/parser-cctalk/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/parser-cctalk/README.md') -module_label(' parser-delimiter') -module_menu(' delimiter.js','modules/hardware/network/node_modules/parser-delimiter/delimiter.js') -module_menu(' package.json','modules/hardware/network/node_modules/parser-delimiter/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/parser-delimiter/README.md') -module_label(' parser-readline') -module_menu(' package.json','modules/hardware/network/node_modules/parser-readline/package.json') -module_menu(' readline.js','modules/hardware/network/node_modules/parser-readline/readline.js') -module_menu(' README.md','modules/hardware/network/node_modules/parser-readline/README.md') -module_label(' parser-ready') -module_menu(' package.json','modules/hardware/network/node_modules/parser-ready/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/parser-ready/README.md') -module_menu(' ready.js','modules/hardware/network/node_modules/parser-ready/ready.js') -module_label(' parser-regex') -module_menu(' package.json','modules/hardware/network/node_modules/parser-regex/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/parser-regex/README.md') -module_menu(' regex.js','modules/hardware/network/node_modules/parser-regex/regex.js') -module_label(' pointer-symbol') -module_menu(' index.js','modules/hardware/network/node_modules/pointer-symbol/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/pointer-symbol/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/pointer-symbol/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/pointer-symbol/README.md') -module_label(' prebuild-install') -module_menu(' .travis.yml','modules/hardware/network/node_modules/prebuild-install/.travis.yml') -module_menu(' appveyor.yml','modules/hardware/network/node_modules/prebuild-install/appveyor.yml') -module_menu(' bin.js','modules/hardware/network/node_modules/prebuild-install/bin.js') -module_menu(' CONTRIBUTING.md','modules/hardware/network/node_modules/prebuild-install/CONTRIBUTING.md') -module_menu(' download.js','modules/hardware/network/node_modules/prebuild-install/download.js') -module_menu(' error.js','modules/hardware/network/node_modules/prebuild-install/error.js') -module_menu(' help.txt','modules/hardware/network/node_modules/prebuild-install/help.txt') -module_menu(' index.js','modules/hardware/network/node_modules/prebuild-install/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prebuild-install/LICENSE') -module_menu(' log.js','modules/hardware/network/node_modules/prebuild-install/log.js') -module_menu(' package.json','modules/hardware/network/node_modules/prebuild-install/package.json') -module_menu(' rc.js','modules/hardware/network/node_modules/prebuild-install/rc.js') -module_menu(' README.md','modules/hardware/network/node_modules/prebuild-install/README.md') -module_menu(' util.js','modules/hardware/network/node_modules/prebuild-install/util.js') -module_label(' process-nextick-args') -module_menu(' index.js','modules/hardware/network/node_modules/process-nextick-args/index.js') -module_menu(' license.md','modules/hardware/network/node_modules/process-nextick-args/license.md') -module_menu(' package.json','modules/hardware/network/node_modules/process-nextick-args/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/process-nextick-args/readme.md') -module_label(' promirepl') -module_menu(' .npmignore','modules/hardware/network/node_modules/promirepl/.npmignore') -module_label(' bin') -module_menu(' prominode.js','modules/hardware/network/node_modules/promirepl/bin/prominode.js') -module_menu(' index.js','modules/hardware/network/node_modules/promirepl/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/promirepl/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/promirepl/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/promirepl/README.md') -module_label(' prompt-actions') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-actions/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-actions/LICENSE') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-actions/node_modules/debug/src/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-actions/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-actions/README.md') -module_label(' prompt-base') -module_menu(' changelog.md','modules/hardware/network/node_modules/prompt-base/changelog.md') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/LICENSE') -module_label(' node_modules') -module_label(' ansi-regex') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/index.js') -module_menu(' license','modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/license') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/prompt-base/node_modules/ansi-regex/readme.md') -module_label(' choices-separator') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/LICENSE') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/node_modules/debug/src/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/choices-separator/README.md') -module_label(' is-accessor-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/is-accessor-descriptor/README.md') -module_label(' is-data-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/is-data-descriptor/README.md') -module_label(' is-fullwidth-code-point') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/index.js') -module_menu(' license','modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/license') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/prompt-base/node_modules/is-fullwidth-code-point/readme.md') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/kind-of/README.md') -module_label(' prompt-choices') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/index.js') -module_label(' lib') -module_menu(' choice.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/lib/choice.js') -module_menu(' utils.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/lib/utils.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/LICENSE') -module_label(' node_modules') -module_label(' clone-deep') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/clone-deep/README.md') -module_label(' define-property') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/define-property/README.md') -module_label(' kind-of') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-choices/README.md') -module_label(' prompt-question') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/index.js') -module_label(' lib') -module_menu(' utils.js','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/lib/utils.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/prompt-question/README.md') -module_label(' readline-ui') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/LICENSE') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/node_modules/debug/src/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/readline-ui/README.md') -module_label(' readline-utils') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/LICENSE') -module_label(' node_modules') -module_label(' is-number') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/is-number/README.md') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/readline-utils/README.md') -module_label(' shallow-clone') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/shallow-clone/README.md') -module_label(' static-extend') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/LICENSE') -module_label(' node_modules') -module_label(' define-property') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/define-property/README.md') -module_label(' is-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/node_modules/is-descriptor/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/static-extend/package.json') -module_label(' string-width') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/string-width/index.js') -module_menu(' license','modules/hardware/network/node_modules/prompt-base/node_modules/string-width/license') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/string-width/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/prompt-base/node_modules/string-width/readme.md') -module_label(' strip-ansi') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/index.js') -module_menu(' license','modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/license') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/prompt-base/node_modules/strip-ansi/readme.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-base/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-base/README.md') -module_label(' prompt-checkbox') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-checkbox/node_modules/debug/src/node.js') -module_label(' prompt-choices') -module_label(' node_modules') -module_label(' clone-deep') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-choices/node_modules/clone-deep/README.md') -module_label(' define-property') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-choices/node_modules/define-property/README.md') -module_label(' kind-of') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-choices/node_modules/kind-of/README.md') -module_label(' shallow-clone') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-choices/node_modules/shallow-clone/README.md') -module_label(' prompt-list') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-list/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-list/LICENSE') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/prompt-list/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/prompt-list/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/prompt-list/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/prompt-list/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-list/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/prompt-list/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/prompt-list/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-list/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/prompt-list/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-list/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-list/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-list/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-list/node_modules/debug/src/node.js') -module_label(' prompt-checkbox') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-checkbox/README.md') -module_label(' prompt-radio') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-list/node_modules/prompt-radio/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-list/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-list/README.md') -module_label(' prompt-question') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-question/node_modules/kind-of/README.md') -module_label(' prompt-radio') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/prompt-radio/node_modules/debug/src/node.js') -module_label(' pump') -module_menu(' .travis.yml','modules/hardware/network/node_modules/pump/.travis.yml') -module_menu(' index.js','modules/hardware/network/node_modules/pump/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/pump/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/pump/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/pump/README.md') -module_menu(' test-browser.js','modules/hardware/network/node_modules/pump/test-browser.js') -module_menu(' test-node.js','modules/hardware/network/node_modules/pump/test-node.js') -module_label(' radio-symbol') -module_menu(' index.js','modules/hardware/network/node_modules/radio-symbol/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/radio-symbol/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/radio-symbol/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/radio-symbol/README.md') -module_label(' rc') -module_menu(' browser.js','modules/hardware/network/node_modules/rc/browser.js') -module_menu(' cli.js','modules/hardware/network/node_modules/rc/cli.js') -module_menu(' index.js','modules/hardware/network/node_modules/rc/index.js') -module_label(' lib') -module_menu(' utils.js','modules/hardware/network/node_modules/rc/lib/utils.js') -module_menu(' LICENSE.APACHE2','modules/hardware/network/node_modules/rc/LICENSE.APACHE2') -module_menu(' LICENSE.BSD','modules/hardware/network/node_modules/rc/LICENSE.BSD') -module_menu(' LICENSE.MIT','modules/hardware/network/node_modules/rc/LICENSE.MIT') -module_menu(' package.json','modules/hardware/network/node_modules/rc/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/rc/README.md') -module_label(' test') -module_menu(' ini.js','modules/hardware/network/node_modules/rc/test/ini.js') -module_menu(' nested-env-vars.js','modules/hardware/network/node_modules/rc/test/nested-env-vars.js') -module_menu(' test.js','modules/hardware/network/node_modules/rc/test/test.js') -module_label(' readable-stream') -module_menu(' .travis.yml','modules/hardware/network/node_modules/readable-stream/.travis.yml') -module_menu(' CONTRIBUTING.md','modules/hardware/network/node_modules/readable-stream/CONTRIBUTING.md') -module_label(' doc') -module_label(' wg-meetings') -module_menu(' 2015-01-30.md','modules/hardware/network/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md') -module_menu(' duplex-browser.js','modules/hardware/network/node_modules/readable-stream/duplex-browser.js') -module_menu(' duplex.js','modules/hardware/network/node_modules/readable-stream/duplex.js') -module_menu(' GOVERNANCE.md','modules/hardware/network/node_modules/readable-stream/GOVERNANCE.md') -module_label(' lib') -module_label(' internal') -module_label(' streams') -module_menu(' BufferList.js','modules/hardware/network/node_modules/readable-stream/lib/internal/streams/BufferList.js') -module_menu(' destroy.js','modules/hardware/network/node_modules/readable-stream/lib/internal/streams/destroy.js') -module_menu(' stream-browser.js','modules/hardware/network/node_modules/readable-stream/lib/internal/streams/stream-browser.js') -module_menu(' stream.js','modules/hardware/network/node_modules/readable-stream/lib/internal/streams/stream.js') -module_menu(' _stream_duplex.js','modules/hardware/network/node_modules/readable-stream/lib/_stream_duplex.js') -module_menu(' _stream_passthrough.js','modules/hardware/network/node_modules/readable-stream/lib/_stream_passthrough.js') -module_menu(' _stream_readable.js','modules/hardware/network/node_modules/readable-stream/lib/_stream_readable.js') -module_menu(' _stream_transform.js','modules/hardware/network/node_modules/readable-stream/lib/_stream_transform.js') -module_menu(' _stream_writable.js','modules/hardware/network/node_modules/readable-stream/lib/_stream_writable.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/readable-stream/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/readable-stream/package.json') -module_menu(' passthrough.js','modules/hardware/network/node_modules/readable-stream/passthrough.js') -module_menu(' readable-browser.js','modules/hardware/network/node_modules/readable-stream/readable-browser.js') -module_menu(' readable.js','modules/hardware/network/node_modules/readable-stream/readable.js') -module_menu(' README.md','modules/hardware/network/node_modules/readable-stream/README.md') -module_menu(' transform.js','modules/hardware/network/node_modules/readable-stream/transform.js') -module_menu(' writable-browser.js','modules/hardware/network/node_modules/readable-stream/writable-browser.js') -module_menu(' writable.js','modules/hardware/network/node_modules/readable-stream/writable.js') -module_label(' readline-ui') -module_label(' node_modules') -module_label(' ansi-regex') -module_menu(' index.js','modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/index.js') -module_menu(' license','modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/license') -module_menu(' package.json','modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/readline-ui/node_modules/ansi-regex/readme.md') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/readline-ui/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/readline-ui/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/readline-ui/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/readline-ui/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/readline-ui/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/readline-ui/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/readline-ui/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/readline-ui/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/readline-ui/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/readline-ui/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/readline-ui/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/readline-ui/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/readline-ui/node_modules/debug/src/node.js') -module_label(' is-fullwidth-code-point') -module_menu(' index.js','modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/index.js') -module_menu(' license','modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/license') -module_menu(' package.json','modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/readline-ui/node_modules/is-fullwidth-code-point/readme.md') -module_label(' string-width') -module_menu(' index.js','modules/hardware/network/node_modules/readline-ui/node_modules/string-width/index.js') -module_menu(' license','modules/hardware/network/node_modules/readline-ui/node_modules/string-width/license') -module_menu(' package.json','modules/hardware/network/node_modules/readline-ui/node_modules/string-width/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/readline-ui/node_modules/string-width/readme.md') -module_label(' strip-ansi') -module_menu(' index.js','modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/index.js') -module_menu(' license','modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/license') -module_menu(' package.json','modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/readline-ui/node_modules/strip-ansi/readme.md') -module_label(' readline-utils') -module_label(' node_modules') -module_label(' is-number') -module_menu(' index.js','modules/hardware/network/node_modules/readline-utils/node_modules/is-number/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/readline-utils/node_modules/is-number/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/readline-utils/node_modules/is-number/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/readline-utils/node_modules/is-number/README.md') -module_label(' safe-buffer') -module_menu(' index.d.ts','modules/hardware/network/node_modules/safe-buffer/index.d.ts') -module_menu(' index.js','modules/hardware/network/node_modules/safe-buffer/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/safe-buffer/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/safe-buffer/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/safe-buffer/README.md') -module_label(' semver') -module_label(' bin') -module_menu(' semver','modules/hardware/network/node_modules/semver/bin/semver') -module_menu(' LICENSE','modules/hardware/network/node_modules/semver/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/semver/package.json') -module_menu(' range.bnf','modules/hardware/network/node_modules/semver/range.bnf') -module_menu(' README.md','modules/hardware/network/node_modules/semver/README.md') -module_menu(' semver.js','modules/hardware/network/node_modules/semver/semver.js') -module_label(' serialport') -module_menu(' .jsdoc.json','modules/hardware/network/node_modules/serialport/.jsdoc.json') -module_label(' bin') -module_menu(' echo.js','modules/hardware/network/node_modules/serialport/bin/echo.js') -module_menu(' find-arduino.js','modules/hardware/network/node_modules/serialport/bin/find-arduino.js') -module_menu(' list.js','modules/hardware/network/node_modules/serialport/bin/list.js') -module_menu(' repl.js','modules/hardware/network/node_modules/serialport/bin/repl.js') -module_menu(' terminal.js','modules/hardware/network/node_modules/serialport/bin/terminal.js') -module_menu(' write-a-lot.js','modules/hardware/network/node_modules/serialport/bin/write-a-lot.js') -module_menu(' binding.gyp','modules/hardware/network/node_modules/serialport/binding.gyp') -module_label(' build') -module_label(' Release') -module_menu(' serialport.node','modules/hardware/network/node_modules/serialport/build/Release/serialport.node') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/serialport/CHANGELOG.md') -module_menu(' codecov.yml','modules/hardware/network/node_modules/serialport/codecov.yml') -module_label(' lib') -module_label(' bindings') -module_menu(' auto-detect.js','modules/hardware/network/node_modules/serialport/lib/bindings/auto-detect.js') -module_menu(' base.js','modules/hardware/network/node_modules/serialport/lib/bindings/base.js') -module_menu(' darwin.js','modules/hardware/network/node_modules/serialport/lib/bindings/darwin.js') -module_menu(' linux-list.js','modules/hardware/network/node_modules/serialport/lib/bindings/linux-list.js') -module_menu(' linux.js','modules/hardware/network/node_modules/serialport/lib/bindings/linux.js') -module_menu(' mock.js','modules/hardware/network/node_modules/serialport/lib/bindings/mock.js') -module_menu(' poller.js','modules/hardware/network/node_modules/serialport/lib/bindings/poller.js') -module_menu(' unix-read.js','modules/hardware/network/node_modules/serialport/lib/bindings/unix-read.js') -module_menu(' unix-write.js','modules/hardware/network/node_modules/serialport/lib/bindings/unix-write.js') -module_menu(' win32-sn-parser.js','modules/hardware/network/node_modules/serialport/lib/bindings/win32-sn-parser.js') -module_menu(' win32.js','modules/hardware/network/node_modules/serialport/lib/bindings/win32.js') -module_menu(' index.js','modules/hardware/network/node_modules/serialport/lib/index.js') -module_menu(' parsers.js','modules/hardware/network/node_modules/serialport/lib/parsers.js') -module_menu(' serialport.js','modules/hardware/network/node_modules/serialport/lib/serialport.js') -module_menu(' util.js','modules/hardware/network/node_modules/serialport/lib/util.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/serialport/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/serialport/package.json') -module_label(' prebuilds') -module_menu(' serialport-v6.1.1-node-v48-darwin-x64.tar.gz','modules/hardware/network/node_modules/serialport/prebuilds/serialport-v6.1.1-node-v48-darwin-x64.tar.gz') -module_menu(' README.md','modules/hardware/network/node_modules/serialport/README.md') -module_label(' src') -module_menu(' darwin_list.cpp','modules/hardware/network/node_modules/serialport/src/darwin_list.cpp') -module_menu(' darwin_list.h','modules/hardware/network/node_modules/serialport/src/darwin_list.h') -module_menu(' poller.cpp','modules/hardware/network/node_modules/serialport/src/poller.cpp') -module_menu(' poller.h','modules/hardware/network/node_modules/serialport/src/poller.h') -module_menu(' serialport.cpp','modules/hardware/network/node_modules/serialport/src/serialport.cpp') -module_menu(' serialport.h','modules/hardware/network/node_modules/serialport/src/serialport.h') -module_menu(' serialport_linux.cpp','modules/hardware/network/node_modules/serialport/src/serialport_linux.cpp') -module_menu(' serialport_linux.h','modules/hardware/network/node_modules/serialport/src/serialport_linux.h') -module_menu(' serialport_unix.cpp','modules/hardware/network/node_modules/serialport/src/serialport_unix.cpp') -module_menu(' serialport_unix.h','modules/hardware/network/node_modules/serialport/src/serialport_unix.h') -module_menu(' serialport_win.cpp','modules/hardware/network/node_modules/serialport/src/serialport_win.cpp') -module_menu(' serialport_win.h','modules/hardware/network/node_modules/serialport/src/serialport_win.h') -module_menu(' test.js','modules/hardware/network/node_modules/serialport/test.js') -module_label(' set-blocking') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/set-blocking/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/set-blocking/index.js') -module_menu(' LICENSE.txt','modules/hardware/network/node_modules/set-blocking/LICENSE.txt') -module_menu(' package.json','modules/hardware/network/node_modules/set-blocking/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/set-blocking/README.md') -module_label(' set-getter') -module_menu(' index.js','modules/hardware/network/node_modules/set-getter/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/set-getter/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/set-getter/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/set-getter/README.md') -module_label(' set-value') -module_menu(' index.js','modules/hardware/network/node_modules/set-value/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/set-value/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/set-value/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/set-value/README.md') -module_label(' shallow-clone') -module_menu(' index.js','modules/hardware/network/node_modules/shallow-clone/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/shallow-clone/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/shallow-clone/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/shallow-clone/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/shallow-clone/README.md') -module_label(' signal-exit') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/signal-exit/CHANGELOG.md') -module_menu(' index.js','modules/hardware/network/node_modules/signal-exit/index.js') -module_menu(' LICENSE.txt','modules/hardware/network/node_modules/signal-exit/LICENSE.txt') -module_menu(' package.json','modules/hardware/network/node_modules/signal-exit/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/signal-exit/README.md') -module_menu(' signals.js','modules/hardware/network/node_modules/signal-exit/signals.js') -module_label(' simple-concat') -module_menu(' .travis.yml','modules/hardware/network/node_modules/simple-concat/.travis.yml') -module_menu(' index.js','modules/hardware/network/node_modules/simple-concat/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/simple-concat/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/simple-concat/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/simple-concat/README.md') -module_label(' test') -module_menu(' basic.js','modules/hardware/network/node_modules/simple-concat/test/basic.js') -module_label(' simple-get') -module_menu(' index.js','modules/hardware/network/node_modules/simple-get/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/simple-get/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/simple-get/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/simple-get/README.md') -module_label(' static-extend') -module_label(' node_modules') -module_label(' is-accessor-descriptor') -module_menu(' index.js','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/LICENSE') -module_label(' node_modules') -module_label(' kind-of') -module_menu(' index.js','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/static-extend/node_modules/is-accessor-descriptor/README.md') -module_label(' string-width') -module_menu(' index.js','modules/hardware/network/node_modules/string-width/index.js') -module_menu(' license','modules/hardware/network/node_modules/string-width/license') -module_menu(' package.json','modules/hardware/network/node_modules/string-width/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/string-width/readme.md') -module_label(' string_decoder') -module_menu(' .travis.yml','modules/hardware/network/node_modules/string_decoder/.travis.yml') -module_label(' lib') -module_menu(' string_decoder.js','modules/hardware/network/node_modules/string_decoder/lib/string_decoder.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/string_decoder/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/string_decoder/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/string_decoder/README.md') -module_label(' strip-ansi') -module_menu(' index.js','modules/hardware/network/node_modules/strip-ansi/index.js') -module_menu(' license','modules/hardware/network/node_modules/strip-ansi/license') -module_menu(' package.json','modules/hardware/network/node_modules/strip-ansi/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/strip-ansi/readme.md') -module_label(' strip-color') -module_menu(' index.js','modules/hardware/network/node_modules/strip-color/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/strip-color/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/strip-color/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/strip-color/README.md') -module_label(' strip-json-comments') -module_menu(' index.js','modules/hardware/network/node_modules/strip-json-comments/index.js') -module_menu(' license','modules/hardware/network/node_modules/strip-json-comments/license') -module_menu(' package.json','modules/hardware/network/node_modules/strip-json-comments/package.json') -module_menu(' readme.md','modules/hardware/network/node_modules/strip-json-comments/readme.md') -module_label(' success-symbol') -module_menu(' index.js','modules/hardware/network/node_modules/success-symbol/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/success-symbol/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/success-symbol/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/success-symbol/README.md') -module_label(' tar-fs') -module_menu(' .travis.yml','modules/hardware/network/node_modules/tar-fs/.travis.yml') -module_menu(' index.js','modules/hardware/network/node_modules/tar-fs/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/tar-fs/LICENSE') -module_label(' node_modules') -module_label(' pump') -module_menu(' .travis.yml','modules/hardware/network/node_modules/tar-fs/node_modules/pump/.travis.yml') -module_menu(' index.js','modules/hardware/network/node_modules/tar-fs/node_modules/pump/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/tar-fs/node_modules/pump/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/tar-fs/node_modules/pump/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/tar-fs/node_modules/pump/README.md') -module_menu(' test-browser.js','modules/hardware/network/node_modules/tar-fs/node_modules/pump/test-browser.js') -module_menu(' test.js','modules/hardware/network/node_modules/tar-fs/node_modules/pump/test.js') -module_menu(' package.json','modules/hardware/network/node_modules/tar-fs/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/tar-fs/README.md') -module_label(' test') -module_label(' fixtures') -module_label(' a') -module_menu(' hello.txt','modules/hardware/network/node_modules/tar-fs/test/fixtures/a/hello.txt') -module_label(' b') -module_label(' a') -module_menu(' test.txt','modules/hardware/network/node_modules/tar-fs/test/fixtures/b/a/test.txt') -module_label(' d') -module_menu(' file1','modules/hardware/network/node_modules/tar-fs/test/fixtures/d/file1') -module_menu(' file2','modules/hardware/network/node_modules/tar-fs/test/fixtures/d/file2') -module_label(' sub-dir') -module_menu(' file5','modules/hardware/network/node_modules/tar-fs/test/fixtures/d/sub-dir/file5') -module_label(' sub-files') -module_menu(' file3','modules/hardware/network/node_modules/tar-fs/test/fixtures/d/sub-files/file3') -module_menu(' file4','modules/hardware/network/node_modules/tar-fs/test/fixtures/d/sub-files/file4') -module_label(' e') -module_label(' directory') -module_menu(' .ignore','modules/hardware/network/node_modules/tar-fs/test/fixtures/e/directory/.ignore') -module_menu(' file','modules/hardware/network/node_modules/tar-fs/test/fixtures/e/file') -module_menu(' invalid.tar','modules/hardware/network/node_modules/tar-fs/test/fixtures/invalid.tar') -module_menu(' index.js','modules/hardware/network/node_modules/tar-fs/test/index.js') -module_label(' tar-stream') -module_menu(' extract.js','modules/hardware/network/node_modules/tar-stream/extract.js') -module_menu(' headers.js','modules/hardware/network/node_modules/tar-stream/headers.js') -module_menu(' index.js','modules/hardware/network/node_modules/tar-stream/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/tar-stream/LICENSE') -module_menu(' pack.js','modules/hardware/network/node_modules/tar-stream/pack.js') -module_menu(' package.json','modules/hardware/network/node_modules/tar-stream/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/tar-stream/README.md') -module_label(' terminal-paginator') -module_menu(' index.js','modules/hardware/network/node_modules/terminal-paginator/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/terminal-paginator/LICENSE') -module_label(' node_modules') -module_label(' debug') -module_menu(' .coveralls.yml','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.coveralls.yml') -module_menu(' .eslintrc','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.eslintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.npmignore') -module_menu(' .travis.yml','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/.travis.yml') -module_menu(' CHANGELOG.md','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/CHANGELOG.md') -module_menu(' component.json','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/component.json') -module_menu(' karma.conf.js','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/karma.conf.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/LICENSE') -module_menu(' Makefile','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/Makefile') -module_menu(' node.js','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/README.md') -module_label(' src') -module_menu(' browser.js','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/browser.js') -module_menu(' debug.js','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/debug.js') -module_menu(' index.js','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/index.js') -module_menu(' inspector-log.js','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/inspector-log.js') -module_menu(' node.js','modules/hardware/network/node_modules/terminal-paginator/node_modules/debug/src/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/terminal-paginator/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/terminal-paginator/README.md') -module_label(' time-stamp') -module_menu(' index.js','modules/hardware/network/node_modules/time-stamp/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/time-stamp/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/time-stamp/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/time-stamp/README.md') -module_label(' to-buffer') -module_menu(' .travis.yml','modules/hardware/network/node_modules/to-buffer/.travis.yml') -module_menu(' index.js','modules/hardware/network/node_modules/to-buffer/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/to-buffer/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/to-buffer/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/to-buffer/README.md') -module_menu(' test.js','modules/hardware/network/node_modules/to-buffer/test.js') -module_label(' to-object-path') -module_menu(' index.js','modules/hardware/network/node_modules/to-object-path/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/to-object-path/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/to-object-path/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/to-object-path/README.md') -module_label(' toggle-array') -module_menu(' index.js','modules/hardware/network/node_modules/toggle-array/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/toggle-array/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/toggle-array/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/toggle-array/README.md') -module_label(' tunnel-agent') -module_menu(' index.js','modules/hardware/network/node_modules/tunnel-agent/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/tunnel-agent/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/tunnel-agent/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/tunnel-agent/README.md') -module_label(' util-deprecate') -module_menu(' browser.js','modules/hardware/network/node_modules/util-deprecate/browser.js') -module_menu(' History.md','modules/hardware/network/node_modules/util-deprecate/History.md') -module_menu(' LICENSE','modules/hardware/network/node_modules/util-deprecate/LICENSE') -module_menu(' node.js','modules/hardware/network/node_modules/util-deprecate/node.js') -module_menu(' package.json','modules/hardware/network/node_modules/util-deprecate/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/util-deprecate/README.md') -module_label(' warning-symbol') -module_menu(' index.js','modules/hardware/network/node_modules/warning-symbol/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/warning-symbol/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/warning-symbol/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/warning-symbol/README.md') -module_label(' which-pm-runs') -module_menu(' index.js','modules/hardware/network/node_modules/which-pm-runs/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/which-pm-runs/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/which-pm-runs/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/which-pm-runs/README.md') -module_label(' wide-align') -module_menu(' align.js','modules/hardware/network/node_modules/wide-align/align.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/wide-align/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/wide-align/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/wide-align/README.md') -module_label(' window-size') -module_menu(' cli.js','modules/hardware/network/node_modules/window-size/cli.js') -module_menu(' index.js','modules/hardware/network/node_modules/window-size/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/window-size/LICENSE') -module_label(' node_modules') -module_label(' is-number') -module_menu(' index.js','modules/hardware/network/node_modules/window-size/node_modules/is-number/index.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/window-size/node_modules/is-number/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/window-size/node_modules/is-number/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/window-size/node_modules/is-number/README.md') -module_menu(' package.json','modules/hardware/network/node_modules/window-size/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/window-size/README.md') -module_menu(' utils.js','modules/hardware/network/node_modules/window-size/utils.js') -module_label(' wrappy') -module_menu(' LICENSE','modules/hardware/network/node_modules/wrappy/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/wrappy/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/wrappy/README.md') -module_menu(' wrappy.js','modules/hardware/network/node_modules/wrappy/wrappy.js') -module_label(' ws') -module_menu(' index.js','modules/hardware/network/node_modules/ws/index.js') -module_label(' lib') -module_menu(' .DS_Store','modules/hardware/network/node_modules/ws/lib/.DS_Store') -module_menu(' buffer-util.js','modules/hardware/network/node_modules/ws/lib/buffer-util.js') -module_menu(' constants.js','modules/hardware/network/node_modules/ws/lib/constants.js') -module_menu(' event-target.js','modules/hardware/network/node_modules/ws/lib/event-target.js') -module_menu(' extension.js','modules/hardware/network/node_modules/ws/lib/extension.js') -module_menu(' permessage-deflate.js','modules/hardware/network/node_modules/ws/lib/permessage-deflate.js') -module_menu(' receiver.js','modules/hardware/network/node_modules/ws/lib/receiver.js') -module_menu(' sender.js','modules/hardware/network/node_modules/ws/lib/sender.js') -module_menu(' validation.js','modules/hardware/network/node_modules/ws/lib/validation.js') -module_menu(' websocket-server.js','modules/hardware/network/node_modules/ws/lib/websocket-server.js') -module_menu(' websocket.js','modules/hardware/network/node_modules/ws/lib/websocket.js') -module_menu(' LICENSE','modules/hardware/network/node_modules/ws/LICENSE') -module_menu(' package.json','modules/hardware/network/node_modules/ws/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/ws/README.md') -module_label(' xtend') -module_menu(' .jshintrc','modules/hardware/network/node_modules/xtend/.jshintrc') -module_menu(' .npmignore','modules/hardware/network/node_modules/xtend/.npmignore') -module_menu(' immutable.js','modules/hardware/network/node_modules/xtend/immutable.js') -module_menu(' LICENCE','modules/hardware/network/node_modules/xtend/LICENCE') -module_menu(' Makefile','modules/hardware/network/node_modules/xtend/Makefile') -module_menu(' mutable.js','modules/hardware/network/node_modules/xtend/mutable.js') -module_menu(' package.json','modules/hardware/network/node_modules/xtend/package.json') -module_menu(' README.md','modules/hardware/network/node_modules/xtend/README.md') -module_menu(' test.js','modules/hardware/network/node_modules/xtend/test.js') module_label('image') module_menu(' boundingbox','modules/image/boundingbox') module_menu(' color separation','modules/image/color%20separation') diff --git a/modules/motion/machineController b/modules/motion/machineController index a8fbeccd43ace73cda15e18c7123bb7093a01651..675b09f1136c9640de7e49dd935c7793765b29a0 100644 --- a/modules/motion/machineController +++ b/modules/motion/machineController @@ -54,8 +54,8 @@ dishes gcodes -> planner, spindle codes -> spindle singleInstruction: { type: 'object', label: 'instruction', - event: function(str) { - mods.output(mod, 'singleInstruction', str) + event: function(obj) { + mods.output(mod, 'singleInstruction', obj) } }, lineAdvance: { @@ -120,23 +120,39 @@ dishes gcodes -> planner, spindle codes -> spindle }) } + mod.isPaused = true + function startSequence(windowsize) { + outputs.sequenceControl.event(0) for(var i = 0; i < windowsize; i ++){ outputs.lineAdvance.event() } + mod.isPaused = false outputs.sequenceControl.event(1) } function pauseSequence(){ - // pause ! + outputs.sequenceControl.event(0) + mod.isPaused = true } function onLineComplete() { - outputs.lineAdvance.event() + if(mod.isPaused){ + // + } else { + outputs.lineAdvance.event() + } } function jog(key, val) { + var instruction = {} + instruction.position = {} + instruction.position[key] = val + instruction.speed = mod.jogSpeedIn.value + instruction.type = 'move' + outputs.singleInstruction.event(instruction) + outputs.sequenceControl.event(1) } diff --git a/modules/motion/planner b/modules/motion/planner index 3a71c207b99618e1a353ab84aa121034994ac9bc..2a3e10a839ae188cf830886161f74acebee087e1 100644 --- a/modules/motion/planner +++ b/modules/motion/planner @@ -47,7 +47,7 @@ motors // var init = function() { mod.accelIn.value = '50' - mod.junctionDeviationIn.value = '1' + mod.junctionDeviationIn.value = '0.5' mod.minSpeedIn.value = '1' mod.axisIdentifiers.value = 'X,Y,Z' @@ -58,6 +58,11 @@ motors mod.netWindowIn.value = '5' packetWindowSize = parseInt(mod.netWindowIn.value) + + var num = 0 + mod.queueLengthDisplay.innerHTML = num.toString() + + mod.netQueueDisplay.innerHTML = num.toString() } // // inputs @@ -130,14 +135,22 @@ motors mod.minSpeedIn = make_text_input(div, 'minimum junction speed, units/s/s', 12) div.appendChild(document.createElement('br')) - make_text_display(div, 'network settings') + make_text_display(div, 'queuing settings') + mod.queueLengthDisplay = make_text_display(div, 'instructions in queue') + mod.resetQueueButton = make_button_input(div, 'reset queue') + mod.resetQueueButton.addEventListener('click', function(){ + resetQueue() + }) + div.appendChild(document.createElement('br')) + mod.netWindowIn = make_text_input(div, 'network window size', 12) mod.netWindowIn.addEventListener('change', function() { packetWindowSize = parseInt(mod.netWindowIn.value) }) + mod.netQueueDisplay = make_text_display(div, 'instructions on network') mod.resetNetButton = make_button_input(div, 'reset network') mod.resetNetButton.addEventListener('click', function() { - packetsInNetwork = 0 + resetNetwork() }) } @@ -153,12 +166,18 @@ motors axiscounter++ if (axiscounter >= 2) { //} axisIds.length){ packetsInNetwork-- + mod.netQueueDisplay.innerHTML = packetsInNetwork.toString() checkNetwork() outputs.moveComplete.event() axiscounter = 0 } } + function resetNetwork() { + packetsInNetwork = 0 + mod.netQueueDisplay.innerHTML = packetsInNetwork.toString() + } + function checkNetwork() { // see windowed state and push more data out if need be while (packetWindowSize > packetsInNetwork && moveQue.length != 0) { @@ -168,7 +187,9 @@ motors function sendMove() { outputs.plannedMove.event(moveQue.shift()) + mod.queueLengthDisplay.innerHTML = moveQue.length.toString() packetsInNetwork++ + mod.netQueueDisplay.innerHTML = packetsInNetwork.toString() } @@ -187,6 +208,11 @@ motors } */ + function resetQueue(){ + moveQue.length = 0 // apparently this works + mod.queueLengthDisplay.innerHTML = moveQue.length.toString() + } + function addToQueue(obj) { // add to the move queue var p1 = [] @@ -229,6 +255,7 @@ motors // append the move to the queue moveQue.push(newMove) + mod.queueLengthDisplay.innerHTML = moveQue.length.toString() // and then check to see if we are ready to pass anything to the motors runQue() diff --git a/planner-pre b/planner-pre index 9f34ae399b5bc52d33c2b296ceca70c904661413..39bdf9eef9c9fa9fc015073d3258ec334ca6aa46 100644 --- a/planner-pre +++ b/planner-pre @@ -1 +1 @@ -{"modules":{"0.9219808769257131":{"definition":"//\r\n// converts toolpath objects into segments for accel planning\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n//\r\n// This work may be reproduced, modified, distributed, performed, and\r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is\r\n// provided as is; no warranty is provided, and users accept all\r\n// liability.\r\n\r\n\r\n/*\r\neats objects like\r\nvar move = {\r\n position: {\r\n X: float\r\n Y: float\r\n Z: float\r\n A: float\r\n }\r\n rate: float\r\n}\r\n\r\noutputs:\r\nmotors\r\n'planner block consumed' event\r\n\r\n\r\n*/\r\n\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'motion planner'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.accelIn.value = '25'\r\n mod.junctionDeviationIn.value = '0.5'\r\n mod.minSpeedIn.value = '1'\r\n\r\n mod.axisIdentifiers.value = 'X,Y,Z'\r\n axisIds = mod.axisIdentifiers.value.split(',')\r\n for (var i = 0; i < axisIds.length; i++) {\r\n currentPosition[i] = 0\r\n }\r\n\r\n mod.netWindowIn.value = '5'\r\n packetWindowSize = parseInt(mod.netWindowIn.value)\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n newMove: {\r\n type: 'object',\r\n label: 'move instruction',\r\n event: function(evt) {\r\n addToQueue(JSON.parse(JSON.stringify(evt.detail)))\r\n }\r\n },\r\n acknowledgement: {\r\n type: 'event',\r\n label: 'acknowledgement',\r\n event: function(evt) {\r\n // have to ID moves because some are zero length ?\r\n acknowledgement(evt.detail)\r\n }\r\n },\r\n sequenceControl: {\r\n type: 'integer',\r\n label: 'sequence control',\r\n event: function(evt){\r\n if(evt.detail == 1){\r\n checkNetwork()\r\n }\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n plannedMove: {\r\n type: 'object',\r\n label: 'move instruction',\r\n event: function(block) {\r\n var deref = JSON.parse(JSON.stringify(block))\r\n mods.output(mod, 'plannedMove', deref)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n // settings\r\n make_text_display(div, 'machine config')\r\n mod.axisIdentifiers = make_text_input(div, 'axis identifiers', 12)\r\n mod.axisIdentifiers.addEventListener('change', function() {\r\n axisIds = mod.axisIdentifiers.value.split(',')\r\n })\r\n div.appendChild(document.createElement('br'))\r\n\r\n make_text_display(div, 'planner settings')\r\n mod.accelIn = make_text_input(div, 'acceleration, units/s/s', 12)\r\n mod.junctionDeviationIn = make_text_input(div, 'junction deviation, units', 12)\r\n mod.minSpeedIn = make_text_input(div, 'minimum junction speed, units/s/s', 12)\r\n div.appendChild(document.createElement('br'))\r\n\r\n make_text_display(div, 'network settings')\r\n mod.netWindowIn = make_text_input(div, 'network window size', 12)\r\n mod.netWindowIn.addEventListener('change', function(){\r\n packetWindowSize = parseInt(mod.netWindowIn.value)\r\n })\r\n mod.resetNetButton = make_button_input(div, 'reset network')\r\n mod.resetNetButton.addEventListener('click', function(){\r\n packetsInNetwork = 0\r\n })\r\n }\r\n\r\n // planner state and moves\r\n var axisIds = []\r\n var moveQue = [] // array of moves \r\n var currentPosition = []\r\n\r\n /*\r\n var segment = {\r\n p1: p1,\r\n p2: p2,\r\n cruise: cruise,\r\n entry: entry,\r\n exit: exit,\r\n }\r\n */\r\n\r\n function addToQueue(obj) {\r\n // add to the move queue \r\n var p1 = []\r\n var p2 = []\r\n if (moveQue.length == 0) {\r\n p1 = currentPosition\r\n } else {\r\n p1 = moveQue[moveQue.length - 1].p2\r\n }\r\n\r\n // find all letter-based and match to std array \r\n var keyset = new Array(axisIds.length)\r\n keyset.fill(0)\r\n\r\n for (key in obj.position) {\r\n for (axisId in axisIds) {\r\n if (key == axisIds[axisId]) {\r\n p2[axisId] = obj.position[key]\r\n keyset[axisId] = 1\r\n } else if (keyset[axisId] != 1) {\r\n p2[axisId] = p1[axisId]\r\n } else {\r\n // nothing\r\n }\r\n }\r\n }\r\n\r\n var cruise = obj.speed\r\n\r\n var newMove = {\r\n p1: p1,\r\n p2: p2,\r\n cruise: cruise,\r\n entry: 0,\r\n exit: 0\r\n }\r\n\r\n moveQue.push(newMove)\r\n\r\n // and then check to see if we are ready to pass anything to the motors\r\n runQue()\r\n }\r\n\r\n\r\n // network state\r\n var packetsInNetwork = 0\r\n var packetWindowSize = 0\r\n\r\n function acknowledge(obj) {\r\n // check returning IDs? keep a counter of awaited moves?\r\n\r\n // and then see if we need to send out more data\r\n checkNetwork()\r\n }\r\n\r\n function checkNetwork() {\r\n // see windowed state and push more data out if need be\r\n while(packetWindowSize > packetsInNetwork && moveQue.length != 0){\r\n sendMove()\r\n }\r\n }\r\n\r\n function sendMove(){\r\n outputs.plannedMove.event(moveQue.shift())\r\n packetsInNetwork ++\r\n }\r\n\r\n function cartesianDistance(p1, p2) {\r\n // takes p1, p2 to be arrays of same length\r\n // computes cartesian distance\r\n var sum = 0\r\n for (var i = 0; i < p1.length; i++) {\r\n sum += Math.pow((p1[i] - p2[i]), 2)\r\n }\r\n return Math.sqrt(sum)\r\n }\r\n\r\n function cartesianLength(v) {\r\n // length of vector\r\n var sum = 0\r\n for (var i = 0; i < v.length; i++) {\r\n sum += Math.pow(v[i], 2)\r\n }\r\n return Math.sqrt(sum)\r\n }\r\n\r\n function addMatrix(a, b, c) {\r\n // c = a + b\r\n a.forEach(function(item, index) {\r\n c[index] = b[index] + a[index]\r\n })\r\n }\r\n\r\n function subtractMatrix(a, b, c) {\r\n // c = a - b\r\n b.forEach(function(item, index) {\r\n c[index] = a[index] - b[index]\r\n })\r\n }\r\n\r\n function multiplyMatrix(a, scalar, b) {\r\n // b = a * scalar\r\n a.forEach(function(item, index) {\r\n b[index] = a[index] * scalar\r\n })\r\n }\r\n\r\n function multiply2dMatrix(a, scalar, b) {\r\n // b = a * scalar\r\n for (var i = 0; i < a.length; i++) {\r\n for (var j = 0; j < a[i].length; j++) {\r\n b[i][j] = a[i][j] * scalar;\r\n }\r\n }\r\n }\r\n\r\n function divideMatrix(a, scalar, b) {\r\n // b = a / scalar\r\n for (var i = 0; i < a.length; i++) {\r\n b[i] = a[i] / scalar\r\n }\r\n }\r\n\r\n function unitVector(p1, p2) {\r\n // returns new array, is unit vector of p2-p1\r\n var unit = new Array()\r\n subtractMatrix(p2, p1, unit)\r\n var length = cartesianLength(unit)\r\n divideMatrix(unit, length, unit)\r\n\r\n return unit\r\n }\r\n\r\n function dotProduct(a, b) {\r\n // returns a dot b\r\n var sum = 0;\r\n for (var i = 0; i < a.length; i++) {\r\n sum += a[i] * b[i]\r\n }\r\n\r\n return sum\r\n }\r\n\r\n function toFixedMatrix(a, digits) {\r\n var rounded = new Array()\r\n for (var i = 0; i < a.length; i++) {\r\n rounded[i] = a[i].toFixed(digits)\r\n }\r\n\r\n return rounded\r\n }\r\n\r\n //\r\n // local functions\r\n //\r\n function runQue() {\r\n // converting from mm/s or dpi (pixel units) to mm based units\r\n // https://github.com/grbl/grbl/blob/master/grbl/planner.c\r\n // https://onehossshay.wordpress.com/2011/09/24/improving_grbl_cornering_algorithm/\r\n /*\r\n first we walk the queue:\r\n going backwards, end at 0 speed exit\r\n - find junction speed (junction deviation) between this and previous block\r\n - this is entry speed, calculate trapezoid to exit speed\r\n next block\r\n - exit speed is recently calculated entry speed\r\n - do junction deviation, this is entry speed\r\n - calculate trapezoid\r\n .. why is this simpler? find entry and exit speed of each block,\r\n find accel limits per axis, do trapezoid with that accel\r\n\r\n */\r\n\r\n var jdsize = parseFloat(mod.junctionDeviationIn.value)\r\n var accel = parseFloat(mod.accelIn.value)\r\n // not actually using this at the moment!\r\n var jdmin = parseFloat(mod.minSpeedIn.value)\r\n\r\n moveQue[moveQue.length - 1].exit = 0 // trailing edge always full stop\r\n\r\n for (var i = moveQue.length - 1; i > 0; i--) {\r\n // reverse pass\r\n // find junction deviation\r\n /*\r\n - really, could only do this once per segment when a new one is added\r\n - unitize entry and exit vectors\r\n - find cos(theta) = Ventry dot Vexit / (|Ventry| * |Vexit|) -> this is (1*1 bc unit)\r\n - find sin(theta/2) = sqrt((1-cos(theta))/2)\r\n - find r = j(sin(theta/2)/(1-sin(theta/2)))\r\n - find Fj = sqrt(Ac*r)\r\n - junction speed is min(Fj, min(entry,exit))\r\n */\r\n\r\n var v_entry = unitVector(moveQue[i - 1].p1, moveQue[i - 1].p2)\r\n var v_exit = unitVector(moveQue[i].p1, moveQue[i].p2)\r\n //console.log('unit entry, unit exit', toFixedMatrix(v_entry, 3), toFixedMatrix(v_exit, 3))\r\n var cos_theta = dotProduct(v_entry, v_exit) // dot product / mag * mag where mags are 1 each bc unit\r\n // catch corner cases (get it? - actually they are very straight cases, or very turnaround cases)\r\n if (cos_theta < -0.9999999999999) {\r\n cos_theta = -0.9999999999999\r\n } else if (cos_theta > 0.9999999999999) {\r\n cos_theta = 0.9999999999999\r\n }\r\n //console.log('cos_theta', cos_theta, Math.acos(cos_theta) * (180 / Math.PI))\r\n var sin_theta_overtwo = Math.sqrt((1 - cos_theta) / 2)\r\n //console.log('sin_theta_overtwo', sin_theta_overtwo)\r\n var radius = jdsize * ((1 - sin_theta_overtwo) / sin_theta_overtwo)\r\n //console.log('radius', radius)\r\n // feed at the junction, according to supposed acceleration through the junction\r\n var fj = Math.sqrt(accel * radius)\r\n //console.log('fj', fj)\r\n\r\n // but don't go through the junction faster than we're cruising\r\n var feed_junction = Math.min(fj, moveQue[i].cruise, moveQue[i - 1].cruise)\r\n //console.log('feed_junction', feed_junction)\r\n\r\n // ok we have the maximum feed at the preceeding junction\r\n // now: find the maximum entry speeds as if we spent the whole block decelerating\r\n\r\n // size of segment\r\n var distance = cartesianDistance(moveQue[i].p1, moveQue[i].p2)\r\n //console.log('distance', distance)\r\n var max_entry_speed = Math.sqrt(moveQue[i].exit * moveQue[i].exit + 2 * distance * accel)\r\n //console.log('max_entry_speed', max_entry_speed)\r\n var entry_speed = Math.min(max_entry_speed, feed_junction)\r\n //console.log('entry_speed', entry_speed)\r\n moveQue[i].entry = entry_speed\r\n moveQue[i - 1].exit = entry_speed\r\n //console.log('segment:', moveQue[i])\r\n moveQue[i].accel = accel\r\n moveQue[i].distance = distance\r\n }\r\n\r\n // bad bad not very good implementation to start:\r\n moveQue[0].entry = 0\r\n moveQue[0].accel = accel\r\n moveQue[0].distance = cartesianDistance(moveQue[0].p1, moveQue[0].p2)\r\n\r\n // forward pass to make sure we can accelerate to set exit speed in length\r\n for (var i = 0; i < moveQue.length - 1; i++) {\r\n var distance = moveQue[i].distance\r\n var max_exit_speed = Math.sqrt(moveQue[i].entry * moveQue[i].entry + 2 * distance * accel)\r\n\r\n if (max_exit_speed < moveQue[i + 1].entry_speed) {\r\n moveQue[i + 1].entry = max_exit_speed\r\n moveQue[i].exit = max_exit_speed\r\n }\r\n }\r\n\r\n console.log('segments in planner:', moveQue)\r\n\r\n }\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"355.9508040845012","left":"2085.245979577494","inputs":{},"outputs":{}},"0.4995077091472159":{"definition":"//\r\n// gets lines of gcode, turns into instructions for mods-machines\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n\r\n/*\r\nturns lines of text into objects for machine controller \r\n*/\r\n\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'gcode parser'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.g0SpeedIn.value = '100'\r\n mod.g1SpeedIn.value = '400'\r\n mod.codeMode.value = 'G0'\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n gcode: {\r\n type: 'string',\r\n label: 'gcode',\r\n event: function(evt) {\r\n parseGCode(evt.detail)\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n instruction: {\r\n type: 'object',\r\n label: 'instruction',\r\n event: function(obj) {\r\n mods.output(mod, 'instruction', obj)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n // we're going to convert all of these DPIs to MMs because we live in the real world now\r\n mod.g0SpeedIn = make_text_input(div, 'G0 speed, gcode units', 12)\r\n mod.g1SpeedIn = make_text_input(div, 'G1 speed, gcode units', 12)\r\n mod.codeMode = make_text_input(div, 'Modality', 12)\r\n }\r\n\r\n function parseGCode(str) {\r\n // get letter-value pairs\r\n var keyvals = getKeyValues(str)\r\n // do modality\r\n // check this for no-g moves?\r\n if (keyvals.G == 0 | keyvals.G == 1) {\r\n mod.codeMode.value = 'G' + keyvals.G.toString()\r\n } else if (keyvals.M != null) {\r\n mod.codeMode.value = 'M' + keyvals.M.toString()\r\n }\r\n // do parse and object \r\n if (mod.codeMode.value == 'G0' | mod.codeMode.value == 'G1') {\r\n\r\n var output = {\r\n type: 'move',\r\n position: {},\r\n speed: 0\r\n }\r\n // loop to find position vals, check for feed update\r\n for (key in keyvals) {\r\n if (key.match('[A-CX-Z]')) {\r\n output.position[key] = keyvals[key]\r\n } else if (key.match('[F]')){\r\n if(mod.codeMode.value == 'G0'){\r\n // assert minimum speed \r\n mod.g0SpeedIn.value = Math.max(10, keyvals.F)\r\n } else {\r\n mod.g1SpeedIn.value = Math.max(10, keyvals.F)\r\n }\r\n }\r\n }\r\n\r\n if(mod.codeMode.value == 'G0'){\r\n output.speed = parseFloat(mod.g0SpeedIn.value)\r\n } else {\r\n output.speed = parseFloat(mod.g1SpeedIn.value)\r\n }\r\n\r\n outputs.instruction.event(output)\r\n } else if (mod.codeMode.value == 'M3'){\r\n var output = {\r\n type: 'spindle',\r\n speed: 0\r\n }\r\n if(keyvals.S != null){\r\n output.speed = keyvals.S\r\n outputs.instruction.event(output)\r\n } else {\r\n console.log('need S parameter on spindle instruction')\r\n }\r\n } else if (mod.codeMode.value == 'M5'){\r\n var output = {\r\n type: 'spindle',\r\n speed: 0\r\n }\r\n output.instruction.event(output)\r\n } else {\r\n console.log('gcode instruction not recognized')\r\n }\r\n }\r\n\r\n function getKeyValues(str) {\r\n var kv = {}\r\n for (var i = 0; i < str.length; i++) {\r\n if (str[i].match('[A-Za-z]')) { // regex to match upper case letters\r\n var lastIndex = str.indexOf(' ', i)\r\n if (lastIndex < 0) {\r\n lastIndex = str.length\r\n }\r\n var key = str[i].toUpperCase()\r\n kv[key] = parseFloat(str.slice(i + 1, lastIndex))\r\n }\r\n }\r\n return kv\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"357.5346231758237","left":"1264.8556782008352","inputs":{},"outputs":{}},"0.4761625810991079":{"definition":"//\r\n// generic line input\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'text lines input'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.textAreaIn.value =\r\n \"G1 Z0. F120.\\n\\\r\nX3.744\\n\\\r\nX3.94 Y0.519\\n\\\r\nX4.127 Y0.576\\n\\\r\nX4.3 Y0.669\\n\\\r\nX4.452 Y0.793\\n\\\r\nX4.576 Y0.944\\n\\\r\nX4.668 Y1.117\\n\\\r\nX4.725 Y1.305\\n\\\r\nX4.744 Y1.5\\n\\\r\nY1.588\\n\\\r\nX4.725 Y1.783\\n\\\r\nX4.668 Y1.971\\n\\\r\nX4.576 Y2.144\\n\\\r\nX4.452 Y2.295\\n\\\r\nX4.3 Y2.42\\n\\\r\nX4.127 Y2.512\\n\\\r\nX3.94 Y2.569\\n\\\r\nX3.744 Y2.588\\n\\\r\nX-8.335\\n\\\r\nX-8.963 Y2.605\\n\\\r\nX-9.589 Y2.654\\n\\\r\nX-10.212 Y2.736\\n\\\r\nX-10.83 Y2.85\\n\\\r\nX-11.441 Y2.997\\n\\\r\nX-13.744 Y3.614\\n\\\r\nX-13.915 Y3.677\\n\\\r\nX-14.072 Y3.77\\n\\\r\nX-14.209 Y3.89\\n\\\r\nX-14.322 Y4.033\\n\\\r\nX-14.408 Y4.194\\n\\\r\nX-14.462 Y4.368\\n\\\r\nX-14.485 Y4.548\\n\\\r\nX-14.474 Y4.73\\n\\\r\nX-14.43 Y4.907\\n\\\r\nX-14.16 Y5.627\\n\\\r\nX-13.854 Y6.332\\n\\\r\nX-13.512 Y7.02\\n\\\r\nX-13.134 Y7.69\\n\\\r\nX-12.724 Y8.339\\n\\\r\nX-12.28 Y8.967\\n\\\r\nX-11.805 Y9.571\\n\\\r\nX-11.3 Y10.15\\n\\\r\nX-10.765 Y10.703\\n\\\r\nX-10.203 Y11.227\\n\\\r\nX-9.615 Y11.722\\n\\\r\nX-9.003 Y12.186\\n\\\r\nX-8.367 Y12.618\\n\\\r\nX-7.71 Y13.017\\n\\\r\nX-7.033 Y13.381\\n\\\r\nX-6.339 Y13.711\\n\\\r\nX-5.629 Y14.005\\n\\\r\nX-4.904 Y14.261\\n\\\r\nX-4.168 Y14.481\\n\\\r\nX-3.421 Y14.662\\n\\\r\nX-2.666 Y14.805\\n\\\r\nX-1.904 Y14.909\\n\\\r\nX-1.138 Y14.974\\n\\\r\nX-0.37 Y15.\\n\\\r\nX0.398 Y14.986\\n\\\r\nX1.165 Y14.933\\n\\\r\nX1.928 Y14.84\\n\\\r\nX2.685 Y14.709\\n\\\r\nX3.435 Y14.539\\n\\\r\nX4.175 Y14.331\\n\\\r\nX4.903 Y14.085\\n\\\r\nX5.618 Y13.802\\n\\\r\nX6.317 Y13.483\\n\\\r\nX6.999 Y13.129\\n\\\r\nX7.662 Y12.74\\n\\\r\nX8.304 Y12.318\\n\\\r\nX8.924 Y11.863\\n\\\r\nX9.519 Y11.378\\n\\\r\nX10.089 Y10.862\\n\\\r\nX10.632 Y10.318\\n\\\r\nX11.146 Y9.747\\n\\\r\nX11.631 Y9.15\\n\\\r\nX12.084 Y8.529\\n\\\r\nX12.504 Y7.886\\n\\\r\nX12.892 Y7.222\\n\\\r\nX13.244 Y6.539\\n\\\r\nX13.561 Y5.839\\n\\\r\nX13.842 Y5.124\\n\\\r\nX14.086 Y4.395\\n\\\r\nX14.292 Y3.654\\n\\\r\nX14.461 Y2.904\\n\\\r\nX14.59 Y2.147\\n\\\r\nX14.681 Y1.384\\n\\\r\nX14.732 Y0.617\\n\\\r\nX14.744 Y-0.152\\n\\\r\nX14.716 Y-0.92\\n\\\r\nX14.649 Y-1.686\\n\\\r\nX14.543 Y-2.447\\n\\\r\nX14.399 Y-3.202\\n\\\r\nX14.215 Y-3.948\\n\\\r\nX13.994 Y-4.684\\n\\\r\nX13.736 Y-5.408\\n\\\r\nX13.44 Y-6.117\\n\\\r\nX13.109 Y-6.811\\n\\\r\nX12.743 Y-7.487\\n\\\r\nX12.342 Y-8.143\\n\\\r\nX11.908 Y-8.777\\n\\\r\nX11.443 Y-9.389\\n\\\r\nX10.947 Y-9.976\\n\\\r\nX10.421 Y-10.536\\n\\\r\nX9.867 Y-11.069\\n\\\r\nX9.287 Y-11.573\\n\\\r\nX8.682 Y-12.047\\n\\\r\nX8.053 Y-12.489\\n\\\r\nX7.402 Y-12.898\\n\\\r\nX6.732 Y-13.273\\n\\\r\nX6.043 Y-13.614\\n\\\r\nX5.337 Y-13.918\\n\\\r\nX4.617 Y-14.187\\n\\\r\nX3.884 Y-14.418\\n\\\r\nX3.14 Y-14.611\\n\\\r\nX2.387 Y-14.765\\n\\\r\nX1.627 Y-14.881\\n\\\r\nX0.862 Y-14.958\\n\\\r\nX0.095 Y-14.996\\n\\\r\nX-0.674 Y-14.994\\n\\\r\nX-1.441 Y-14.953\\n\\\r\nX-2.206 Y-14.873\\n\\\r\nX-2.965 Y-14.753\\n\\\r\nX-3.717 Y-14.595\\n\\\r\nX-4.46 Y-14.399\\n\\\r\nX-5.192 Y-14.164\\n\\\r\nX-5.911 Y-13.893\\n\\\r\nX-6.615 Y-13.585\\n\\\r\nX-7.303 Y-13.241\\n\\\r\nX-7.972 Y-12.863\\n\\\r\nX-8.621 Y-12.451\\n\\\r\nX-9.247 Y-12.006\\n\\\r\nX-9.851 Y-11.53\\n\\\r\nX-10.429 Y-11.023\\n\\\r\nX-10.98 Y-10.488\\n\\\r\nX-11.503 Y-9.925\\n\\\r\nX-11.997 Y-9.335\\n\\\r\nX-12.459 Y-8.722\\n\\\r\nX-12.89 Y-8.085\\n\\\r\nX-13.288 Y-7.427\\n\\\r\nX-13.651 Y-6.75\\n\\\r\nX-13.979 Y-6.055\\n\\\r\nX-14.271 Y-5.344\\n\\\r\nX-14.527 Y-4.619\\n\\\r\nX-14.744 Y-3.882\\n\\\r\nX-9.915 Y-2.588\\n\\\r\nX4.744\\n\\\r\nY-0.5\\n\\\r\nX-2.256\\n\\\r\nY0.5\\n\\\r\nZ7.\\n\\\r\nG0 Z18.\"\r\n\r\n linesToArray()\r\n\r\n mod.lineCountDisplay.innerHTML = '0'\r\n\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n lineRequest: {\r\n type: 'number',\r\n label: 'line request',\r\n event: function(evt) {\r\n sendLine(evt.detail)\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n line: {\r\n type: 'string',\r\n label: 'line',\r\n event: function(str) {\r\n mods.output(mod, 'line', str)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n mod.lineCountDisplay = make_text_display(div, 'current line')\r\n mod.resetCurrentLine = make_button_input(div, 'reset lines')\r\n mod.resetCurrentLine.addEventListener('click', function(){\r\n mod.lineCountDisplay.innerHTML = '0'\r\n currentLine = 0\r\n })\r\n mod.textAreaIn = makeTextArea(div, 'lines', 24, 48)\r\n }\r\n\r\n var currentLine = 0\r\n var linesArray = []\r\n\r\n function linesToArray() {\r\n linesArray = mod.textAreaIn.value.split('\\n')\r\n }\r\n\r\n function sendLine() {\r\n var lineOut = linesArray[currentLine]\r\n currentLine++\r\n if (currentLine > linesArray.length) {\r\n currentLine = linesArray.length\r\n } else {\r\n outputs.line.event(lineOut)\r\n }\r\n\r\n mod.lineCountDisplay.innerHTML = currentLine.toString()\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function makeTextArea(div, name, width, height) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n div.appendChild(document.createElement('br'))\r\n var textArea = document.createElement('textarea')\r\n textArea.setAttribute('cols', width)\r\n textArea.setAttribute('rows', height)\r\n textArea.type = 'textarea'\r\n div.appendChild(textArea)\r\n\r\n return textArea\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"470.53462317582375","left":"680.508743643805","inputs":{},"outputs":{}},"0.7866365696859523":{"definition":"//\r\n// generic line input\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'line input'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.line_in.value = 'G0 X10.1 Y150 z10.2 F175'\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n line: {\r\n type: 'string',\r\n label: 'line through',\r\n event: function(evt) {\r\n mod.line_in.value = evt.detail\r\n sendLine()\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n line: {\r\n type: 'string',\r\n label: 'line',\r\n event: function(str) {\r\n mods.output(mod, 'line', str)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n mod.title_text = make_text_display(div, 'hit enter to send')\r\n mod.line_in = make_text_input(div, 'line', 24)\r\n mod.line_in.addEventListener('keydown', function(evt){\r\n if(evt.keyCode == 13){\r\n sendLine()\r\n //mod.line_in.value = ''\r\n }\r\n })\r\n }\r\n\r\n function sendLine(){\r\n var str = mod.line_in.value\r\n outputs.line.event(str)\r\n }\r\n\r\n\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"210.72640036793587","left":"676.3097502997231","inputs":{},"outputs":{}},"0.4859336275925409":{"definition":"//\r\n// gets lines of gcode, turns into instructions for mods-machines\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n\r\n/*\r\nstart / stop machine on given path, \r\nmanually turn spindle on / off etc\r\ndishes gcodes -> planner, spindle codes -> spindle \r\n*/\r\n\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'machine controller'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.jogStepSizeIn.value = '10'\r\n mod.jogSpeedIn.value = '100'\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n lineComplete: {\r\n type: 'event',\r\n label: 'line complete',\r\n event: function(evt) {\r\n onLineComplete()\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n singleInstruction: {\r\n type: 'object',\r\n label: 'instruction',\r\n event: function(str) {\r\n mods.output(mod, 'singleInstruction', str)\r\n }\r\n },\r\n lineAdvance: {\r\n type: 'event',\r\n label: 'line advance',\r\n event: function() {\r\n mods.output(mod, 'lineAdvance', true)\r\n }\r\n },\r\n sequenceControl: {\r\n type: 'integer',\r\n label: 'sequence control',\r\n event: function(int){\r\n mods.output(mod, 'sequenceControl', int)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n\r\n // control buttons\r\n\r\n mod.jogStepSizeIn = make_text_input(div, 'jog increment size', 24)\r\n mod.jogSpeedIn = make_text_input(div, 'jog speed', 24)\r\n\r\n mod.jogXPButton = make_button_input(div, 'x+')\r\n mod.jogXPButton.addEventListener('click', function(evt) {\r\n jog('X', parseFloat(mod.jogStepSizeIn.value))\r\n })\r\n\r\n mod.jogXMButton = make_button_input(div, 'x-')\r\n mod.jogXMButton.addEventListener('click', function(evt) {\r\n jog('X', -parseFloat(mod.jogStepSizeIn.value))\r\n })\r\n\r\n mod.jogYPButton = make_button_input(div, 'y+')\r\n mod.jogYPButton.addEventListener('click', function(evt) {\r\n jog('Y', parseFloat(mod.jogStepSizeIn.value))\r\n })\r\n\r\n mod.jogYMButton = make_button_input(div, 'y-')\r\n mod.jogYMButton.addEventListener('click', function(evt) {\r\n jog('Y', -parseFloat(mod.jogStepSizeIn.value))\r\n })\r\n\r\n // sequence begin, stop \r\n\r\n mod.startSequenceButton = make_button_input(div, 'start sequence')\r\n mod.startSequenceButton.addEventListener('click', function(evt) {\r\n startSequence(12)\r\n })\r\n\r\n mod.pauseSequenceButton = make_button_input(div, 'pause sequence')\r\n mod.pauseSequenceButton.addEventListener('click', function(evt){\r\n pauseSequence()\r\n })\r\n }\r\n\r\n function startSequence(windowsize) {\r\n for(var i = 0; i < windowsize; i ++){\r\n outputs.lineAdvance.event()\r\n }\r\n outputs.sequenceControl.event(1)\r\n }\r\n\r\n function pauseSequence(){\r\n // pause !\r\n }\r\n\r\n function onLineComplete() {\r\n // track window size\r\n }\r\n\r\n function jog(key, val) {\r\n\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"303.74388765554596","left":"84.61481656951486","inputs":{},"outputs":{}}},"links":["{\"source\":\"{\\\"id\\\":\\\"0.4761625810991079\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"line\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.4995077091472159\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"gcode\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.7866365696859523\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"line\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.4995077091472159\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"gcode\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.4995077091472159\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"instruction\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.9219808769257131\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"newMove\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.4859336275925409\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"singleInstruction\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.9219808769257131\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"newMove\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.4859336275925409\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"sequenceControl\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.9219808769257131\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"sequenceControl\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.4859336275925409\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"lineAdvance\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.4761625810991079\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"lineRequest\\\"}\"}"]} \ No newline at end of file +{"modules":{"0.9618637896479963":{"definition":"//\r\n// generic line input\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'text lines input'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.textAreaIn.value =\r\n \"G1 Z0. F120.\\n\\\r\nX3.744\\n\\\r\nX3.94 Y0.519\\n\\\r\nX4.127 Y0.576\\n\\\r\nX4.3 Y0.669\\n\\\r\nX4.452 Y0.793\\n\\\r\nX4.576 Y0.944\\n\\\r\nX4.668 Y1.117\\n\\\r\nX4.725 Y1.305\\n\\\r\nX4.744 Y1.5\\n\\\r\nY1.588\\n\\\r\nX4.725 Y1.783\\n\\\r\nX4.668 Y1.971\\n\\\r\nX4.576 Y2.144\\n\\\r\nX4.452 Y2.295\\n\\\r\nX4.3 Y2.42\\n\\\r\nX4.127 Y2.512\\n\\\r\nX3.94 Y2.569\\n\\\r\nX3.744 Y2.588\\n\\\r\nX-8.335\\n\\\r\nX-8.963 Y2.605\\n\\\r\nX-9.589 Y2.654\\n\\\r\nX-10.212 Y2.736\\n\\\r\nX-10.83 Y2.85\\n\\\r\nX-11.441 Y2.997\\n\\\r\nX-13.744 Y3.614\\n\\\r\nX-13.915 Y3.677\\n\\\r\nX-14.072 Y3.77\\n\\\r\nX-14.209 Y3.89\\n\\\r\nX-14.322 Y4.033\\n\\\r\nX-14.408 Y4.194\\n\\\r\nX-14.462 Y4.368\\n\\\r\nX-14.485 Y4.548\\n\\\r\nX-14.474 Y4.73\\n\\\r\nX-14.43 Y4.907\\n\\\r\nX-14.16 Y5.627\\n\\\r\nX-13.854 Y6.332\\n\\\r\nX-13.512 Y7.02\\n\\\r\nX-13.134 Y7.69\\n\\\r\nX-12.724 Y8.339\\n\\\r\nX-12.28 Y8.967\\n\\\r\nX-11.805 Y9.571\\n\\\r\nX-11.3 Y10.15\\n\\\r\nX-10.765 Y10.703\\n\\\r\nX-10.203 Y11.227\\n\\\r\nX-9.615 Y11.722\\n\\\r\nX-9.003 Y12.186\\n\\\r\nX-8.367 Y12.618\\n\\\r\nX-7.71 Y13.017\\n\\\r\nX-7.033 Y13.381\\n\\\r\nX-6.339 Y13.711\\n\\\r\nX-5.629 Y14.005\\n\\\r\nX-4.904 Y14.261\\n\\\r\nX-4.168 Y14.481\\n\\\r\nX-3.421 Y14.662\\n\\\r\nX-2.666 Y14.805\\n\\\r\nX-1.904 Y14.909\\n\\\r\nX-1.138 Y14.974\\n\\\r\nX-0.37 Y15.\\n\\\r\nX0.398 Y14.986\\n\\\r\nX1.165 Y14.933\\n\\\r\nX1.928 Y14.84\\n\\\r\nX2.685 Y14.709\\n\\\r\nX3.435 Y14.539\\n\\\r\nX4.175 Y14.331\\n\\\r\nX4.903 Y14.085\\n\\\r\nX5.618 Y13.802\\n\\\r\nX6.317 Y13.483\\n\\\r\nX6.999 Y13.129\\n\\\r\nX7.662 Y12.74\\n\\\r\nX8.304 Y12.318\\n\\\r\nX8.924 Y11.863\\n\\\r\nX9.519 Y11.378\\n\\\r\nX10.089 Y10.862\\n\\\r\nX10.632 Y10.318\\n\\\r\nX11.146 Y9.747\\n\\\r\nX11.631 Y9.15\\n\\\r\nX12.084 Y8.529\\n\\\r\nX12.504 Y7.886\\n\\\r\nX12.892 Y7.222\\n\\\r\nX13.244 Y6.539\\n\\\r\nX13.561 Y5.839\\n\\\r\nX13.842 Y5.124\\n\\\r\nX14.086 Y4.395\\n\\\r\nX14.292 Y3.654\\n\\\r\nX14.461 Y2.904\\n\\\r\nX14.59 Y2.147\\n\\\r\nX14.681 Y1.384\\n\\\r\nX14.732 Y0.617\\n\\\r\nX14.744 Y-0.152\\n\\\r\nX14.716 Y-0.92\\n\\\r\nX14.649 Y-1.686\\n\\\r\nX14.543 Y-2.447\\n\\\r\nX14.399 Y-3.202\\n\\\r\nX14.215 Y-3.948\\n\\\r\nX13.994 Y-4.684\\n\\\r\nX13.736 Y-5.408\\n\\\r\nX13.44 Y-6.117\\n\\\r\nX13.109 Y-6.811\\n\\\r\nX12.743 Y-7.487\\n\\\r\nX12.342 Y-8.143\\n\\\r\nX11.908 Y-8.777\\n\\\r\nX11.443 Y-9.389\\n\\\r\nX10.947 Y-9.976\\n\\\r\nX10.421 Y-10.536\\n\\\r\nX9.867 Y-11.069\\n\\\r\nX9.287 Y-11.573\\n\\\r\nX8.682 Y-12.047\\n\\\r\nX8.053 Y-12.489\\n\\\r\nX7.402 Y-12.898\\n\\\r\nX6.732 Y-13.273\\n\\\r\nX6.043 Y-13.614\\n\\\r\nX5.337 Y-13.918\\n\\\r\nX4.617 Y-14.187\\n\\\r\nX3.884 Y-14.418\\n\\\r\nX3.14 Y-14.611\\n\\\r\nX2.387 Y-14.765\\n\\\r\nX1.627 Y-14.881\\n\\\r\nX0.862 Y-14.958\\n\\\r\nX0.095 Y-14.996\\n\\\r\nX-0.674 Y-14.994\\n\\\r\nX-1.441 Y-14.953\\n\\\r\nX-2.206 Y-14.873\\n\\\r\nX-2.965 Y-14.753\\n\\\r\nX-3.717 Y-14.595\\n\\\r\nX-4.46 Y-14.399\\n\\\r\nX-5.192 Y-14.164\\n\\\r\nX-5.911 Y-13.893\\n\\\r\nX-6.615 Y-13.585\\n\\\r\nX-7.303 Y-13.241\\n\\\r\nX-7.972 Y-12.863\\n\\\r\nX-8.621 Y-12.451\\n\\\r\nX-9.247 Y-12.006\\n\\\r\nX-9.851 Y-11.53\\n\\\r\nX-10.429 Y-11.023\\n\\\r\nX-10.98 Y-10.488\\n\\\r\nX-11.503 Y-9.925\\n\\\r\nX-11.997 Y-9.335\\n\\\r\nX-12.459 Y-8.722\\n\\\r\nX-12.89 Y-8.085\\n\\\r\nX-13.288 Y-7.427\\n\\\r\nX-13.651 Y-6.75\\n\\\r\nX-13.979 Y-6.055\\n\\\r\nX-14.271 Y-5.344\\n\\\r\nX-14.527 Y-4.619\\n\\\r\nX-14.744 Y-3.882\\n\\\r\nX-9.915 Y-2.588\\n\\\r\nX4.744\\n\\\r\nY-0.5\\n\\\r\nX-2.256\\n\\\r\nY0.5\\n\\\r\nZ7.\\n\\\r\nG0 Z18.\"\r\n\r\n linesToArray()\r\n\r\n mod.lineCountDisplay.innerHTML = '0'\r\n\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n lineRequest: {\r\n type: 'number',\r\n label: 'line request',\r\n event: function(evt) {\r\n sendLine(evt.detail)\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n line: {\r\n type: 'string',\r\n label: 'line',\r\n event: function(str) {\r\n mods.output(mod, 'line', str)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n mod.lineCountDisplay = make_text_display(div, 'current line')\r\n mod.resetCurrentLine = make_button_input(div, 'reset lines')\r\n mod.resetCurrentLine.addEventListener('click', function(){\r\n mod.lineCountDisplay.innerHTML = '0'\r\n currentLine = 0\r\n })\r\n mod.textAreaIn = makeTextArea(div, 'lines', 24, 48)\r\n }\r\n\r\n var currentLine = 0\r\n var linesArray = []\r\n\r\n function linesToArray() {\r\n linesArray = mod.textAreaIn.value.split('\\n')\r\n }\r\n\r\n function sendLine() {\r\n var lineOut = linesArray[currentLine]\r\n currentLine++\r\n if (currentLine > linesArray.length) {\r\n currentLine = linesArray.length\r\n } else {\r\n outputs.line.event(lineOut)\r\n }\r\n\r\n mod.lineCountDisplay.innerHTML = currentLine.toString()\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function makeTextArea(div, name, width, height) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n div.appendChild(document.createElement('br'))\r\n var textArea = document.createElement('textarea')\r\n textArea.setAttribute('cols', width)\r\n textArea.setAttribute('rows', height)\r\n textArea.type = 'textarea'\r\n div.appendChild(textArea)\r\n\r\n return textArea\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"304.27423691233315","left":"984.5380112482853","inputs":{},"outputs":{}},"0.31107555742115744":{"definition":"//\r\n// generic line input\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'line input'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.line_in.value = 'G0 X10.1 Y150 z10.2 F175'\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n line: {\r\n type: 'string',\r\n label: 'line through',\r\n event: function(evt) {\r\n mod.line_in.value = evt.detail\r\n sendLine()\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n line: {\r\n type: 'string',\r\n label: 'line',\r\n event: function(str) {\r\n mods.output(mod, 'line', str)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n mod.title_text = make_text_display(div, 'hit enter to send')\r\n mod.line_in = make_text_input(div, 'line', 24)\r\n mod.line_in.addEventListener('keydown', function(evt){\r\n if(evt.keyCode == 13){\r\n sendLine()\r\n //mod.line_in.value = ''\r\n }\r\n })\r\n }\r\n\r\n function sendLine(){\r\n var str = mod.line_in.value\r\n outputs.line.event(str)\r\n }\r\n\r\n\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"115.97145601695965","left":"994.5143175208879","inputs":{},"outputs":{}},"0.5271933051707639":{"definition":"//\r\n// gets lines of gcode, turns into instructions for mods-machines\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n\r\n/*\r\nturns lines of text into objects for machine controller \r\n*/\r\n\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'gcode parser'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.g0SpeedIn.value = '100'\r\n mod.g1SpeedIn.value = '400'\r\n mod.codeMode.value = 'G0'\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n gcode: {\r\n type: 'string',\r\n label: 'gcode',\r\n event: function(evt) {\r\n parseGCode(evt.detail)\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n instruction: {\r\n type: 'object',\r\n label: 'instruction',\r\n event: function(obj) {\r\n mods.output(mod, 'instruction', obj)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n // we're going to convert all of these DPIs to MMs because we live in the real world now\r\n mod.g0SpeedIn = make_text_input(div, 'G0 speed, gcode units', 12)\r\n mod.g1SpeedIn = make_text_input(div, 'G1 speed, gcode units', 12)\r\n mod.codeMode = make_text_input(div, 'Modality', 12)\r\n }\r\n\r\n function parseGCode(str) {\r\n // get letter-value pairs\r\n var keyvals = getKeyValues(str)\r\n // do modality\r\n // check this for no-g moves?\r\n if (keyvals.G == 0 | keyvals.G == 1) {\r\n mod.codeMode.value = 'G' + keyvals.G.toString()\r\n } else if (keyvals.M != null) {\r\n mod.codeMode.value = 'M' + keyvals.M.toString()\r\n }\r\n // do parse and object \r\n if (mod.codeMode.value == 'G0' | mod.codeMode.value == 'G1') {\r\n\r\n var output = {\r\n type: 'move',\r\n position: {},\r\n speed: 0\r\n }\r\n // loop to find position vals, check for feed update\r\n for (key in keyvals) {\r\n if (key.match('[A-CX-Z]')) {\r\n output.position[key] = keyvals[key]\r\n } else if (key.match('[F]')){\r\n if(mod.codeMode.value == 'G0'){\r\n // assert minimum speed \r\n mod.g0SpeedIn.value = Math.max(10, keyvals.F)\r\n } else {\r\n mod.g1SpeedIn.value = Math.max(10, keyvals.F)\r\n }\r\n }\r\n }\r\n\r\n if(mod.codeMode.value == 'G0'){\r\n output.speed = parseFloat(mod.g0SpeedIn.value)\r\n } else {\r\n output.speed = parseFloat(mod.g1SpeedIn.value)\r\n }\r\n\r\n outputs.instruction.event(output)\r\n } else if (mod.codeMode.value == 'M3'){\r\n var output = {\r\n type: 'spindle',\r\n speed: 0\r\n }\r\n if(keyvals.S != null){\r\n output.speed = keyvals.S\r\n outputs.instruction.event(output)\r\n } else {\r\n console.log('need S parameter on spindle instruction')\r\n }\r\n } else if (mod.codeMode.value == 'M5'){\r\n var output = {\r\n type: 'spindle',\r\n speed: 0\r\n }\r\n output.instruction.event(output)\r\n } else {\r\n console.log('gcode instruction not recognized')\r\n }\r\n }\r\n\r\n function getKeyValues(str) {\r\n var kv = {}\r\n for (var i = 0; i < str.length; i++) {\r\n if (str[i].match('[A-Za-z]')) { // regex to match upper case letters\r\n var lastIndex = str.indexOf(' ', i)\r\n if (lastIndex < 0) {\r\n lastIndex = str.length\r\n }\r\n var key = str[i].toUpperCase()\r\n kv[key] = parseFloat(str.slice(i + 1, lastIndex))\r\n }\r\n }\r\n return kv\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"304.52465795425735","left":"1550.820740868751","inputs":{},"outputs":{}},"0.6924029844135942":{"definition":"//\r\n// converts toolpath objects into segments for accel planning\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n//\r\n// This work may be reproduced, modified, distributed, performed, and\r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is\r\n// provided as is; no warranty is provided, and users accept all\r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'stepper'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.stepper_axis_num_in.value = '0'\r\n mod.axis_num = 0\r\n mod.steps_per_mm_in.value = '80'\r\n mod.convert = 80\r\n mod.block = {\r\n accel: 50,\r\n cruise: 120,\r\n entry: 0,\r\n exit: 30,\r\n p1: [0, 0, 0],\r\n p2: [10, 10, 10]\r\n }\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n block: {\r\n type: 'objects',\r\n label: 'block',\r\n event: function(evt) {\r\n mod.block = JSON.parse(JSON.stringify(evt.detail)) // dereference pls\r\n shipIt()\r\n }\r\n },\r\n ack: {\r\n type: 'packet',\r\n label: 'headless packet',\r\n event: function(evt) {\r\n outputs.blockRequest.event()\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n blockRequest: {\r\n type: 'event',\r\n label: 'block request',\r\n event: function() {\r\n mods.output(mod, 'blockRequest', mod.axis_num)\r\n }\r\n },\r\n packet: {\r\n type: 'packet',\r\n label: 'headless packet',\r\n event: function() {\r\n //mods.output(mod, 'segments', null)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n // settings\r\n // the axis to pull out of the block - index of posistions on p1, p2\r\n mod.stepper_axis_num_in = make_text_input(div, 'axis index', 12)\r\n mod.stepper_axis_num_in.addEventListener('change', function() {\r\n mod.axis_num = parseInt(mod.stepper_axis_num_in.value)\r\n })\r\n // steps per mm\r\n mod.steps_per_mm_in = make_text_input(div, 'steps per mm', 12)\r\n mod.steps_per_mm_in.addEventListener('change', function() {\r\n mod.covert = parseFloat(mod.steps_per_mm_in.value)\r\n })\r\n //\r\n // request to do the business\r\n //\r\n mod.send_button = make_button_input(div, 'send')\r\n mod.send_button.addEventListener('click', function() {\r\n shipIt()\r\n })\r\n }\r\n\r\n function cartesianDistance(p1, p2) {\r\n // takes p1, p2 to be arrays of same length\r\n // computes cartesian distance\r\n var sum = 0\r\n for (var i = 0; i < p1.length; i++) {\r\n sum += Math.pow((p1[i] - p2[i]), 2)\r\n }\r\n return Math.sqrt(sum)\r\n }\r\n\r\n function cartesianLength(v) {\r\n // length of vector\r\n var sum = 0\r\n for (var i = 0; i < v.length; i++) {\r\n sum += Math.pow(v[i], 2)\r\n }\r\n return Math.sqrt(sum)\r\n }\r\n\r\n function addMatrix(a, b, c) {\r\n // c = a + b\r\n a.forEach(function(item, index) {\r\n c[index] = b[index] + a[index]\r\n })\r\n }\r\n\r\n function subtractMatrix(a, b, c) {\r\n // c = a - b\r\n b.forEach(function(item, index) {\r\n c[index] = a[index] - b[index]\r\n })\r\n }\r\n\r\n function multiplyMatrix(a, scalar, b) {\r\n // b = a * scalar\r\n a.forEach(function(item, index) {\r\n b[index] = a[index] * scalar\r\n })\r\n }\r\n\r\n function multiply2dMatrix(a, scalar, b) {\r\n // b = a * scalar\r\n for (var i = 0; i < a.length; i++) {\r\n for (var j = 0; j < a[i].length; j++) {\r\n b[i][j] = a[i][j] * scalar;\r\n }\r\n }\r\n }\r\n\r\n function divideMatrix(a, scalar, b) {\r\n // b = a / scalar\r\n for (var i = 0; i < a.length; i++) {\r\n b[i] = a[i] / scalar\r\n }\r\n }\r\n\r\n function unitVector(p1, p2) {\r\n // returns new array, is unit vector of p2-p1\r\n var unit = new Array()\r\n subtractMatrix(p2, p1, unit)\r\n var length = cartesianLength(unit)\r\n divideMatrix(unit, length, unit)\r\n\r\n return unit\r\n }\r\n\r\n function dotProduct(a, b) {\r\n // returns a dot b\r\n var sum = 0;\r\n for (var i = 0; i < a.length; i++) {\r\n sum += a[i] * b[i]\r\n }\r\n\r\n return sum\r\n }\r\n\r\n function toFixedMatrix(a, digits) {\r\n var rounded = new Array()\r\n for (var i = 0; i < a.length; i++) {\r\n rounded[i] = a[i].toFixed(digits)\r\n }\r\n\r\n return rounded\r\n }\r\n\r\n /*\r\n now:\r\n\r\n start from segment and find a corner\r\n do planner\r\n\r\n */\r\n\r\n //\r\n // local functions\r\n //\r\n function shipIt() {\r\n // sends integer values, I think we maintain positioning because we round before subtracting\r\n\r\n var trapezoid = calculateTrapezoid(mod.axis_num)\r\n if (trapezoid.length == 0) {\r\n console.log('zero length step block')\r\n var ok = 0\r\n var i = 0\r\n var waitTrap\r\n while (!ok && i < mod.block.p1.length) {\r\n waitTrap = calculateTrapezoid(i)\r\n if (waitTrap.delta != 0) {\r\n ok = 1\r\n } else {\r\n i++\r\n }\r\n }\r\n if (ok) {\r\n sendWait(waitTrap)\r\n } else {\r\n console.log('step zero packets: no axis of nonzero length found', JSON.parse(JSON.stringify(mod.block)))\r\n }\r\n } else {\r\n sendTrapezoid(trapezoid)\r\n }\r\n }\r\n\r\n function calculateTrapezoid(axis) {\r\n // packet (per stepper block)\r\n // steps, entry, accel, accelLength, deccelLength\r\n // first we fill this with all of the info we'll use to calculated\r\n // the trapezoid in planner-space units, then we convert to steps last\r\n var trap = {}\r\n\r\n // lengths and positions for the move\r\n trap.x1 = mod.block.p1[axis]\r\n trap.x2 = mod.block.p2[axis]\r\n trap.delta = trap.x2 - trap.x1\r\n trap.length = Math.abs(trap.delta)\r\n\r\n // rates for the move\r\n var unit = unitVector(mod.block.p1, mod.block.p2)\r\n var relativeRate = Math.abs(unit[axis])\r\n trap.entry = mod.block.entry * relativeRate\r\n trap.accel = mod.block.accel * relativeRate\r\n trap.cruise = mod.block.cruise * relativeRate\r\n trap.exit = mod.block.exit * relativeRate\r\n\r\n // now accelLength and deccelLength\r\n // using the maximum deltaV for the move,\r\n // we'll figure out what type of move we have\r\n var maxExit = Math.sqrt(trap.entry * trap.entry + 2 * trap.accel * trap.length)\r\n var maxEntry = Math.sqrt(trap.exit * trap.entry + 2 * trap.accel * trap.length)\r\n\r\n // there are 7 possible profiles\r\n if (trap.length <= 0) {\r\n // console.log('zero length trap')\r\n } else if (maxExit <= trap.exit) {\r\n // full ramp-up: have to push iiit to get there\r\n //console.log('full rampup')\r\n trap.ramptype = 'rampup'\r\n trap.accelLength = trap.length\r\n trap.deccelLength = trap.length + mod.convert // never decel\r\n // for the wait function\r\n trap.vAvg = (trap.entry + trap.exit) / 2\r\n } else if (maxEntry <= trap.entry) {\r\n // full ramp-down: have to deccel all the way with this rate\r\n //console.log('full rampdown')\r\n trap.ramptype = 'rampdown'\r\n trap.deccelLength = 0 // start immmeeeeediately\r\n trap.accelLength = 0 // never accel\r\n // for the wait\r\n trap.vAvg = (trap.entry + trap.exit) / 2\r\n } else if (trap.cruise == trap.entry && trap.cruise == trap.exit) {\r\n // str8 relaxin, no maxin\r\n //console.log('full cruise')\r\n trap.ramptype = 'cruise'\r\n trap.accelLength = 0 // never accel\r\n trap.deccelLength = trap.length + mod.convert // never decel\r\n // wait\r\n trap.vAvg = trap.cruise\r\n } else if (trap.cruise == trap.entry) {\r\n // cruise, then deccel\r\n //console.log('cruise then deccel')\r\n // for how long do we have to decel? we have to have deltaV for\r\n trap.ramptype = 'cruiseDeccel'\r\n var deccelDistance = (trap.cruise * trap.cruise - trap.exit * trap.exit) / (2 * trap.accel)\r\n trap.deccelLength = trap.length - deccelDistance\r\n trap.accelLength = 0; // never accel\r\n // we really want speed by multiple times, and total distance we know, for vAvg\r\n var tSum = (trap.cruise - trap.exit) / trap.accel + trap.deccelLength / trap.cruise\r\n trap.vAvg = trap.length / tSum\r\n } else if (trap.cruise == trap.exit) {\r\n // accel, cruise? unless entry also cruise?\r\n //console.log('accel then cruise')\r\n trap.ramptype = 'cruiseAccel'\r\n trap.accelLength = (trap.cruise * trap.cruise - trap.entry * trap.entry) / (2 * trap.accel)\r\n trap.deccelLength = trap.length + 1; // and never deccel\r\n // wait \r\n var tSum = (trap.cruise - trap.entry) / trap.accel + (trap.delta - trap.accellength) / trap.cruise\r\n trap.vAvg = trap.length / tSum\r\n } else {\r\n // it's either a full trap, or a triangle\r\n var accelDistance = (trap.cruise * trap.cruise - trap.entry * trap.entry) / (2 * trap.accel)\r\n var deccelDistance = (trap.cruise * trap.cruise - trap.exit * trap.exit) / (2 * trap.accel)\r\n if ((accelDistance + deccelDistance) < trap.length) {\r\n //console.log('full trap')\r\n trap.ramptype = 'fullTrap'\r\n trap.accelLength = accelDistance\r\n trap.deccelLength = trap.length - deccelDistance\r\n // wait \r\n var tSum = (trap.cruise - trap.entry) / trap.accel + (trap.deccelLength - trap.accellength) / trap.cruise + (trap.cruise - trap.exit) / trap.accel\r\n trap.vAvg = trap.length / tSum\r\n } else {\r\n //console.log('triangle')\r\n trap.ramptype = 'triangle'\r\n // find intersection point\r\n var vPeak = Math.sqrt((2 * trap.accel * trap.length + Math.pow(trap.entry, 2) + Math.pow(trap.exit, 2)) / 2)\r\n //console.log('entry, peak, exit', trap.entry, vPeak, trap.exit)\r\n var midPoint = (vPeak * vPeak - trap.entry * trap.entry) / (2 * trap.accel)\r\n trap.accelLength = midPoint\r\n trap.deccelLength = midPoint\r\n var tSum = (vPeak - trap.entry) / trap.accel + (vPeak - trap.exit) / trap.accel\r\n trap.vAvg = trap.length / tSum\r\n }\r\n }\r\n\r\n return trap\r\n }\r\n\r\n function sendTrapezoid(trap) {\r\n //console.log('trapezoid', trapezoid)\r\n var stepwiseTrap = trapezoidToStepwise(trap);\r\n\r\n var packet = new Array();\r\n // first, the packet header: the route, ptr and end_addr delimiter\r\n // #define APA_END_ROUTE_DELIMITER 255\r\n // #define APA_ROUTE_POINTER 254\r\n // #define DELIM_KEY_TRAPEZOID 131 // is 32 bit int\r\n // #define DELIM_KEY_WAIT 132\r\n packet.push(131)\r\n // now we pack these values into C-readable bytes\r\n // int32_t steps, uint32_t entryspeed, accel, accellength, decellength\r\n packet = packet.concat(pack32(stepwiseTrap.steps))\r\n packet = packet.concat(pack32(stepwiseTrap.entry))\r\n packet = packet.concat(pack32(stepwiseTrap.accel))\r\n packet = packet.concat(pack32(stepwiseTrap.accelLength))\r\n packet = packet.concat(pack32(stepwiseTrap.deccelLength))\r\n // log this if you wish\r\n //console.log('packet from stepper', packet)\r\n // send it along!\r\n mods.output(mod, 'packet', packet)\r\n }\r\n\r\n function sendWait(trap) {\r\n var stepWait = trapezoidToStepWait(trap);\r\n var packet = new Array();\r\n // #define DELIM_KEY_WAIT 132\r\n packet.push(132)\r\n // now we pack these values into C-readable bytes\r\n // int32_t steps, uint32_t entryspeed, accel, accellength, decellength\r\n packet = packet.concat(pack32(trap.delta))\r\n\r\n if(isNaN(stepWait.vAvg)){\r\n console.log('maths failure on vAvg', trap.ramptype)\r\n packet = packet.concat(pack32(1000))\r\n console.log('wait block', stepWait.steps, 1000)\r\n } else {\r\n packet = packet.concat(pack32(stepWait.vAvg))\r\n console.log('wait block', stepWait.steps, stepWait.vAvg)\r\n }\r\n // log this if you wish\r\n //console.log('packet from stepper', packet)\r\n // send it along!\r\n mods.output(mod, 'packet', packet)\r\n }\r\n\r\n function trapezoidToStepwise(trap) {\r\n var stepwise = {}\r\n // planner units -> steps\r\n stepwise.steps = Math.round(trap.delta * mod.convert)\r\n // planner units -> steps/min (for less integer error)\r\n stepwise.entry = Math.round(trap.entry * mod.convert)\r\n // planner units -> steps/min/s (a messed up unit, I know)\r\n stepwise.accel = Math.round(trap.accel * mod.convert)\r\n // planner units -> steps\r\n stepwise.accelLength = Math.round(trap.accelLength * mod.convert)\r\n stepwise.deccelLength = Math.round(trap.deccelLength * mod.convert)\r\n\r\n return stepwise\r\n }\r\n\r\n function trapezoidToStepWait(trap) {\r\n var stepWait = {}\r\n // planner units -> steps\r\n stepWait.steps = Math.round(trap.length * mod.convert)\r\n //\r\n stepWait.vAvg = Math.round(trap.vAvg * mod.convert)\r\n\r\n return stepWait\r\n }\r\n\r\n function pack32(val) {\r\n var pack = new Array();\r\n pack[0] = (val >> 24) & 255;\r\n pack[1] = (val >> 16) & 255;\r\n pack[2] = (val >> 8) & 255;\r\n pack[3] = val & 255;\r\n\r\n return pack;\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"1082.3552828775018","left":"1759.0585733233784","inputs":{},"outputs":{}},"0.11492993115246741":{"definition":"//\r\n// converts toolpath objects into segments for accel planning\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n//\r\n// This work may be reproduced, modified, distributed, performed, and\r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is\r\n// provided as is; no warranty is provided, and users accept all\r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'stepper'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.stepper_axis_num_in.value = '0'\r\n mod.axis_num = 0\r\n mod.steps_per_mm_in.value = '80'\r\n mod.convert = 80\r\n mod.block = {\r\n accel: 50,\r\n cruise: 120,\r\n entry: 0,\r\n exit: 30,\r\n p1: [0, 0, 0],\r\n p2: [10, 10, 10]\r\n }\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n block: {\r\n type: 'objects',\r\n label: 'block',\r\n event: function(evt) {\r\n mod.block = JSON.parse(JSON.stringify(evt.detail)) // dereference pls\r\n shipIt()\r\n }\r\n },\r\n ack: {\r\n type: 'packet',\r\n label: 'headless packet',\r\n event: function(evt) {\r\n outputs.blockRequest.event()\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n blockRequest: {\r\n type: 'event',\r\n label: 'block request',\r\n event: function() {\r\n mods.output(mod, 'blockRequest', mod.axis_num)\r\n }\r\n },\r\n packet: {\r\n type: 'packet',\r\n label: 'headless packet',\r\n event: function() {\r\n //mods.output(mod, 'segments', null)\r\n }\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n // settings\r\n // the axis to pull out of the block - index of posistions on p1, p2\r\n mod.stepper_axis_num_in = make_text_input(div, 'axis index', 12)\r\n mod.stepper_axis_num_in.addEventListener('change', function() {\r\n mod.axis_num = parseInt(mod.stepper_axis_num_in.value)\r\n })\r\n // steps per mm\r\n mod.steps_per_mm_in = make_text_input(div, 'steps per mm', 12)\r\n mod.steps_per_mm_in.addEventListener('change', function() {\r\n mod.covert = parseFloat(mod.steps_per_mm_in.value)\r\n })\r\n //\r\n // request to do the business\r\n //\r\n mod.send_button = make_button_input(div, 'send')\r\n mod.send_button.addEventListener('click', function() {\r\n shipIt()\r\n })\r\n }\r\n\r\n function cartesianDistance(p1, p2) {\r\n // takes p1, p2 to be arrays of same length\r\n // computes cartesian distance\r\n var sum = 0\r\n for (var i = 0; i < p1.length; i++) {\r\n sum += Math.pow((p1[i] - p2[i]), 2)\r\n }\r\n return Math.sqrt(sum)\r\n }\r\n\r\n function cartesianLength(v) {\r\n // length of vector\r\n var sum = 0\r\n for (var i = 0; i < v.length; i++) {\r\n sum += Math.pow(v[i], 2)\r\n }\r\n return Math.sqrt(sum)\r\n }\r\n\r\n function addMatrix(a, b, c) {\r\n // c = a + b\r\n a.forEach(function(item, index) {\r\n c[index] = b[index] + a[index]\r\n })\r\n }\r\n\r\n function subtractMatrix(a, b, c) {\r\n // c = a - b\r\n b.forEach(function(item, index) {\r\n c[index] = a[index] - b[index]\r\n })\r\n }\r\n\r\n function multiplyMatrix(a, scalar, b) {\r\n // b = a * scalar\r\n a.forEach(function(item, index) {\r\n b[index] = a[index] * scalar\r\n })\r\n }\r\n\r\n function multiply2dMatrix(a, scalar, b) {\r\n // b = a * scalar\r\n for (var i = 0; i < a.length; i++) {\r\n for (var j = 0; j < a[i].length; j++) {\r\n b[i][j] = a[i][j] * scalar;\r\n }\r\n }\r\n }\r\n\r\n function divideMatrix(a, scalar, b) {\r\n // b = a / scalar\r\n for (var i = 0; i < a.length; i++) {\r\n b[i] = a[i] / scalar\r\n }\r\n }\r\n\r\n function unitVector(p1, p2) {\r\n // returns new array, is unit vector of p2-p1\r\n var unit = new Array()\r\n subtractMatrix(p2, p1, unit)\r\n var length = cartesianLength(unit)\r\n divideMatrix(unit, length, unit)\r\n\r\n return unit\r\n }\r\n\r\n function dotProduct(a, b) {\r\n // returns a dot b\r\n var sum = 0;\r\n for (var i = 0; i < a.length; i++) {\r\n sum += a[i] * b[i]\r\n }\r\n\r\n return sum\r\n }\r\n\r\n function toFixedMatrix(a, digits) {\r\n var rounded = new Array()\r\n for (var i = 0; i < a.length; i++) {\r\n rounded[i] = a[i].toFixed(digits)\r\n }\r\n\r\n return rounded\r\n }\r\n\r\n /*\r\n now:\r\n\r\n start from segment and find a corner\r\n do planner\r\n\r\n */\r\n\r\n //\r\n // local functions\r\n //\r\n function shipIt() {\r\n // sends integer values, I think we maintain positioning because we round before subtracting\r\n\r\n var trapezoid = calculateTrapezoid(mod.axis_num)\r\n if (trapezoid.length == 0) {\r\n console.log('zero length step block')\r\n var ok = 0\r\n var i = 0\r\n var waitTrap\r\n while (!ok && i < mod.block.p1.length) {\r\n waitTrap = calculateTrapezoid(i)\r\n if (waitTrap.delta != 0) {\r\n ok = 1\r\n } else {\r\n i++\r\n }\r\n }\r\n if (ok) {\r\n sendWait(waitTrap)\r\n } else {\r\n console.log('step zero packets: no axis of nonzero length found', JSON.parse(JSON.stringify(mod.block)))\r\n }\r\n } else {\r\n sendTrapezoid(trapezoid)\r\n }\r\n }\r\n\r\n function calculateTrapezoid(axis) {\r\n // packet (per stepper block)\r\n // steps, entry, accel, accelLength, deccelLength\r\n // first we fill this with all of the info we'll use to calculated\r\n // the trapezoid in planner-space units, then we convert to steps last\r\n var trap = {}\r\n\r\n // lengths and positions for the move\r\n trap.x1 = mod.block.p1[axis]\r\n trap.x2 = mod.block.p2[axis]\r\n trap.delta = trap.x2 - trap.x1\r\n trap.length = Math.abs(trap.delta)\r\n\r\n // rates for the move\r\n var unit = unitVector(mod.block.p1, mod.block.p2)\r\n var relativeRate = Math.abs(unit[axis])\r\n trap.entry = mod.block.entry * relativeRate\r\n trap.accel = mod.block.accel * relativeRate\r\n trap.cruise = mod.block.cruise * relativeRate\r\n trap.exit = mod.block.exit * relativeRate\r\n\r\n // now accelLength and deccelLength\r\n // using the maximum deltaV for the move,\r\n // we'll figure out what type of move we have\r\n var maxExit = Math.sqrt(trap.entry * trap.entry + 2 * trap.accel * trap.length)\r\n var maxEntry = Math.sqrt(trap.exit * trap.entry + 2 * trap.accel * trap.length)\r\n\r\n // there are 7 possible profiles\r\n if (trap.length <= 0) {\r\n // console.log('zero length trap')\r\n } else if (maxExit <= trap.exit) {\r\n // full ramp-up: have to push iiit to get there\r\n //console.log('full rampup')\r\n trap.ramptype = 'rampup'\r\n trap.accelLength = trap.length\r\n trap.deccelLength = trap.length + mod.convert // never decel\r\n // for the wait function\r\n trap.vAvg = (trap.entry + trap.exit) / 2\r\n } else if (maxEntry <= trap.entry) {\r\n // full ramp-down: have to deccel all the way with this rate\r\n //console.log('full rampdown')\r\n trap.ramptype = 'rampdown'\r\n trap.deccelLength = 0 // start immmeeeeediately\r\n trap.accelLength = 0 // never accel\r\n // for the wait\r\n trap.vAvg = (trap.entry + trap.exit) / 2\r\n } else if (trap.cruise == trap.entry && trap.cruise == trap.exit) {\r\n // str8 relaxin, no maxin\r\n //console.log('full cruise')\r\n trap.ramptype = 'cruise'\r\n trap.accelLength = 0 // never accel\r\n trap.deccelLength = trap.length + mod.convert // never decel\r\n // wait\r\n trap.vAvg = trap.cruise\r\n } else if (trap.cruise == trap.entry) {\r\n // cruise, then deccel\r\n //console.log('cruise then deccel')\r\n // for how long do we have to decel? we have to have deltaV for\r\n trap.ramptype = 'cruiseDeccel'\r\n var deccelDistance = (trap.cruise * trap.cruise - trap.exit * trap.exit) / (2 * trap.accel)\r\n trap.deccelLength = trap.length - deccelDistance\r\n trap.accelLength = 0; // never accel\r\n // we really want speed by multiple times, and total distance we know, for vAvg\r\n var tSum = (trap.cruise - trap.exit) / trap.accel + trap.deccelLength / trap.cruise\r\n trap.vAvg = trap.length / tSum\r\n } else if (trap.cruise == trap.exit) {\r\n // accel, cruise? unless entry also cruise?\r\n //console.log('accel then cruise')\r\n trap.ramptype = 'cruiseAccel'\r\n trap.accelLength = (trap.cruise * trap.cruise - trap.entry * trap.entry) / (2 * trap.accel)\r\n trap.deccelLength = trap.length + 1; // and never deccel\r\n // wait \r\n var tSum = (trap.cruise - trap.entry) / trap.accel + (trap.delta - trap.accellength) / trap.cruise\r\n trap.vAvg = trap.length / tSum\r\n } else {\r\n // it's either a full trap, or a triangle\r\n var accelDistance = (trap.cruise * trap.cruise - trap.entry * trap.entry) / (2 * trap.accel)\r\n var deccelDistance = (trap.cruise * trap.cruise - trap.exit * trap.exit) / (2 * trap.accel)\r\n if ((accelDistance + deccelDistance) < trap.length) {\r\n //console.log('full trap')\r\n trap.ramptype = 'fullTrap'\r\n trap.accelLength = accelDistance\r\n trap.deccelLength = trap.length - deccelDistance\r\n // wait \r\n var tSum = (trap.cruise - trap.entry) / trap.accel + (trap.deccelLength - trap.accellength) / trap.cruise + (trap.cruise - trap.exit) / trap.accel\r\n trap.vAvg = trap.length / tSum\r\n } else {\r\n //console.log('triangle')\r\n trap.ramptype = 'triangle'\r\n // find intersection point\r\n var vPeak = Math.sqrt((2 * trap.accel * trap.length + Math.pow(trap.entry, 2) + Math.pow(trap.exit, 2)) / 2)\r\n //console.log('entry, peak, exit', trap.entry, vPeak, trap.exit)\r\n var midPoint = (vPeak * vPeak - trap.entry * trap.entry) / (2 * trap.accel)\r\n trap.accelLength = midPoint\r\n trap.deccelLength = midPoint\r\n var tSum = (vPeak - trap.entry) / trap.accel + (vPeak - trap.exit) / trap.accel\r\n trap.vAvg = trap.length / tSum\r\n }\r\n }\r\n\r\n return trap\r\n }\r\n\r\n function sendTrapezoid(trap) {\r\n //console.log('trapezoid', trapezoid)\r\n var stepwiseTrap = trapezoidToStepwise(trap);\r\n\r\n var packet = new Array();\r\n // first, the packet header: the route, ptr and end_addr delimiter\r\n // #define APA_END_ROUTE_DELIMITER 255\r\n // #define APA_ROUTE_POINTER 254\r\n // #define DELIM_KEY_TRAPEZOID 131 // is 32 bit int\r\n // #define DELIM_KEY_WAIT 132\r\n packet.push(131)\r\n // now we pack these values into C-readable bytes\r\n // int32_t steps, uint32_t entryspeed, accel, accellength, decellength\r\n packet = packet.concat(pack32(stepwiseTrap.steps))\r\n packet = packet.concat(pack32(stepwiseTrap.entry))\r\n packet = packet.concat(pack32(stepwiseTrap.accel))\r\n packet = packet.concat(pack32(stepwiseTrap.accelLength))\r\n packet = packet.concat(pack32(stepwiseTrap.deccelLength))\r\n // log this if you wish\r\n //console.log('packet from stepper', packet)\r\n // send it along!\r\n mods.output(mod, 'packet', packet)\r\n }\r\n\r\n function sendWait(trap) {\r\n var stepWait = trapezoidToStepWait(trap);\r\n var packet = new Array();\r\n // #define DELIM_KEY_WAIT 132\r\n packet.push(132)\r\n // now we pack these values into C-readable bytes\r\n // int32_t steps, uint32_t entryspeed, accel, accellength, decellength\r\n packet = packet.concat(pack32(trap.delta))\r\n\r\n if(isNaN(stepWait.vAvg)){\r\n console.log('maths failure on vAvg', trap.ramptype)\r\n packet = packet.concat(pack32(1000))\r\n console.log('wait block', stepWait.steps, 1000)\r\n } else {\r\n packet = packet.concat(pack32(stepWait.vAvg))\r\n console.log('wait block', stepWait.steps, stepWait.vAvg)\r\n }\r\n // log this if you wish\r\n //console.log('packet from stepper', packet)\r\n // send it along!\r\n mods.output(mod, 'packet', packet)\r\n }\r\n\r\n function trapezoidToStepwise(trap) {\r\n var stepwise = {}\r\n // planner units -> steps\r\n stepwise.steps = Math.round(trap.delta * mod.convert)\r\n // planner units -> steps/min (for less integer error)\r\n stepwise.entry = Math.round(trap.entry * mod.convert)\r\n // planner units -> steps/min/s (a messed up unit, I know)\r\n stepwise.accel = Math.round(trap.accel * mod.convert)\r\n // planner units -> steps\r\n stepwise.accelLength = Math.round(trap.accelLength * mod.convert)\r\n stepwise.deccelLength = Math.round(trap.deccelLength * mod.convert)\r\n\r\n return stepwise\r\n }\r\n\r\n function trapezoidToStepWait(trap) {\r\n var stepWait = {}\r\n // planner units -> steps\r\n stepWait.steps = Math.round(trap.length * mod.convert)\r\n //\r\n stepWait.vAvg = Math.round(trap.vAvg * mod.convert)\r\n\r\n return stepWait\r\n }\r\n\r\n function pack32(val) {\r\n var pack = new Array();\r\n pack[0] = (val >> 24) & 255;\r\n pack[1] = (val >> 16) & 255;\r\n pack[2] = (val >> 8) & 255;\r\n pack[3] = val & 255;\r\n\r\n return pack;\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"1333.4231471819282","left":"1757.406811058218","inputs":{},"outputs":{}},"0.331397605098536":{"definition":"//\r\n// converts toolpath objects into segments for accel planning\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n//\r\n// This work may be reproduced, modified, distributed, performed, and\r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is\r\n// provided as is; no warranty is provided, and users accept all\r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n //\r\n // module globals\r\n //\r\n var mod = {}\r\n //\r\n // name\r\n //\r\n var name = 'mkserial demuxer'\r\n //\r\n // initialization\r\n //\r\n var init = function() {\r\n mod.address.value = '127.0.0.1'\r\n mod.port.value = 6789\r\n mod.socket = null\r\n socket_open()\r\n }\r\n //\r\n // inputs\r\n //\r\n var inputs = {\r\n packetOne: {\r\n type: 'packet',\r\n label: '1 packet payload',\r\n event: function(evt) {\r\n var headlessPacket = JSON.parse(JSON.stringify(evt.detail))\r\n packetOutput(0, headlessPacket)\r\n }\r\n },\r\n packetTwo: {\r\n type: 'packet',\r\n label: '2 packet payload',\r\n event: function(evt) {\r\n var headlessPacket = JSON.parse(JSON.stringify(evt.detail))\r\n packetOutput(1, headlessPacket)\r\n }\r\n },\r\n packetThree: {\r\n type: 'packet',\r\n label: '3 packet payload',\r\n event: function(evt) {\r\n var headlessPacket = JSON.parse(JSON.stringify(evt.detail))\r\n packetOutput(2, headlessPacket)\r\n }\r\n },\r\n packetFour: {\r\n type: 'packet',\r\n label: '4 packet payload',\r\n event: function(evt) {\r\n var headlessPacket = JSON.parse(JSON.stringify(evt.detail))\r\n packetOutput(3, headlessPacket)\r\n }\r\n },\r\n packetFive: {\r\n type: 'packet',\r\n label: '5 packet payload',\r\n event: function(evt) {\r\n var headlessPacket = JSON.parse(JSON.stringify(evt.detail))\r\n packetOutput(4, headlessPacket)\r\n }\r\n }\r\n }\r\n //\r\n // outputs\r\n //\r\n var outputs = {\r\n packetOne: {\r\n type: 'packet',\r\n label: '1 packet payload',\r\n event: function(evt) {\r\n // fires elswhere with mods.output(mod, 'packetOne', data)\r\n }\r\n },\r\n packetTwo: {\r\n type: 'packet',\r\n label: '2 packet payload'\r\n },\r\n packetThree: {\r\n type: 'packet',\r\n label: '3 packet payload'\r\n },\r\n packetFour: {\r\n type: 'packet',\r\n label: '4 packet payload'\r\n },\r\n packetFive: {\r\n type: 'packet',\r\n label: '5 packet payload'\r\n }\r\n }\r\n //\r\n // interface\r\n //\r\n var interface = function(div) {\r\n mod.div = div\r\n //\r\n // inputs\r\n //\r\n mod.netpath_in = new Array() // of UI\r\n mod.netpath = new Array() // of paths\r\n // settings\r\n // the network paths to the thing\r\n for (var i = 0; i < 5; i++) {\r\n add_netpath(div)\r\n }\r\n\r\n div.appendChild(document.createElement('br'))\r\n\r\n var a = document.createElement('a')\r\n a.href = './js/serialserver.js'\r\n a.innerHTML = 'serialserver:'\r\n a.target = '_blank'\r\n div.appendChild(a)\r\n div.appendChild(document.createElement('br'))\r\n //\r\n // open/close\r\n //\r\n var btn = document.createElement('button')\r\n btn.style.margin = 1\r\n btn.appendChild(document.createTextNode('open'))\r\n btn.addEventListener('click', function() {\r\n socket_open()\r\n })\r\n div.appendChild(btn)\r\n var btn = document.createElement('button')\r\n btn.style.margin = 1\r\n btn.appendChild(document.createTextNode('close'))\r\n btn.addEventListener('click', function() {\r\n socket_close()\r\n })\r\n div.appendChild(btn)\r\n div.appendChild(document.createElement('br'))\r\n //\r\n // address\r\n //\r\n div.appendChild(document.createTextNode('address: '))\r\n input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = 10\r\n div.appendChild(input)\r\n mod.address = input\r\n div.appendChild(document.createElement('br'))\r\n //\r\n // port\r\n //\r\n div.appendChild(document.createTextNode('\\u00a0\\u00a0\\u00a0\\u00a0\\u00a0port: '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = 10\r\n div.appendChild(input)\r\n mod.port = input\r\n div.appendChild(document.createElement('br'))\r\n //\r\n // status\r\n //\r\n div.appendChild(document.createTextNode('\\u00a0\\u00a0status: '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = 10\r\n div.appendChild(input)\r\n mod.status = input\r\n div.appendChild(document.createElement('br'))\r\n //\r\n // serial\r\n //\r\n div.appendChild(document.createTextNode('serial device:'))\r\n div.appendChild(document.createElement('br'))\r\n //\r\n // open/close\r\n //\r\n var btn = document.createElement('button')\r\n btn.style.margin = 1\r\n btn.appendChild(document.createTextNode('open'))\r\n btn.addEventListener('click', function() {\r\n serial_open()\r\n })\r\n div.appendChild(btn)\r\n var btn = document.createElement('button')\r\n btn.style.margin = 1\r\n btn.appendChild(document.createTextNode('close'))\r\n btn.addEventListener('click', function() {\r\n serial_close()\r\n })\r\n div.appendChild(btn)\r\n div.appendChild(document.createElement('br'))\r\n }\r\n\r\n function add_netpath(div) {\r\n var numCurrentPaths = mod.netpath.length;\r\n mod.netpath_in[numCurrentPaths] = make_text_input(div, (numCurrentPaths + 1).toString() + ' network path', 12)\r\n mod.netpath_in[numCurrentPaths].addEventListener('change', function() {\r\n mod.netpath[numCurrentPaths] = mod.netpath_in[numCurrentPaths].value.split(',')\r\n if (mod.netpath[numCurrentPaths] == '') {\r\n mod.netpath[0] = []\r\n console.log('zero length address')\r\n } else {\r\n for (var i = 0; i < mod.netpath[numCurrentPaths].length; i++) {\r\n mod.netpath[numCurrentPaths][i] = parseInt(mod.netpath[numCurrentPaths][i])\r\n }\r\n console.log('new address', mod.netpath)\r\n }\r\n })\r\n mod.netpath_in[numCurrentPaths].value = '0,' + numCurrentPaths.toString()\r\n mod.netpath[numCurrentPaths] = [0, numCurrentPaths]\r\n }\r\n\r\n function packetOutput(index, headlessPacket) {\r\n // add ptr and delimiter (unshifting, so reverse order)\r\n headlessPacket.unshift(255) //end addr delimiter\r\n headlessPacket.unshift(254) //ptr\r\n // add path descending thru\r\n for (var i = mod.netpath[index].length - 1; i >= 0; i--) {\r\n headlessPacket.unshift(mod.netpath[index][i])\r\n }\r\n // add length\r\n headlessPacket.unshift(headlessPacket.length + 1)\r\n // log it\r\n // console.log('packet from demux', headlessPacket)\r\n // put it on the serial\r\n var wsMessage = {\r\n type: 'packet',\r\n packet: JSON.parse(JSON.stringify(headlessPacket))\r\n }\r\n socket_send(JSON.stringify(wsMessage))\r\n }\r\n\r\n function packetInput(packet) {\r\n // shift pointer\r\n shiftPacketPointer(packet)\r\n // find address in packet, address has been flipped\r\n // assuming this is a terminal packet, i.e. we are the recipient,\r\n // cut \r\n var returnPacketHeader = packet.slice(2, packet.indexOf(255))\r\n // and then flip the header\r\n var packetHeader = new Array()\r\n for (var i = 0; i < returnPacketHeader.length; i++) {\r\n packetHeader[i] = returnPacketHeader[returnPacketHeader.length - i - 1]\r\n }\r\n var indexMatch = null\r\n // match to addresses mod.netpath[i]\r\n for (var i = 0; i < mod.netpath.length; i++) {\r\n if (packetHeader.length === mod.netpath[i].length) {\r\n if (packetHeader.toString() === mod.netpath[i].toString()) {\r\n // just takes 1st match\r\n // actually, we are receiving ack'd packets, w/ reversed headers\r\n\r\n indexMatch = i\r\n }\r\n }\r\n }\r\n // is match?\r\n if (indexMatch != null) {\r\n // console.log('match on ', indexMatch)\r\n // dereference header\r\n var headlessPacket = packet.slice(packetHeader.length + 3, packet.length)\r\n // console.log('headless', headlessPacket)\r\n // send on port\r\n // big messy nasty no thank you\r\n switch (indexMatch) {\r\n case 0:\r\n mods.output(mod, 'packetOne', headlessPacket)\r\n break\r\n case 1:\r\n mods.output(mod, 'packetTwo', headlessPacket)\r\n break\r\n case 2:\r\n mods.output(mod, 'packetThree', headlessPacket)\r\n break\r\n case 3:\r\n mods.output(mod, 'packetFour', headlessPacket)\r\n break\r\n case 4:\r\n mods.output(mod, 'packetFive', headlessPacket)\r\n break\r\n }\r\n } else {\r\n console.log('no match on returned packet')\r\n }\r\n }\r\n\r\n function shiftPacketPointer(array) {\r\n // find end of packet header\r\n var end = 0\r\n var i = 0\r\n while (end == 0) {\r\n if (array[i] === 255) {\r\n end = i\r\n } else if (i >= array.length) {\r\n break\r\n }\r\n i++\r\n }\r\n // we'll assume we're the last drop, put the pointer at the head\r\n array[1] = 254\r\n // and then shift the address bytes forward\r\n for (var j = 2; j < end - 1; j++) {\r\n array[j] = array[j + 1]\r\n }\r\n array[end-1] = 0 // incoming port\r\n }\r\n\r\n var thisPacket = new Array() // we sometimes receive incomplete packets, have to track and parse\r\n //\r\n function socket_open() {\r\n var url = \"ws://\" + mod.address.value + ':' + mod.port.value\r\n mod.socket = new WebSocket(url)\r\n mod.socket.onopen = function(event) {\r\n mod.status.value = \"socket opened\"\r\n serial_open()\r\n }\r\n mod.socket.onerror = function(event) {\r\n mod.status.value = \"can not open\"\r\n mod.socket = null\r\n }\r\n mod.socket.onmessage = function(event) {\r\n var wsMessage = JSON.parse(event.data)\r\n if (wsMessage.type === 'message') {\r\n mod.status.value = wsMessage.message\r\n } else if (wsMessage.type === 'array') {\r\n // we are the 0th port, \r\n thisPacket = thisPacket.concat(wsMessage.array)\r\n\r\n if (thisPacket[0] <= 0) {\r\n thisPacket = []\r\n console.log('throwing packet with leading zero')\r\n }\r\n\r\n while (thisPacket.length >= thisPacket[0]) {\r\n if (thisPacket.length == thisPacket[0]) {\r\n //console.log('one packet', thisPacket)\r\n packetInput(JSON.parse(JSON.stringify(thisPacket)))\r\n thisPacket = []\r\n } else {\r\n var fullPacket = thisPacket.slice(0, thisPacket[0])\r\n packetInput(JSON.parse(JSON.stringify(fullPacket)))\r\n //console.log('second packet', fullPacket)\r\n thisPacket = thisPacket.slice(thisPacket[0])\r\n }\r\n }\r\n\r\n } else {\r\n mod.status.value = 'message not recognized'\r\n }\r\n }\r\n }\r\n\r\n function socket_close() {\r\n mod.socket.close()\r\n mod.status.value = \"socket closed\"\r\n mod.socket = null\r\n }\r\n\r\n function socket_send(msg) {\r\n if (mod.socket != null) {\r\n mod.status.value = \"send\"\r\n mod.socket.send(msg)\r\n } else {\r\n mod.status.value = \"can't send, not open\"\r\n }\r\n }\r\n\r\n function serial_open() {\r\n if (mod.socket == null) {\r\n mod.status.value = \"socket not open\"\r\n } else {\r\n var msg = {}\r\n msg.type = 'open'\r\n mod.socket.send(JSON.stringify(msg))\r\n }\r\n }\r\n\r\n function serial_close() {\r\n if (mod.socket == null) {\r\n mod.status.value = \"socket not open\"\r\n } else {\r\n var msg = {}\r\n msg.type = 'close'\r\n msg.device = mod.device.value\r\n mod.socket.send(JSON.stringify(msg))\r\n }\r\n }\r\n\r\n function serial_send(wsMessage) {\r\n if (mod.socket == null) {\r\n mod.status.value = \"socket not open\"\r\n } else {\r\n mod.socket.send(JSON.stringify(wsMessage))\r\n mod.status.value = 'transmit'\r\n }\r\n }\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n\r\n //\r\n // return values\r\n //\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"1596.0533473424794","left":"1719.4162789595216","inputs":{},"outputs":{}},"0.6016248093108645":{"definition":"//\r\n// event sniffer\r\n//\r\n// Neil Gershenfeld and Jake Read\r\n// (c) Massachusetts Institute of Technology 2018\r\n// \r\n// This work may be reproduced, modified, distributed, performed, and \r\n// displayed for any purpose, but must acknowledge the mods\r\n// project. Copyright is retained and must be preserved. The work is \r\n// provided as is; no warranty is provided, and users accept all \r\n// liability.\r\n//\r\n// closure\r\n//\r\n(function() {\r\n // globals\r\n var mod = {}\r\n\r\n // name\r\n var name = 'event logger'\r\n\r\n var init = function() {\r\n mod.identifier.value = 'logger'\r\n }\r\n\r\n var inputs = {\r\n event: {\r\n type: 'any',\r\n event: function(evt) {\r\n console.log(mod.identifier.value, ': ', JSON.parse(JSON.stringify(evt.detail)))\r\n }\r\n }\r\n }\r\n\r\n var outputs = {}\r\n\r\n var interface = function(div) {\r\n mod.div = div\r\n\r\n mod.identifier = make_text_input(div, 'identifier', 8)\r\n }\r\n\r\n\r\n /*\r\n UI helpers\r\n */\r\n function make_text_input(div, name, size) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(name + ': '))\r\n var input = document.createElement('input')\r\n input.type = 'text'\r\n input.size = size\r\n div.appendChild(input)\r\n\r\n return input\r\n }\r\n\r\n function make_button_input(div, text) {\r\n div.appendChild(document.createElement('br'))\r\n var button = document.createElement('button')\r\n button.style.padding = mods.ui.padding\r\n button.style.margin = 1\r\n button.appendChild(document.createTextNode(text))\r\n div.appendChild(button)\r\n\r\n return button\r\n }\r\n\r\n function make_checkbox_input(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var checkbox = document.createElement('input')\r\n checkbox.type = 'checkbox'\r\n div.appendChild(checkbox)\r\n\r\n return checkbox\r\n }\r\n\r\n function make_text_display(div, prefix) {\r\n div.appendChild(document.createElement('br'))\r\n div.appendChild(document.createTextNode(prefix + ': '))\r\n var span = document.createElement('span')\r\n span.innerHTML = ''\r\n div.appendChild(span)\r\n\r\n return span\r\n }\r\n\r\n return ({\r\n mod: mod,\r\n name: name,\r\n init: init,\r\n inputs: inputs,\r\n outputs: outputs,\r\n interface: interface\r\n })\r\n}())","top":"865.5396810261734","left":"2244.9076601928673","inputs":{},"outputs":{}},"0.6668125390793329":{"definition":"//\n// gets lines of gcode, turns into instructions for mods-machines\n//\n// Neil Gershenfeld and Jake Read\n// (c) Massachusetts Institute of Technology 2018\n// \n// This work may be reproduced, modified, distributed, performed, and \n// displayed for any purpose, but must acknowledge the mods\n// project. Copyright is retained and must be preserved. The work is \n// provided as is; no warranty is provided, and users accept all \n// liability.\n\n/*\nstart / stop machine on given path, \nmanually turn spindle on / off etc\ndishes gcodes -> planner, spindle codes -> spindle \n*/\n\n//\n// closure\n//\n(function() {\n //\n // module globals\n //\n var mod = {}\n //\n // name\n //\n var name = 'machine controller'\n //\n // initialization\n //\n var init = function() {\n mod.jogStepSizeIn.value = '10'\n mod.jogSpeedIn.value = '100'\n }\n //\n // inputs\n //\n var inputs = {\n lineComplete: {\n type: 'event',\n label: 'line complete',\n event: function(evt) {\n onLineComplete()\n }\n }\n }\n //\n // outputs\n //\n var outputs = {\n singleInstruction: {\n type: 'object',\n label: 'instruction',\n event: function(obj) {\n mods.output(mod, 'singleInstruction', obj)\n }\n },\n lineAdvance: {\n type: 'event',\n label: 'line advance',\n event: function() {\n mods.output(mod, 'lineAdvance', true)\n }\n },\n sequenceControl: {\n type: 'integer',\n label: 'sequence control',\n event: function(int){\n mods.output(mod, 'sequenceControl', int)\n }\n }\n }\n //\n // interface\n //\n var interface = function(div) {\n mod.div = div\n //\n // inputs\n //\n\n // control buttons\n\n mod.jogStepSizeIn = make_text_input(div, 'jog increment size', 24)\n mod.jogSpeedIn = make_text_input(div, 'jog speed', 24)\n\n mod.jogXPButton = make_button_input(div, 'x+')\n mod.jogXPButton.addEventListener('click', function(evt) {\n jog('X', parseFloat(mod.jogStepSizeIn.value))\n })\n\n mod.jogXMButton = make_button_input(div, 'x-')\n mod.jogXMButton.addEventListener('click', function(evt) {\n jog('X', -parseFloat(mod.jogStepSizeIn.value))\n })\n\n mod.jogYPButton = make_button_input(div, 'y+')\n mod.jogYPButton.addEventListener('click', function(evt) {\n jog('Y', parseFloat(mod.jogStepSizeIn.value))\n })\n\n mod.jogYMButton = make_button_input(div, 'y-')\n mod.jogYMButton.addEventListener('click', function(evt) {\n jog('Y', -parseFloat(mod.jogStepSizeIn.value))\n })\n\n // sequence begin, stop \n\n mod.startSequenceButton = make_button_input(div, 'start sequence')\n mod.startSequenceButton.addEventListener('click', function(evt) {\n startSequence(32)\n })\n\n mod.pauseSequenceButton = make_button_input(div, 'pause sequence')\n mod.pauseSequenceButton.addEventListener('click', function(evt){\n pauseSequence()\n })\n }\n\n mod.isPaused = true\n\n function startSequence(windowsize) {\n outputs.sequenceControl.event(0)\n for(var i = 0; i < windowsize; i ++){\n outputs.lineAdvance.event()\n }\n mod.isPaused = false\n outputs.sequenceControl.event(1)\n }\n\n function pauseSequence(){\n outputs.sequenceControl.event(0)\n mod.isPaused = true\n }\n\n function onLineComplete() {\n if(mod.isPaused){\n //\n } else {\n outputs.lineAdvance.event()\n }\n }\n\n function jog(key, val) {\n var instruction = {}\n instruction.position = {}\n instruction.position[key] = val\n instruction.speed = mod.jogSpeedIn.value\n instruction.type = 'move'\n\n outputs.singleInstruction.event(instruction)\n outputs.sequenceControl.event(1)\n }\n\n\n /*\n UI helpers\n */\n function make_text_input(div, name, size) {\n div.appendChild(document.createElement('br'))\n div.appendChild(document.createTextNode(name + ': '))\n var input = document.createElement('input')\n input.type = 'text'\n input.size = size\n div.appendChild(input)\n\n return input\n }\n\n function make_button_input(div, text) {\n div.appendChild(document.createElement('br'))\n var button = document.createElement('button')\n button.style.padding = mods.ui.padding\n button.style.margin = 1\n button.appendChild(document.createTextNode(text))\n div.appendChild(button)\n\n return button\n }\n\n function make_checkbox_input(div, prefix) {\n div.appendChild(document.createElement('br'))\n div.appendChild(document.createTextNode(prefix + ': '))\n var checkbox = document.createElement('input')\n checkbox.type = 'checkbox'\n div.appendChild(checkbox)\n\n return checkbox\n }\n\n function make_text_display(div, prefix) {\n div.appendChild(document.createElement('br'))\n div.appendChild(document.createTextNode(prefix + ': '))\n var span = document.createElement('span')\n span.innerHTML = ''\n div.appendChild(span)\n\n return span\n }\n\n\n //\n // return values\n //\n return ({\n mod: mod,\n name: name,\n init: init,\n inputs: inputs,\n outputs: outputs,\n interface: interface\n })\n}())","top":"455.7083845941558","left":"286.91110079682414","inputs":{},"outputs":{}},"0.07962660707881353":{"definition":"//\n// converts toolpath objects into segments for accel planning\n//\n// Neil Gershenfeld and Jake Read\n// (c) Massachusetts Institute of Technology 2018\n//\n// This work may be reproduced, modified, distributed, performed, and\n// displayed for any purpose, but must acknowledge the mods\n// project. Copyright is retained and must be preserved. The work is\n// provided as is; no warranty is provided, and users accept all\n// liability.\n\n\n/*\neats objects like\nvar move = {\n position: {\n X: float\n Y: float\n Z: float\n A: float\n }\n rate: float\n}\n\noutputs:\nmotors\n'planner block consumed' event\n\n\n*/\n\n//\n// closure\n//\n(function() {\n //\n // module globals\n //\n var mod = {}\n //\n // name\n //\n var name = 'motion planner'\n //\n // initialization\n //\n var init = function() {\n mod.accelIn.value = '50'\n mod.junctionDeviationIn.value = '0.5'\n mod.minSpeedIn.value = '1'\n\n mod.axisIdentifiers.value = 'X,Y,Z'\n axisIds = mod.axisIdentifiers.value.split(',')\n for (var i = 0; i < axisIds.length; i++) {\n currentPosition[i] = 0\n }\n\n mod.netWindowIn.value = '5'\n packetWindowSize = parseInt(mod.netWindowIn.value)\n\n var num = 0\n mod.queueLengthDisplay.innerHTML = num.toString()\n\n mod.netQueueDisplay.innerHTML = num.toString()\n }\n //\n // inputs\n //\n var inputs = {\n newMove: {\n type: 'object',\n label: 'move instruction',\n event: function(evt) {\n addToQueue(JSON.parse(JSON.stringify(evt.detail)))\n }\n },\n acknowledgement: {\n type: 'event',\n label: 'acknowledgement',\n event: function(evt) {\n // have to ID moves because some are zero length ?\n acknowledgement(evt.detail)\n }\n },\n sequenceControl: {\n type: 'integer',\n label: 'sequence control',\n event: function(evt) {\n if (evt.detail == 1) {\n checkNetwork()\n }\n }\n }\n }\n //\n // outputs\n //\n var outputs = {\n plannedMove: {\n type: 'object',\n label: 'move instruction',\n event: function(block) {\n var deref = JSON.parse(JSON.stringify(block))\n mods.output(mod, 'plannedMove', deref)\n }\n },\n moveComplete: {\n type: 'event',\n label: 'move complete',\n event: function(evt) {\n mods.output(mod, 'moveComplete', 1)\n }\n }\n }\n //\n // interface\n //\n var interface = function(div) {\n mod.div = div\n //\n // inputs\n //\n // settings\n make_text_display(div, 'machine config')\n mod.axisIdentifiers = make_text_input(div, 'axis identifiers', 12)\n mod.axisIdentifiers.addEventListener('change', function() {\n axisIds = mod.axisIdentifiers.value.split(',')\n })\n div.appendChild(document.createElement('br'))\n\n make_text_display(div, 'planner settings')\n mod.accelIn = make_text_input(div, 'acceleration, units/s/s', 12)\n mod.junctionDeviationIn = make_text_input(div, 'junction deviation, units', 12)\n mod.minSpeedIn = make_text_input(div, 'minimum junction speed, units/s/s', 12)\n div.appendChild(document.createElement('br'))\n\n make_text_display(div, 'queuing settings')\n mod.queueLengthDisplay = make_text_display(div, 'instructions in queue')\n mod.resetQueueButton = make_button_input(div, 'reset queue')\n mod.resetQueueButton.addEventListener('click', function(){\n resetQueue()\n })\n div.appendChild(document.createElement('br'))\n\n mod.netWindowIn = make_text_input(div, 'network window size', 12)\n mod.netWindowIn.addEventListener('change', function() {\n packetWindowSize = parseInt(mod.netWindowIn.value)\n })\n mod.netQueueDisplay = make_text_display(div, 'instructions on network')\n mod.resetNetButton = make_button_input(div, 'reset network')\n mod.resetNetButton.addEventListener('click', function() {\n resetNetwork()\n })\n }\n\n // ---------------------------------------------------- THE BUSINESS\n\n // network state\n var packetsInNetwork = 0\n var packetWindowSize = 0\n var axiscounter = 0\n\n function acknowledgement(obj) {\n // todo: add position input? where do we do steps -> float? dynamic would be cool ... or just a real position count\n axiscounter++\n if (axiscounter >= 2) { //} axisIds.length){\n packetsInNetwork--\n mod.netQueueDisplay.innerHTML = packetsInNetwork.toString()\n checkNetwork()\n outputs.moveComplete.event()\n axiscounter = 0\n }\n }\n\n function resetNetwork() {\n packetsInNetwork = 0\n mod.netQueueDisplay.innerHTML = packetsInNetwork.toString()\n }\n\n function checkNetwork() {\n // see windowed state and push more data out if need be\n while (packetWindowSize > packetsInNetwork && moveQue.length != 0) {\n sendMove()\n }\n }\n\n function sendMove() {\n outputs.plannedMove.event(moveQue.shift())\n mod.queueLengthDisplay.innerHTML = moveQue.length.toString()\n packetsInNetwork++\n mod.netQueueDisplay.innerHTML = packetsInNetwork.toString()\n }\n\n\n // planner state and moves\n var axisIds = []\n var moveQue = [] // array of moves \n var currentPosition = []\n\n /*\n var segment = {\n p1: p1,\n p2: p2,\n cruise: cruise,\n entry: entry,\n exit: exit,\n }\n */\n\n function resetQueue(){\n moveQue.length = 0 // apparently this works\n mod.queueLengthDisplay.innerHTML = moveQue.length.toString()\n }\n\n function addToQueue(obj) {\n // add to the move queue \n var p1 = []\n var p2 = []\n if (moveQue.length == 0) {\n p1 = currentPosition\n } else {\n p1 = moveQue[moveQue.length - 1].p2\n }\n\n // find all letter-based and match to std array \n var keyset = new Array(axisIds.length)\n keyset.fill(0)\n\n for (key in obj.position) {\n for (axisId in axisIds) {\n if (key == axisIds[axisId]) {\n p2[axisId] = obj.position[key]\n keyset[axisId] = 1\n } else if (keyset[axisId] != 1) {\n p2[axisId] = p1[axisId]\n } else {\n // nothing\n }\n }\n }\n\n if (cartesianDistance(p1, p2) == 0) {\n console.log('planner throwing zero length vector')\n } else {\n var cruise = obj.speed\n\n var newMove = {\n p1: p1,\n p2: p2,\n cruise: cruise,\n entry: 0,\n exit: 0\n }\n\n // append the move to the queue \n moveQue.push(newMove)\n mod.queueLengthDisplay.innerHTML = moveQue.length.toString()\n\n // and then check to see if we are ready to pass anything to the motors\n runQue()\n }\n }\n\n //\n // local functions\n //\n function runQue() {\n // converting from mm/s or dpi (pixel units) to mm based units\n // https://github.com/grbl/grbl/blob/master/grbl/planner.c\n // https://onehossshay.wordpress.com/2011/09/24/improving_grbl_cornering_algorithm/\n /*\n first we walk the queue:\n going backwards, end at 0 speed exit\n - find junction speed (junction deviation) between this and previous block\n - this is entry speed, calculate trapezoid to exit speed\n next block\n - exit speed is recently calculated entry speed\n - do junction deviation, this is entry speed\n - calculate trapezoid\n .. why is this simpler? find entry and exit speed of each block,\n find accel limits per axis, do trapezoid with that accel\n */\n\n var jdsize = parseFloat(mod.junctionDeviationIn.value)\n var accel = parseFloat(mod.accelIn.value)\n // not actually using this at the moment!\n var jdmin = parseFloat(mod.minSpeedIn.value)\n\n moveQue[moveQue.length - 1].exit = 0 // trailing edge always full stop\n\n for (var i = moveQue.length - 1; i > 0; i--) {\n // reverse pass\n // find junction deviation\n /*\n - really, could only do this once per segment when a new one is added\n - unitize entry and exit vectors\n - find cos(theta) = Ventry dot Vexit / (|Ventry| * |Vexit|) -> this is (1*1 bc unit)\n - find sin(theta/2) = sqrt((1-cos(theta))/2)\n - find r = j(sin(theta/2)/(1-sin(theta/2)))\n - find Fj = sqrt(Ac*r)\n - junction speed is min(Fj, min(entry,exit))\n */\n\n var v_entry = unitVector(moveQue[i - 1].p1, moveQue[i - 1].p2)\n var v_exit = unitVector(moveQue[i].p1, moveQue[i].p2)\n //console.log('unit entry, unit exit', toFixedMatrix(v_entry, 3), toFixedMatrix(v_exit, 3))\n var cos_theta = dotProduct(v_entry, v_exit) // dot product / mag * mag where mags are 1 each bc unit\n // catch corner cases (get it? - actually they are very straight cases, or very turnaround cases)\n if (cos_theta < -0.9999999999999) {\n cos_theta = -0.9999999999999\n } else if (cos_theta > 0.9999999999999) {\n cos_theta = 0.9999999999999\n }\n //console.log('cos_theta', cos_theta, Math.acos(cos_theta) * (180 / Math.PI))\n var sin_theta_overtwo = Math.sqrt((1 - cos_theta) / 2)\n //console.log('sin_theta_overtwo', sin_theta_overtwo)\n var radius = jdsize * ((1 - sin_theta_overtwo) / sin_theta_overtwo)\n //console.log('radius', radius)\n // feed at the junction, according to supposed acceleration through the junction\n var fj = Math.sqrt(accel * radius)\n //console.log('fj', fj)\n\n // but don't go through the junction faster than we're cruising\n var feed_junction = Math.min(fj, moveQue[i].cruise, moveQue[i - 1].cruise)\n //console.log('feed_junction', feed_junction)\n\n // ok we have the maximum feed at the preceeding junction\n // now: find the maximum entry speeds as if we spent the whole block decelerating\n\n // size of segment\n var distance = cartesianDistance(moveQue[i].p1, moveQue[i].p2)\n //console.log('distance', distance)\n var max_entry_speed = Math.sqrt(moveQue[i].exit * moveQue[i].exit + 2 * distance * accel)\n //console.log('max_entry_speed', max_entry_speed)\n var entry_speed = Math.min(max_entry_speed, feed_junction)\n //console.log('entry_speed', entry_speed)\n moveQue[i].entry = entry_speed\n moveQue[i - 1].exit = entry_speed\n //console.log('segment:', moveQue[i])\n moveQue[i].accel = accel\n moveQue[i].distance = distance\n }\n\n // bad bad not very good implementation to start:\n //moveQue[0].entry = 0\n moveQue[0].accel = accel\n moveQue[0].distance = cartesianDistance(moveQue[0].p1, moveQue[0].p2)\n\n // forward pass to make sure we can accelerate to set exit speed in length\n for (var i = 0; i < moveQue.length - 1; i++) {\n var distance = moveQue[i].distance\n var max_exit_speed = Math.sqrt(moveQue[i].entry * moveQue[i].entry + 2 * distance * accel)\n\n if (max_exit_speed < moveQue[i + 1].entry_speed) {\n moveQue[i + 1].entry = max_exit_speed\n moveQue[i].exit = max_exit_speed\n }\n }\n }\n\n // ---------------------------------------------------- UTILITIES\n\n function cartesianDistance(p1, p2) {\n // takes p1, p2 to be arrays of same length\n // computes cartesian distance\n var sum = 0\n for (var i = 0; i < p1.length; i++) {\n sum += Math.pow((p1[i] - p2[i]), 2)\n }\n return Math.sqrt(sum)\n }\n\n function cartesianLength(v) {\n // length of vector\n var sum = 0\n for (var i = 0; i < v.length; i++) {\n sum += Math.pow(v[i], 2)\n }\n return Math.sqrt(sum)\n }\n\n function addMatrix(a, b, c) {\n // c = a + b\n a.forEach(function(item, index) {\n c[index] = b[index] + a[index]\n })\n }\n\n function subtractMatrix(a, b, c) {\n // c = a - b\n b.forEach(function(item, index) {\n c[index] = a[index] - b[index]\n })\n }\n\n function multiplyMatrix(a, scalar, b) {\n // b = a * scalar\n a.forEach(function(item, index) {\n b[index] = a[index] * scalar\n })\n }\n\n function multiply2dMatrix(a, scalar, b) {\n // b = a * scalar\n for (var i = 0; i < a.length; i++) {\n for (var j = 0; j < a[i].length; j++) {\n b[i][j] = a[i][j] * scalar;\n }\n }\n }\n\n function divideMatrix(a, scalar, b) {\n // b = a / scalar\n for (var i = 0; i < a.length; i++) {\n b[i] = a[i] / scalar\n }\n }\n\n function unitVector(p1, p2) {\n // returns new array, is unit vector of p2-p1\n var unit = new Array()\n subtractMatrix(p2, p1, unit)\n var length = cartesianLength(unit)\n divideMatrix(unit, length, unit)\n\n return unit\n }\n\n function dotProduct(a, b) {\n // returns a dot b\n var sum = 0;\n for (var i = 0; i < a.length; i++) {\n sum += a[i] * b[i]\n }\n\n return sum\n }\n\n function toFixedMatrix(a, digits) {\n var rounded = new Array()\n for (var i = 0; i < a.length; i++) {\n rounded[i] = a[i].toFixed(digits)\n }\n\n return rounded\n }\n\n // ---------------------------------------------------- UI HELP\n\n function make_text_input(div, name, size) {\n div.appendChild(document.createElement('br'))\n div.appendChild(document.createTextNode(name + ': '))\n var input = document.createElement('input')\n input.type = 'text'\n input.size = size\n div.appendChild(input)\n\n return input\n }\n\n function make_button_input(div, text) {\n div.appendChild(document.createElement('br'))\n var button = document.createElement('button')\n button.style.padding = mods.ui.padding\n button.style.margin = 1\n button.appendChild(document.createTextNode(text))\n div.appendChild(button)\n\n return button\n }\n\n function make_checkbox_input(div, prefix) {\n div.appendChild(document.createElement('br'))\n div.appendChild(document.createTextNode(prefix + ': '))\n var checkbox = document.createElement('input')\n checkbox.type = 'checkbox'\n div.appendChild(checkbox)\n\n return checkbox\n }\n\n function make_text_display(div, prefix) {\n div.appendChild(document.createElement('br'))\n div.appendChild(document.createTextNode(prefix + ': '))\n var span = document.createElement('span')\n span.innerHTML = ''\n div.appendChild(span)\n\n return span\n }\n\n //\n // return values\n //\n return ({\n mod: mod,\n name: name,\n init: init,\n inputs: inputs,\n outputs: outputs,\n interface: interface\n })\n}())","top":"563.8030003703996","left":"1749.1790560160864","inputs":{},"outputs":{}}},"links":["{\"source\":\"{\\\"id\\\":\\\"0.9618637896479963\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"line\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.5271933051707639\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"gcode\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.31107555742115744\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"line\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.5271933051707639\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"gcode\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.6924029844135942\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"packet\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.331397605098536\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"packetOne\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.11492993115246741\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"packet\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.331397605098536\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"packetTwo\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.331397605098536\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"packetOne\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.6924029844135942\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"ack\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.331397605098536\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"packetTwo\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.11492993115246741\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"ack\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.6668125390793329\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"lineAdvance\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.9618637896479963\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"lineRequest\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.5271933051707639\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"instruction\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"newMove\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.6668125390793329\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"singleInstruction\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"newMove\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.6924029844135942\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"blockRequest\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"acknowledgement\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.11492993115246741\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"blockRequest\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"acknowledgement\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.6668125390793329\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"sequenceControl\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"sequenceControl\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"plannedMove\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.6924029844135942\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"block\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"plannedMove\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.11492993115246741\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"block\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"moveComplete\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.6668125390793329\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"lineComplete\\\"}\"}","{\"source\":\"{\\\"id\\\":\\\"0.07962660707881353\\\",\\\"type\\\":\\\"outputs\\\",\\\"name\\\":\\\"plannedMove\\\"}\",\"dest\":\"{\\\"id\\\":\\\"0.6016248093108645\\\",\\\"type\\\":\\\"inputs\\\",\\\"name\\\":\\\"event\\\"}\"}"]} \ No newline at end of file